[r-cran-vgam] 23/63: Import Upstream version 0.8-3

Andreas Tille tille at debian.org
Tue Jan 24 13:54:27 UTC 2017


This is an automated email from the git hooks/post-receive script.

tille pushed a commit to branch master
in repository r-cran-vgam.

commit e4439a6b213d43b36a25cbc61e0a72f07c5a36c7
Author: Andreas Tille <tille at debian.org>
Date:   Tue Jan 24 14:16:52 2017 +0100

    Import Upstream version 0.8-3
---
 DESCRIPTION                        |   10 +-
 NAMESPACE                          |   28 +-
 NEWS                               |  343 +++--
 R/aamethods.q                      |  100 +-
 R/cao.R                            |    2 +-
 R/cao.fit.q                        |   10 +-
 R/cqo.R                            |    2 +-
 R/cqo.fit.q                        |    4 +-
 R/family.aunivariate.R             |   68 +-
 R/family.binomial.R                |  445 +++---
 R/family.bivariate.R               | 1314 +++++++++-------
 R/family.categorical.R             |   91 +-
 R/family.censored.R                |  592 +++-----
 R/family.circular.R                |   22 +-
 R/family.exp.R                     |   22 +-
 R/family.extremes.R                | 1380 ++++++++++-------
 R/family.functions.R               |    5 +-
 R/family.genetic.R                 |   44 +-
 R/family.glmgam.R                  |  334 +++-
 R/family.loglin.R                  |   24 +-
 R/family.mixture.R                 |   34 +-
 R/family.nonlinear.R               |   62 +-
 R/family.normal.R                  | 1052 +++++++++----
 R/family.others.R                  | 1946 ++++++++++++++++++++++++
 R/family.positive.R                |  828 +++++++---
 R/family.qreg.R                    |  248 ++-
 R/family.rcam.R                    | 1095 +++-----------
 R/family.robust.R                  |   26 +-
 R/family.survival.R                |  265 ++--
 R/family.univariate.R              | 2645 +++++++++++++++++---------------
 R/family.zeroinf.R                 |  638 ++++----
 R/links.q                          |  418 +++---
 R/model.matrix.vglm.q              |    2 +
 R/plot.vglm.q                      |  216 +--
 R/qrrvglm.control.q                |    8 +-
 R/qtplot.q                         |  363 ++---
 R/rrvglm.R                         |    2 +-
 R/rrvglm.fit.q                     |   64 +-
 R/summary.vlm.q                    |   16 +-
 R/uqo.R                            |    4 +-
 R/vgam.R                           |    2 +-
 R/vgam.control.q                   |   80 +-
 R/vgam.fit.q                       |   32 +-
 R/vglm.R                           |   93 +-
 R/vglm.control.q                   |   66 +-
 R/vglm.fit.q                       |  152 +-
 R/vlm.R                            |    2 +-
 data/alclevels.R                   |   22 -
 data/alclevels.rda                 |  Bin 0 -> 562 bytes
 data/alcoff.R                      |   22 -
 data/alcoff.rda                    |  Bin 0 -> 557 bytes
 data/auuc.R                        |    6 -
 data/auuc.rda                      |  Bin 0 -> 243 bytes
 data/azprocedure.R                 | 2289 ----------------------------
 data/azprocedure.rda               |  Bin 0 -> 18474 bytes
 data/backPain.R                    |    5 -
 data/backPain.rda                  |  Bin 0 -> 603 bytes
 data/backPain.txt                  |  102 --
 data/backPain.txt.gz               |  Bin 0 -> 463 bytes
 data/bminz.txt                     |  701 ---------
 data/bminz.txt.gz                  |  Bin 0 -> 6259 bytes
 data/car.all.R                     |  362 -----
 data/car.all.rda                   |  Bin 0 -> 8214 bytes
 data/chestnz.txt                   |   74 -
 data/chestnz.txt.gz                |  Bin 0 -> 559 bytes
 data/coalminers.txt                |   10 -
 data/coalminers.txt.gz             |  Bin 0 -> 151 bytes
 data/crashbc.R                     |   18 -
 data/crashbc.rda                   |  Bin 0 -> 387 bytes
 data/crashf.R                      |   18 -
 data/crashf.rda                    |  Bin 0 -> 353 bytes
 data/crashi.R                      |   21 -
 data/crashi.rda                    |  Bin 0 -> 505 bytes
 data/crashmc.R                     |   19 -
 data/crashmc.rda                   |  Bin 0 -> 397 bytes
 data/crashp.R                      |   18 -
 data/crashp.rda                    |  Bin 0 -> 392 bytes
 data/crashtr.R                     |   18 -
 data/crashtr.rda                   |  Bin 0 -> 375 bytes
 data/enzyme.txt                    |   13 -
 data/enzyme.txt.gz                 |  Bin 0 -> 107 bytes
 data/fibre15.rda                   |  Bin 0 -> 245 bytes
 data/fibre1dot5.rda                |  Bin 0 -> 296 bytes
 data/gala.R                        |   28 -
 data/gala.rda                      |  Bin 0 -> 1045 bytes
 data/gew.txt                       |   21 -
 data/gew.txt.gz                    |  Bin 0 -> 530 bytes
 data/hspider.R                     |   47 -
 data/hspider.rda                   |  Bin 0 -> 1310 bytes
 data/hued.rda                      |  Bin 0 -> 410 bytes
 data/huie.rda                      |  Bin 0 -> 416 bytes
 data/hunua.txt                     |  393 -----
 data/hunua.txt.gz                  |  Bin 0 -> 1883 bytes
 data/huse.rda                      |  Bin 0 -> 322 bytes
 data/leukemia.R                    |   10 -
 data/leukemia.rda                  |  Bin 0 -> 326 bytes
 data/lirat.txt                     |   59 -
 data/lirat.txt.gz                  |  Bin 0 -> 305 bytes
 data/mmt.R                         |  328 ----
 data/mmt.rda                       |  Bin 0 -> 5973 bytes
 data/nzc.txt                       |   27 -
 data/nzc.txt.gz                    |  Bin 0 -> 365 bytes
 data/nzmarital.R                   | 1809 ----------------------
 data/nzmarital.rda                 |  Bin 0 -> 24966 bytes
 data/olympic.txt                   |   88 --
 data/olympic.txt.gz                |  Bin 0 -> 941 bytes
 data/oxtemp.txt                    |   81 -
 data/oxtemp.txt.gz                 |  Bin 0 -> 261 bytes
 data/pneumo.R                      |    6 -
 data/pneumo.rda                    |  Bin 0 -> 263 bytes
 data/rainfall.R                    | 1000 ------------
 data/rainfall.rda                  |  Bin 0 -> 17135 bytes
 data/ruge.R                        |    5 -
 data/ruge.rda                      |  Bin 0 -> 255 bytes
 data/toxop.R                       |   11 -
 data/toxop.rda                     |  Bin 0 -> 465 bytes
 data/ugss.rda                      |  Bin 0 -> 15165 bytes
 data/usagrain.txt                  |  143 --
 data/uscrime.rda                   |  Bin 0 -> 3967 bytes
 data/usgrain.txt.gz                |  Bin 0 -> 1078 bytes
 data/venice.R                      |   50 -
 data/venice.rda                    |  Bin 0 -> 1209 bytes
 data/venice90.rda                  |  Bin 0 -> 13036 bytes
 data/waitakere.txt                 |  580 -------
 data/waitakere.txt.gz              |  Bin 0 -> 3090 bytes
 data/wffc.R                        | 2924 ------------------------------------
 data/wffc.indiv.R                  |   94 --
 data/wffc.indiv.rda                |  Bin 0 -> 2864 bytes
 data/wffc.nc.R                     |  351 -----
 data/wffc.nc.rda                   |  Bin 0 -> 5671 bytes
 data/wffc.rda                      |  Bin 0 -> 13544 bytes
 data/wffc.teams.R                  |   14 -
 data/wffc.teams.rda                |  Bin 0 -> 540 bytes
 inst/doc/categoricalVGAM.pdf       |  Bin 2955340 -> 2773966 bytes
 man/CommonVGAMffArguments.Rd       |   32 +-
 man/Inv.gaussian.Rd                |    5 +-
 man/Rcam.Rd                        |   66 +-
 man/VGAM-package.Rd                |    8 +
 man/alaplace3.Rd                   |   12 +-
 man/amh.Rd                         |    6 +-
 man/amlexponential.Rd              |    4 +-
 man/amlnormal.Rd                   |    4 +-
 man/amlpoisson.Rd                  |    4 +-
 man/benfUC.Rd                      |    2 +-
 man/benini.Rd                      |    4 +-
 man/beniniUC.Rd                    |   27 +-
 man/beta.ab.Rd                     |   14 +-
 man/betabin.ab.Rd                  |   53 +-
 man/betabinUC.Rd                   |   36 +-
 man/betabinomial.Rd                |   45 +-
 man/betaff.Rd                      |   34 +-
 man/bilogis4UC.Rd                  |   35 +-
 man/bilogistic4.Rd                 |   24 +-
 man/binom2.or.Rd                   |    8 +-
 man/binom2.rho.Rd                  |    6 +-
 man/binomialff.Rd                  |    1 +
 man/binormal.Rd                    |  105 ++
 man/bisa.Rd                        |    6 +-
 man/bivgamma.mckay.Rd              |    4 +-
 man/borel.tanner.Rd                |    4 +-
 man/calibrate.qrrvglm.control.Rd   |   16 +-
 man/cao.control.Rd                 |   12 +-
 man/cauchy.Rd                      |   10 +-
 man/{cnormal1.Rd => cennormal1.Rd} |   54 +-
 man/cenpoisson.Rd                  |   93 +-
 man/chisq.Rd                       |   26 +-
 man/crashes.Rd                     |   17 +-
 man/dcennormal1.Rd                 |  101 ++
 man/dcnormal1.Rd                   |  104 --
 man/erlang.Rd                      |    4 +-
 man/expgeometric.Rd                |   33 +-
 man/expgeometricUC.Rd              |   79 +
 man/explogarithmic.Rd              |   91 ++
 man/explogarithmicUC.Rd            |   79 +
 man/exponential.Rd                 |    1 +
 man/exppoisson.Rd                  |   98 ++
 man/exppoissonUC.Rd                |   73 +
 man/felix.Rd                       |    4 +-
 man/fff.Rd                         |    4 +-
 man/fgm.Rd                         |    6 +-
 man/fnormal1.Rd                    |    4 +-
 man/frechet.Rd                     |  200 +--
 man/frechetUC.Rd                   |   51 +-
 man/freund61.Rd                    |   27 +-
 man/gamma2.Rd                      |    4 +-
 man/gaussianff.Rd                  |    1 +
 man/gengammaUC.Rd                  |    3 +
 man/genpoisson.Rd                  |   10 +-
 man/genrayleigh.Rd                 |   15 +-
 man/genrayleighUC.Rd               |   38 +-
 man/geometric.Rd                   |    4 +-
 man/gev.Rd                         |  112 +-
 man/gevUC.Rd                       |   45 +-
 man/gpd.Rd                         |   54 +-
 man/gpdUC.Rd                       |   47 +-
 man/grc.Rd                         |   55 +-
 man/gumbel.Rd                      |   81 +-
 man/gumbelIbiv.Rd                  |    6 +-
 man/gumbelUC.Rd                    |   33 +-
 man/guplot.Rd                      |   47 +-
 man/huber.Rd                       |    6 +-
 man/hued.Rd                        |   55 +
 man/huggins91.Rd                   |  181 +++
 man/huggins91UC.Rd                 |  127 ++
 man/huie.Rd                        |   59 +
 man/huse.Rd                        |   73 +
 man/inv.gaussianff.Rd              |   11 +-
 man/koenker.Rd                     |    4 +-
 man/laplace.Rd                     |    6 +-
 man/lgammaUC.Rd                    |    7 +-
 man/lgammaff.Rd                    |   28 +-
 man/logff.Rd                       |   31 +-
 man/logistic.Rd                    |    6 +-
 man/loglaplace.Rd                  |    6 +-
 man/loglinb2.Rd                    |   27 +-
 man/loglinb3.Rd                    |   37 +-
 man/lqnorm.Rd                      |    8 +-
 man/meplot.Rd                      |  128 +-
 man/micmen.Rd                      |    4 +-
 man/moffset.Rd                     |  129 +-
 man/morgenstern.Rd                 |    6 +-
 man/multinomial.Rd                 |    8 +-
 man/negbinomial.Rd                 |  178 ++-
 man/normal1.Rd                     |   12 +-
 man/notdocumentedyet.Rd            |   28 +-
 man/pareto1.Rd                     |   54 +-
 man/paretoIV.Rd                    |   17 +-
 man/plackett.Rd                    |    4 +-
 man/plotrcam0.Rd                   |  225 +--
 man/poissonff.Rd                   |    4 +-
 man/poissonp.Rd                    |    4 +-
 man/posbinomUC.Rd                  |   18 +-
 man/posbinomial.Rd                 |   46 +-
 man/posnegbinomial.Rd              |   21 +-
 man/posnormUC.Rd                   |   45 +-
 man/posnormal1.Rd                  |   29 +-
 man/pospoisson.Rd                  |    4 +-
 man/propodds.Rd                    |   14 +-
 man/prplot.Rd                      |   19 +-
 man/qrrvglm.control.Rd             |    4 +-
 man/rayleigh.Rd                    |   10 +-
 man/recexp1.Rd                     |    6 +-
 man/recnormal1.Rd                  |   47 +-
 man/rlplot.egev.Rd                 |   40 +-
 man/rrar.Rd                        |   63 +-
 man/rrvglm-class.Rd                |    2 +-
 man/rrvglm.Rd                      |    4 +-
 man/simplex.Rd                     |    4 +-
 man/studentt.Rd                    |    8 +-
 man/tobit.Rd                       |  197 ++-
 man/tobitUC.Rd                     |   90 ++
 man/tparetoUC.Rd                   |   41 +-
 man/ugss.Rd                        |   98 ++
 man/undocumented-methods.Rd        |    3 +
 man/usagrain.Rd                    |   42 -
 man/uscrime.Rd                     |   81 +
 man/usgrain.Rd                     |   48 +
 man/venice.Rd                      |  144 +-
 man/vgam-class.Rd                  |    2 +-
 man/vgam.control.Rd                |    6 +-
 man/vglm-class.Rd                  |    2 +-
 man/vglm.control.Rd                |    8 +-
 man/vonmises.Rd                    |   12 +-
 man/weibull.Rd                     |   38 +-
 man/zanegbinUC.Rd                  |   19 +-
 man/zanegbinomial.Rd               |   23 +-
 man/zapoisUC.Rd                    |   15 +-
 man/zapoisson.Rd                   |   10 +-
 man/zero.Rd                        |   27 +-
 man/zeta.Rd                        |   53 +-
 man/zetaUC.Rd                      |   20 +-
 man/zetaff.Rd                      |   30 +-
 man/zibinomUC.Rd                   |   46 +-
 man/zibinomial.Rd                  |   26 +-
 man/zinegbinUC.Rd                  |   37 +-
 man/zinegbinomial.Rd               |   47 +-
 man/zipebcom.Rd                    |   46 +-
 man/zipf.Rd                        |   15 +-
 man/zipfUC.Rd                      |   14 +-
 man/zipoisUC.Rd                    |   18 +-
 man/zipoisson.Rd                   |   19 +-
 281 files changed, 12922 insertions(+), 19489 deletions(-)

diff --git a/DESCRIPTION b/DESCRIPTION
index 1ba07f4..fc69dd2 100755
--- a/DESCRIPTION
+++ b/DESCRIPTION
@@ -1,10 +1,10 @@
 Package: VGAM
-Version: 0.8-2
-Date: 2011-02-09
+Version: 0.8-3
+Date: 2011-06-17
 Title: Vector Generalized Linear and Additive Models
 Author: Thomas W. Yee <t.yee at auckland.ac.nz>
 Maintainer: Thomas Yee <t.yee at auckland.ac.nz>
-Depends: R (>= 2.8.0), splines, methods, stats, stats4
+Depends: R (>= 2.10.0), splines, methods, stats, stats4
 Description: Vector generalized linear and additive models, and
         associated models (Reduced-Rank VGLMs, Quadratic RR-VGLMs,
         Reduced-Rank VGAMs). This package fits many models and
@@ -15,6 +15,6 @@ License: GPL-2
 URL: http://www.stat.auckland.ac.nz/~yee/VGAM
 LazyLoad: yes
 LazyData: yes
-Packaged: 2011-02-09 03:49:01 UTC; tyee001
+Packaged: 2011-06-17 04:20:31 UTC; tyee001
 Repository: CRAN
-Date/Publication: 2011-02-09 10:10:07
+Date/Publication: 2011-06-17 08:34:03
diff --git a/NAMESPACE b/NAMESPACE
index e9339ef..0bcb942 100644
--- a/NAMESPACE
+++ b/NAMESPACE
@@ -14,10 +14,17 @@ useDynLib(VGAM)
 
 
 
+
 export(confint_rrnb, confint_nb1)
 export(vcovrrvglm)
 
 
+export(huggins91, dhuggins91, rhuggins91)
+
+
+
+
+
 
 export(
 Build.terms.vlm,
@@ -35,7 +42,9 @@ variable.namesvlm
 
 
 export(expgeometric, dexpgeom, pexpgeom, qexpgeom, rexpgeom,
-genrayleigh, dgenray, pgenray, qgenray, rgenray)
+genrayleigh, dgenray, pgenray, qgenray, rgenray,
+exppoisson, dexppois, pexppois, qexppois, rexppois,
+explogarithmic, dexplog, pexplog, qexplog, rexplog)
 
 
 
@@ -66,6 +75,12 @@ get.smart, get.smart.prediction,
 put.smart)
 
 
+
+export(
+dbinorm, binormal)
+
+
+
 export( bs, ns, scale.default, poly ) 
 
 
@@ -75,7 +90,7 @@ fill, fill1, fill2, fill3,
 amh, damh, pamh, ramh, 
 bivgamma.mckay,
 freund61,
-frechet2, frechet3, dfrechet, pfrechet, qfrechet, rfrechet,
+frechet2, dfrechet, pfrechet, qfrechet, rfrechet,
 frank, dfrank, pfrank, rfrank, 
 plackett, dplack, pplack, rplack, 
 benini, dbenini, pbenini, qbenini, rbenini, 
@@ -93,9 +108,9 @@ dparetoI, qparetoI, rparetoI, pparetoI,
 cgumbel, egumbel, gumbel,
 dgumbel, pgumbel, qgumbel, rgumbel, 
 fnormal1, dfnorm, pfnorm, qfnorm, rfnorm,
-cnormal1, dcnormal1,
+cennormal1, dcennormal1,
 recnormal1, recexp1,
-crayleigh, rayleigh, drayleigh, prayleigh, qrayleigh, rrayleigh, 
+cenrayleigh, rayleigh, drayleigh, prayleigh, qrayleigh, rrayleigh, 
 drice, rrice, riceff,
 dskellam, rskellam, skellam,
 inv.gaussianff, dinv.gaussian, pinv.gaussian, rinv.gaussian, wald,
@@ -201,6 +216,7 @@ summary.rrvglm, summary.uqo, summaryvgam,
 summaryvglm, summaryvlm, s.vam, terms.vlm, 
 theta2eta, Tol.Coef.qrrvglm, Tol.Coef.uqo, Tol.qrrvglm, Tol.uqo,
 triangle, dtriangle, ptriangle, qtriangle, rtriangle, 
+vglm.fit,
 vglm.garma.control, vglm.multinomial.control,
 vglm.multinomial.deviance.control, vglm.vcategorical.control,
 vlm, vlm.control,
@@ -361,7 +377,9 @@ deexp, peexp, qeexp, reexp)
 export(
 meplot, meplot.default, meplot.vlm,
 guplot, guplot.default, guplot.vlm,
-negbinomial, normal1, tobit, Opt, 
+negbinomial, polya, normal1,
+tobit, dtobit, ptobit, qtobit, rtobit,
+Opt, 
 persp.qrrvglm, plotdeplot.lmscreg, plotqrrvglm, plotqtplot.lmscreg,
 plotvgam.control, plotvgam, 
 cenpoisson,
diff --git a/NEWS b/NEWS
index 7ef7c77..b391866 100755
--- a/NEWS
+++ b/NEWS
@@ -1,17 +1,60 @@
-	**************************************************
-	*						 *
-	*	       0.8 SERIES NEWS			 *
-	*						 *
-	**************************************************
+    **************************************************
+    *                                                *
+    *           0.8 SERIES NEWS                      *
+    *                                                *
+    **************************************************
+
+
+
+                CHANGES IN VGAM VERSION 0.8-3
+
+NEW FEATURES
+
+    o   Argument names changed (Ouch!):
+        1.  'method.init' renamed to 'imethod';
+        2.  'k' renamed to 'size' in negbinomial(), zanegbinomial(),
+             posnegbinomial(), and zinegbinomial():
+             e.g., 'lk' renamed to 'lsize', 'ik' renamed to 'isize', etc.
+    o   New data sets: hued, huie, huse, ugss, uscrime;
+        usagrain renamed to usgrain.
+    o   The "prior.weights" slot is now a "matrix", not "numeric".
+    o   [dpr]betabin.ab() now handles size = 0. Thanks to Robert Wolpert
+        for picking up this bug.
+    o   New VGAM family functions:
+        [d]binormal(), [dr]huggins91() but this is not working properly,
+        [dpqr]explogarithmic(), polya().
+    o   New functions: [dpqr]tobit().
+    o   Improved family functions: tobit() implements the proper EIM for the
+        standard model, dcennormal1() has some new arguments [and renamed],
+        cennormal1(), cenrayleigh() renamed.
+    o   VGAM now depends on R >= 2.10.0.
+    o   Rcam(), moffset(), etc. for RCAMs have been improved and modified.
+    o   VGAM family functions currently withdrawn: frechet3().
+    o   Tested ok on R 2.13.0.
+
+
+BUG FIXES
+
+    o   tobit()@loglikelihood had omitted the constant in dnorm().
+        Also, tobit() uses simulated Fisher scoring (for nonstandard model).
+    o   moffset() was buggy.
+    o   ABO() is a little more robust.
+    o   dirichlet()@loglikelihood miscalculated.
+        Ditto for gaussian()@loglikelihood (constants were omitted).
+        Thanks to Arne Henningsen for picking up these bugs.
+    o   zipoissonff() did not initialize correctly and labelling was wrong
+        with matrix responses.
+
+
 
                 CHANGES IN VGAM VERSION 0.8-2
 
 NEW FEATURES
 
-    o	Objects of class "vglmff" have a "infos" slot to give
+    o    Objects of class "vglmff" have a "infos" slot to give
         information about the family.
-    o   New functions: lambertW(), rcam(), wffc.P3(), wffc.P3star(),
-        confint_rrnb(), confint_nb1().
+    o   New functions: lambertW(), rcam(), wffc.P3(),
+        wffc.P3star(), confint_rrnb(), confint_nb1().
     o   New VGAM family functions:
         binom2.Rho(), [dpqr]expgeometric(),
         [dpqr]genrayleigh(), [dpqr]huber(),
@@ -36,12 +79,12 @@ NEW FEATURES
         2009 NZ data.
     o   constraints(vglmfit) now has a 'type' argument that can be fed
         into the original fit (type = "lm") as the constraints argument.
-    o	vchol() takes drastic action to avoid infinite looping: it sets
+    o    vchol() takes drastic action to avoid infinite looping: it sets
         the working weights to be proportional to the order-M diagonal
         matrix.
-    o	lognormal() and lognormal3() now have zero = 2 as the default
+    o    lognormal() and lognormal3() now have zero = 2 as the default
         (was zero = NULL).
-    o	Some variable names within grc() changed, e.g., Row. and not Row.
+    o    Some variable names within grc() changed, e.g., Row. and not Row.
     o   The smartpred package within VGAM has updated poly(), ns(),
         bs() and scale() for R version 2.12.0 (2010-10-15).
         Calls to smartpredenv are now VGAM:::smartpredenv.
@@ -110,11 +153,11 @@ BUG FIXES
 
 
 
-	**************************************************
-	*						 *
-	*	       0.7 SERIES NEWS			 *
-	*						 *
-	**************************************************
+    **************************************************
+    *                                                *
+    *           0.7 SERIES NEWS                      *
+    *                                                *
+    **************************************************
 
 
                 CHANGES IN VGAM VERSION 0.7-10
@@ -150,18 +193,18 @@ BUG FIXES
 
 NEW FEATURES
 
-    o	New functions: margeff() for marginal effects of a vglm()
+    o    New functions: margeff() for marginal effects of a vglm()
         "multinomial" or "cumulative" model.
-    o	Almost all VGAM family functions now have a "loglikelihood"
+    o    Almost all VGAM family functions now have a "loglikelihood"
         slot that incorporates any constants in the density function.
         Hence the fitted likelihood may differ by a constant from
         previous results.
         In particular, models such as multinomial(), cumulative() 
         and binom2.or() have this new feature.
-    o	vglm() now has a modified 'xij' argument which implements
+    o    vglm() now has a modified 'xij' argument which implements
         eta-specific covariates. Usage now involves the form2' argument,
         and the 'xij' argument does not interfere with constraint matrices.
-	Documentation is supplied on the VGAM website, in particular,
+    Documentation is supplied on the VGAM website, in particular,
         http://www.stat.auckland.ac.nz/~yee/VGAM/doc/xij.pdf
     o   cases.names() and variable.names() methods functions
         written for vglm()/vgam() objects.
@@ -173,7 +216,7 @@ NEW FEATURES
     o   testf90.f90 has been renamed to testf90.f95. This may decrease
         the incidences of compiler problems on some platforms (f95 seems
         more popular than f90).
-    o	For cqo() objects: AIC(), resid() have been written.
+    o    For cqo() objects: AIC(), resid() have been written.
     o   Improved functions: negbinomial() default initial values are
         more robust to outliers in the response, betabinomial() and
         betabin.ab() have better initialization and "loglikelihood"
@@ -196,9 +239,9 @@ BUG FIXES
     o   VGAM interferes much less in regard to generic functions
         such as predict(), fitted(), resid(), wrt other packages and
         also including base's lm(), glm(), etc.
-    o	AIC() method for rrvglm() objects was wrong (did not account
+    o    AIC() method for rrvglm() objects was wrong (did not account
         for argument 'Structural.zero').
-    o	dzibinom(log=TRUE) was wrong.
+    o    dzibinom(log=TRUE) was wrong.
 
 
 
@@ -240,7 +283,7 @@ NEW FEATURES
         The resulting usage is a more elegant.
         Fitted objects have a few more slots and formulas put in set
         places on the object.
-    o	AIC() methods functions has been modified.
+    o    AIC() methods functions has been modified.
 
 
 BUG FIXES
@@ -392,11 +435,11 @@ NEW FEATURES
     o   gpd() now does not delete any data internally. The user should
         use the subset argument of vglm() and vgam() in order to select
         any subset of a data frame.
-    o	zapoisson() has a zero argument, and this can be assigned
+    o    zapoisson() has a zero argument, and this can be assigned
         a negative value.
-    o	"partial for" is added to the ylabel of linear terms of a vgam()
+    o    "partial for" is added to the ylabel of linear terms of a vgam()
         object when it is plotted.
-    o	When a vgam() object is plotted with se=TRUE and if there are
+    o    When a vgam() object is plotted with se=TRUE and if there are
         linear terms then the mean of x is added to the plot (this makes
         the standard error curves meet there).
     o   This package has been tested (somewhat) under R 2.5.0.
@@ -445,7 +488,7 @@ CHANGES
 
 
 
-		CHANGES IN VGAM VERSION 0.7-1
+        CHANGES IN VGAM VERSION 0.7-1
 
 NEW FEATURES
 
@@ -548,15 +591,15 @@ CHANGES
 
 
 
-	**************************************************
-	*						 *
-	*	       0.6 SERIES NEWS			 *
-	*						 *
-	**************************************************
+    **************************************************
+    *                                                *
+    *           0.6 SERIES NEWS                      *
+    *                                                *
+    **************************************************
 
 
 
-		CHANGES IN VGAM VERSION 0.6-9
+        CHANGES IN VGAM VERSION 0.6-9
 
 
 NEW FEATURES
@@ -572,17 +615,17 @@ NEW FEATURES
 
 BUG FIXES
 
-    o	Family functions lognormal(), lognormal3() now include the
+    o    Family functions lognormal(), lognormal3() now include the
         1/sqrt(2*pi) constant in @loglikelihood because of its use of
         dnorm(..., log=TRUE) and dlnorm(..., log=TRUE).
-    o	[dpqr]lognormal() withdrawn as they exist in R already.
-    o	Documentation for betaff() contained mistakes.
-    o	summary() of a betabin.ab() object used to fail.
-    o	The assign statement has been removed from some FORTRAN code.
+    o    [dpqr]lognormal() withdrawn as they exist in R already.
+    o    Documentation for betaff() contained mistakes.
+    o    summary() of a betabin.ab() object used to fail.
+    o    The assign statement has been removed from some FORTRAN code.
 
 
 
-		CHANGES IN VGAM VERSION 0.6-8
+        CHANGES IN VGAM VERSION 0.6-8
 
 NEW FEATURES
 
@@ -613,7 +656,7 @@ BUG FIXES
 
 
 
-		CHANGES IN VGAM VERSION 0.6-7
+        CHANGES IN VGAM VERSION 0.6-7
 
 NEW FEATURES
 
@@ -642,7 +685,7 @@ BUG FIXES
 
 
 
-		CHANGES IN VGAM VERSION 0.6-6
+        CHANGES IN VGAM VERSION 0.6-6
 
 NEW FEATURES
 
@@ -669,7 +712,7 @@ BUG FIXES
 
 
 
-		CHANGES IN VGAM VERSION 0.6-5
+        CHANGES IN VGAM VERSION 0.6-5
 
 NEW FEATURES
 
@@ -712,7 +755,7 @@ BUG FIXES
 
 
 
-		CHANGES IN VGAM VERSION 0.6-4
+        CHANGES IN VGAM VERSION 0.6-4
 
 NEW FEATURES
 
@@ -743,7 +786,7 @@ BUG FIXES
 
 
 
-		CHANGES IN VGAM VERSION 0.6-3
+        CHANGES IN VGAM VERSION 0.6-3
 
 NEW FEATURES
 
@@ -758,16 +801,16 @@ NEW FEATURES
 
 
 
-		CHANGES IN VGAM VERSION 0.6-2
+        CHANGES IN VGAM VERSION 0.6-2
 
 NEW FEATURES
 
-    o	model.frame() and model.matrix() are roughly working for
+    o    model.frame() and model.matrix() are roughly working for
         objects that inherit from "vlm"s, e.g., "vglm" objects.
         Both of these methods functions accept a "data"
         argument etc.
         Also, for these, smart prediction works.
-    o	A methods function for the generic function weights() has
+    o    A methods function for the generic function weights() has
         been written for VGLM objects. It returns
         either the prior or working weights.
 
@@ -786,43 +829,43 @@ BUG FIXES
 
 
 
-		CHANGES IN VGAM VERSION 0.6-1
+        CHANGES IN VGAM VERSION 0.6-1
 
 NEW FEATURES
 
-    o	New functions: cao() for "constrained additive ordination", 
+    o    New functions: cao() for "constrained additive ordination", 
         and uqo() for "unconstrained quadratic ordination".
         Both of these are unfinished but will hopefully be
         completed in the forseeable future. 
-    o	The function cgo() has been renamed to cqo(). Ouch!
+    o    The function cgo() has been renamed to cqo(). Ouch!
         CQO stands for "constrained quadratic ordination", and is 
         better than the old name cgo(), for 
         canonical Gaussian ordination.
-    o	The inverse() link function has been renamed to reciprocal().
-    o	More documentation: loglinb2() and loglinb3().
-    o	zipbipp() renamed to zapoisson(), where "za" stand for
+    o    The inverse() link function has been renamed to reciprocal().
+    o    More documentation: loglinb2() and loglinb3().
+    o    zipbipp() renamed to zapoisson(), where "za" stand for
         "zero-altered". This is more in line with the literature.
         New families: zanegbin.mu, positive.negbin.mu.
         New random variates: rposnegbin.mu, rpospois.
-    o	negbin.mu() works now for cgo(). The subsequent methods
+    o    negbin.mu() works now for cgo(). The subsequent methods
         functions have been adapted to work on it too.
         However, negbin.mu() is not recommended because maximum
         likelihood estimation of the index parameter is fraught
         numerically. It is better to use quasipoissonff().
-    o	cgo() now uses the function .Init.Poisson.CGO() to obtain
+    o    cgo() now uses the function .Init.Poisson.CGO() to obtain
         initial values for the canonical coefficients, C.
         The argument Use.Init.Poisson.CGO in qrrvglm.control()
         now controls this feature.
-    o	Lazy loading has been enabled for the VGAM package.
-    o	Name spaces has been introduced into the VGAM package.
-     	The consequencies of this might be far reaching for
+    o    Lazy loading has been enabled for the VGAM package.
+    o    Name spaces has been introduced into the VGAM package.
+         The consequencies of this might be far reaching for
         code heavily based on the internals of the VGAM package.
-    o	The application of name spaces means "ff" can be dropped
+    o    The application of name spaces means "ff" can be dropped
         from certain family functions. In particular, poisson() can
         be used instead of poissonff(), and binomial() instead
         of binomialff().  Ditto for quasipoissonff() and
         quasibinomialff().
-    o	names.of() changed to namesof(). Many other function names
+    o    names.of() changed to namesof(). Many other function names
         have been changed, particularly those of the S3 classes
         such as coef. something, e.g., coef.vlm to coefvlm.
         In general, S3 methods functions such as print.summary.vlm have
@@ -841,53 +884,53 @@ BUG FIXES
 
 
 
-	**************************************************
-	*						 *
-	*	       0.5 SERIES NEWS			 *
-	*						 *
-	**************************************************
+    **************************************************
+    *                                                *
+    *           0.5 SERIES NEWS                      *
+    *                                                *
+    **************************************************
 
 
 
-		CHANGES IN VGAM VERSION 0.5-24
+        CHANGES IN VGAM VERSION 0.5-24
 
 NEW FEATURES
 
-    o	zipbipp() and zipoissonX() are new alternatives to yip88(). 
+    o    zipbipp() and zipoissonX() are new alternatives to yip88(). 
         They fit a zero-inflated Poisson distribution.
         Both can handle covariates for both parameters (p0 or 
         phi, and lambda.)
-     	zipbipp() is recommended over the others. 
+         zipbipp() is recommended over the others. 
         zipoissonX() is experimental at this stage
         and should be used with caution.
         rpospois() is new.
-    o	More documentation: rhobit and binom2.rho.
-    o	binom2.or() now has lp1 and lp2 arguments, which allow 
+    o    More documentation: rhobit and binom2.rho.
+    o    binom2.or() now has lp1 and lp2 arguments, which allow 
         a different link function for each of the two marginal
         probabilities. 
-    o	bratt() is a new family function. It fits the Bradley Terry
+    o    bratt() is a new family function. It fits the Bradley Terry
         model with ties.
-    o	flush.console() is used if it exists. This will make
+    o    flush.console() is used if it exists. This will make
         Windows version more nicer for large data sets and when
         trace=TRUE is used. 
-    o	wweights() extracts the working weights of an object.
+    o    wweights() extracts the working weights of an object.
         Used to be called vweights().
 
 
 
 
-		CHANGES IN VGAM VERSION 0.5-23
+        CHANGES IN VGAM VERSION 0.5-23
 
 
 NEW FEATURES
 
-    o	The package works under the latest version, viz. 2.0.0.
-     	There are fewer warning messages when checking :)
-    o	persp() for CGO objects now handles Rank=1 models.
+    o    The package works under the latest version, viz. 2.0.0.
+         There are fewer warning messages when checking :)
+    o    persp() for CGO objects now handles Rank=1 models.
 
 
 
-		CHANGES IN VGAM VERSION 0.5-22
+        CHANGES IN VGAM VERSION 0.5-22
 
 BUG FIXES
 
@@ -895,12 +938,12 @@ BUG FIXES
 
 NEW FEATURES
 
-    o	demo files now are avaible for VGAM. These include lmsqreg,
+    o    demo files now are avaible for VGAM. These include lmsqreg,
         distributions, and cgo. More will be added later.
 
 
 
-		CHANGES IN VGAM VERSION 0.5-21
+        CHANGES IN VGAM VERSION 0.5-21
 
 BUG FIXES
 
@@ -911,16 +954,16 @@ BUG FIXES
 
 NEW FEATURES
 
-    o	cgo(..., FastAlgorithm=TRUE) has been fined-tuned to give
+    o    cgo(..., FastAlgorithm=TRUE) has been fined-tuned to give
         greater speed and accuracy.
-    o	lms.yjn() uses FORTRAN code to implement the Gauss-Legendre
+    o    lms.yjn() uses FORTRAN code to implement the Gauss-Legendre
         algorithm. This results in greater accuracy.
-    o	More documentation, especially for family functions for
+    o    More documentation, especially for family functions for
         extreme values modelling.
 
 
 
-		CHANGES IN VGAM VERSION 0.5-20
+        CHANGES IN VGAM VERSION 0.5-20
 
 BUG FIXES
 
@@ -930,16 +973,16 @@ BUG FIXES
 
 NEW FEATURES
 
-    o	persp.qrrvglm() has been written to apply persp() to
+    o    persp.qrrvglm() has been written to apply persp() to
         a rank-2 CGO model.
-    o	cgo(..., FastAlgorithm=TRUE) now has a logical argument
+    o    cgo(..., FastAlgorithm=TRUE) now has a logical argument
         GradientFunction, which if TRUE (default), computes the
         derivatives by using finite-difference approximations.
         The default will cause the speed to generally increase.
 
 
 
-		CHANGES IN VGAM VERSION 0.5-19
+        CHANGES IN VGAM VERSION 0.5-19
 
 BUG FIXES
 
@@ -948,40 +991,40 @@ BUG FIXES
 
 NEW FEATURES
 
-    o	trplot() is a new generic function, and for objects of
+    o    trplot() is a new generic function, and for objects of
         class "qrrvglm" (a cgo() object), it produces a trajectory plot
         for species. 
-    o	vcov.qrrvglm() now computes standard errors and returns the 
+    o    vcov.qrrvglm() now computes standard errors and returns the 
         variance-covariance matrix for rank-1 QRR-VGLMs.
-    o	A new fast algorithm is implemented for cgo(..., FastAlgorithm=TRUE)
+    o    A new fast algorithm is implemented for cgo(..., FastAlgorithm=TRUE)
         which only works under windows. It is a new undocumented algorithm.
-    o	New family functions: lognormal(), lognormal3(), weibull().
-    o	New family functions: genbetaII(), betaII(), sinmad(), dagum(), 
+    o    New family functions: lognormal(), lognormal3(), weibull().
+    o    New family functions: genbetaII(), betaII(), sinmad(), dagum(), 
         lomax(), invlomax(), fisk(), invparalogistic(), paralogistic().
         Additionally, d*, r* p* and q* forms of the
         density/random-generation etc.  functions for all of these
         except for betaII and genbetaII.
-    o	New link function for (0,1) parameters: tanl() for tan link.
+    o    New link function for (0,1) parameters: tanl() for tan link.
         It has a heavier tail and corresponds to a Cauchy distribution
         (cf. probit for normal).
-    o	New family function: brat() for the Bradley Terry model 
+    o    New family function: brat() for the Bradley Terry model 
         (intercept model only).
 
 
 
-		CHANGES IN VGAM VERSION 0.5-18
+        CHANGES IN VGAM VERSION 0.5-18
 
 NEW FEATURES
 
-    o	I've changed deplot.lmscreg() so that the "at" argument is now
+    o    I've changed deplot.lmscreg() so that the "at" argument is now
         "y.arg", and the density is returned with name "density" instead
         of "y". That is, "at" is now "y", and "y" is now "density".
-    o	lvplot.rrvglm() and biplot.rrvglm() have been merged and are now
+    o    lvplot.rrvglm() and biplot.rrvglm() have been merged and are now
         equivalent.
 
 
 
-		CHANGES IN VGAM VERSION 0.5-17
+        CHANGES IN VGAM VERSION 0.5-17
 
 BUG FIXES
 
@@ -990,39 +1033,39 @@ BUG FIXES
 
 NEW FEATURES
 
-    o	Updated to work under R 1.8.1 
-    o	logLik() and AIC() methods functions supported for many VGAM objects.
-    o	lms.bcn.control(), lms.bcg.control(), lms.yjn.control() now 
+    o    Updated to work under R 1.8.1 
+    o    logLik() and AIC() methods functions supported for many VGAM objects.
+    o    lms.bcn.control(), lms.bcg.control(), lms.yjn.control() now 
         have trace=TRUE because monitoring LMS quantile regression models
         is a good idea.
-    o	lms.bcn(), lms.bcg(), lms.yjn() now improved.
+    o    lms.bcn(), lms.bcg(), lms.yjn() now improved.
 
 
 
-		CHANGES IN VGAM VERSION 0.5-16
+        CHANGES IN VGAM VERSION 0.5-16
 
 BUG FIXES
 
     o   biplot.rrvglm() had a internal bug with @C.
-    o	Runs under R 1.8.0 now, having a fix with "qr" slot.
-    o	etastart, coefstart, mustart arguments were not functional in vgam().
-    o	vchol() did not replace the correct elements; sometimes the index
+    o    Runs under R 1.8.0 now, having a fix with "qr" slot.
+    o    etastart, coefstart, mustart arguments were not functional in vgam().
+    o    vchol() did not replace the correct elements; sometimes the index
         was out of subscript range.
-    o	residuals.vlm() tried to evaluate a deviance slot in a "vglmff" object
+    o    residuals.vlm() tried to evaluate a deviance slot in a "vglmff" object
         even when it was empty.
-    o	Documentation links to functions in other packages now work.
+    o    Documentation links to functions in other packages now work.
 
 NEW FEATURES
 
-    o	lvplot.qrrvglm() has been renamed biplot.qrrvglm(). 
+    o    lvplot.qrrvglm() has been renamed biplot.qrrvglm(). 
         Argument Equal.tolerances changed to EqualTolerances.
         Argument Circular changed to ITolerances.
         rrvglm.control() now split into qrrvglm.control() and itself.
-    o	cgo() now performs canonical Gaussian ordination.
+    o    cgo() now performs canonical Gaussian ordination.
 
 
 
-		CHANGES IN VGAM VERSION 0.5-15
+        CHANGES IN VGAM VERSION 0.5-15
 
 BUG FIXES
 
@@ -1031,14 +1074,14 @@ BUG FIXES
 
 NEW FEATURES
 
-    o	gco() is now an easier interface for fitting Gaussian canonical
+    o    gco() is now an easier interface for fitting Gaussian canonical
         ordination models. gco(...) is essentially rrvglm(..., Quadratic=TRUE).
-    o	Documentation for deplot.lmscreg(), qtplot.lmscreg(), cdf.lmscreg()
+    o    Documentation for deplot.lmscreg(), qtplot.lmscreg(), cdf.lmscreg()
         and related functions. Also for positive.poisson(),
         positive.binomial() and yip88(). 
-    o	lvplot.qrrvglm() improved to handle non-diagonal tolerance matrices,
+    o    lvplot.qrrvglm() improved to handle non-diagonal tolerance matrices,
         and a new Rotate option is available for QRR-VGLMs.
-    o	By default, QRR-VGLMs now have the constraint that the latent
+    o    By default, QRR-VGLMs now have the constraint that the latent
         variables are uncorrelated and have unit variances, i.e., 
         their variance-covariance matrix is diag(Rank).
         Also, the Crow1positive argument allows ordinations to be reflected
@@ -1046,7 +1089,7 @@ NEW FEATURES
 
 
 
-		CHANGES IN VGAM VERSION 0.5-14
+        CHANGES IN VGAM VERSION 0.5-14
 
 BUG FIXES
 
@@ -1057,24 +1100,24 @@ BUG FIXES
 
 NEW FEATURES
 
-    o	install.packages("VGAM", CRAN="http://www.stat.auckland.ac.nz/~yee") 
+    o    install.packages("VGAM", CRAN="http://www.stat.auckland.ac.nz/~yee") 
         now works for PC and Linux/Unix, i.e., the distribution of the
         VGAM package allows for this type of download.
-    o	poissonff(), quasipoissonff(), binomialff() and 
+    o    poissonff(), quasipoissonff(), binomialff() and 
         quasibinomialff() now handle multiple dispersion parameters when
         mv=TRUE and onedpar=FALSE.
-    o	Generic function predictx(), with methods function for "qrrvglm"
+    o    Generic function predictx(), with methods function for "qrrvglm"
         objects. This solves (with limited functionality) the calibration
         problem.
-    o	predict.qrrvglm() and predict.rrvglm() written (but don't work 100%)
-    o	Coef.rrvglm() now returns an S4 object, which can be printed nicely. 
-    o	summary.qrrvglm() has been improved.
-    o	Documentation for poissonff(), quasipoissonff(), binomialff() and 
+    o    predict.qrrvglm() and predict.rrvglm() written (but don't work 100%)
+    o    Coef.rrvglm() now returns an S4 object, which can be printed nicely. 
+    o    summary.qrrvglm() has been improved.
+    o    Documentation for poissonff(), quasipoissonff(), binomialff() and 
         quasibinomialff(). 
 
 
 
-		CHANGES IN VGAM VERSION 0.5-13
+        CHANGES IN VGAM VERSION 0.5-13
 
 BUG FIXES
 
@@ -1082,14 +1125,14 @@ BUG FIXES
 
 NEW FEATURES
 
-    o	Documentation for lms.bcn(), lms.bcg(), lms.yjn(), and bmi.
-     	Additionally, the overall documentation has been improved
+    o    Documentation for lms.bcn(), lms.bcg(), lms.yjn(), and bmi.
+         Additionally, the overall documentation has been improved
         throughout.
-    o	print.Coef.qrrvglm prints the contents of Coef(qrrvglm.object) 
-     	in a nicer format. It uses S4 features.
+    o    print.Coef.qrrvglm prints the contents of Coef(qrrvglm.object) 
+         in a nicer format. It uses S4 features.
 
 
-		CHANGES IN VGAM VERSION 0.5-12
+        CHANGES IN VGAM VERSION 0.5-12
 
 BUG FIXES
 
@@ -1100,13 +1143,13 @@ BUG FIXES
 
 NEW FEATURES
 
-    o	documentation for beta2(), and dirichlet().
-    o	Easier installation; use something like 
+    o    documentation for beta2(), and dirichlet().
+    o    Easier installation; use something like 
         "R CMD INSTALL -l ./myRlibs VGAM_0.5-12.tar.gz"
-     	for a local library. 
+         for a local library. 
 
 
-		CHANGES IN VGAM VERSION 0.5-11
+        CHANGES IN VGAM VERSION 0.5-11
 
 BUG FIXES
 
@@ -1115,12 +1158,12 @@ BUG FIXES
 
 NEW FEATURES
 
-    o	levy() added, plus grc() documentation.
-    o	constraints added to binomialff() and poissonff() since 
+    o    levy() added, plus grc() documentation.
+    o    constraints added to binomialff() and poissonff() since 
         they both handle multivariate responses. 
 
 
-		CHANGES IN VGAM VERSION 0.5-10
+        CHANGES IN VGAM VERSION 0.5-10
 
 BUG FIXES
 
@@ -1130,15 +1173,15 @@ BUG FIXES
 
 NEW FEATURES
 
-    o	logff() added.
-    o	The undocumented backchat facility now works for Splus 6.x.
+    o    logff() added.
+    o    The undocumented backchat facility now works for Splus 6.x.
         This should increase the efficiency of vglm() in particular.
         Thanks to Insightful and Dr J. Chambers for helping to get it
         going under the S4 engine. 
 
 
 
-		CHANGES IN VGAM VERSION 0.5-9
+        CHANGES IN VGAM VERSION 0.5-9
 
 BUG FIXES
 
@@ -1148,30 +1191,30 @@ BUG FIXES
 
 NEW FEATURES
 
-    o	.Rd documentation included for vglm(), vgam(), rrvglm(), and
+    o    .Rd documentation included for vglm(), vgam(), rrvglm(), and
         associated control and class functions, plus smart prediction.
 
 
 
-		CHANGES IN VGAM VERSION 0.5-8
+        CHANGES IN VGAM VERSION 0.5-8
 
 NEW FEATURES
 
-    o	rrvglm() now has a Quadratic argument to implement the class of 
-	Quadratic Reduced-rank VGLMs, which gives maximum likelihood
+    o    rrvglm() now has a Quadratic argument to implement the class of 
+    Quadratic Reduced-rank VGLMs, which gives maximum likelihood
         solutions to Gaussian canonical ordination problems.
-	Documentation is in rrvglm.pdf 
+    Documentation is in rrvglm.pdf 
 
 
 
-		CHANGES IN VGAM VERSION 0.5-7
+        CHANGES IN VGAM VERSION 0.5-7
 
 NEW FEATURES
 
-    o	vglm() now has a xij argument which implements eta-specific covariates. 
-	Documentation is supplied on the VGAM website. 
-    o	grc() has been written for Goodman's RC association model for a 
-	contingency table. Documentation is in rrvglm.pdf 
+    o    vglm() now has a xij argument which implements eta-specific covariates. 
+    Documentation is supplied on the VGAM website. 
+    o    grc() has been written for Goodman's RC association model for a 
+    contingency table. Documentation is in rrvglm.pdf 
 
 
 
diff --git a/R/aamethods.q b/R/aamethods.q
index ee52a58..45c07a8 100644
--- a/R/aamethods.q
+++ b/R/aamethods.q
@@ -26,11 +26,11 @@ VGAMenv <- new.env()
  
  
  
-if (!any(search()=="package:methods"))
+if (!any(search() == "package:methods"))
     library(methods)
 
 
-if (!any(search()=="package:splines"))
+if (!any(search() == "package:splines"))
     require(splines)
 
 
@@ -88,7 +88,7 @@ if (FALSE)
 
 if (!isGeneric("print"))
     setGeneric("print", function(x, ...) standardGeneric("print"),
-               package="VGAM")
+               package = "VGAM")
 
 
 
@@ -102,7 +102,7 @@ print.vglmff <- function(x, ...) {
         invisible(return(x))
 
     cat("Family: ", f[1], "\n")
-    if (length(f)>1) cat("Informal classes:", paste(f, collapse=", "), "\n")
+    if (length(f)>1) cat("Informal classes:", paste(f, collapse = ", "), "\n")
     cat("\n")
 
     for(ii in 1:length(nn))
@@ -141,7 +141,7 @@ setClass("vlmsmall", representation(
       "na.action"    = "list",
       "post"         = "list",
       "preplot"      = "list",
-      "prior.weights"= "numeric",
+      "prior.weights"= "matrix",
       "residuals"    = "matrix",
       "weights"      = "matrix",
       "x"            = "matrix",
@@ -194,39 +194,39 @@ setClass("vgam", representation(
 
 
 setClass("summary.vgam", representation(
-        anova="data.frame",
-        cov.unscaled="matrix",
-        correlation="matrix",
-        df="numeric",
-        pearson.resid="matrix",
-        sigma="numeric"),
+        anova = "data.frame",
+        cov.unscaled = "matrix",
+        correlation = "matrix",
+        df = "numeric",
+        pearson.resid = "matrix",
+        sigma = "numeric"),
     prototype(anova=data.frame()),
     contains = "vgam")
 
 
 setClass("summary.vglm", representation(
-        coef3="matrix",
-        cov.unscaled="matrix",
-        correlation="matrix",
-        df="numeric",
-        pearson.resid="matrix",
-        sigma="numeric"),
+        coef3 = "matrix",
+        cov.unscaled = "matrix",
+        correlation = "matrix",
+        df = "numeric",
+        pearson.resid = "matrix",
+        sigma = "numeric"),
     contains = "vglm")
 
 
 setClass("summary.vlm", representation(
-        coef3="matrix",
-        cov.unscaled="matrix",
-        correlation="matrix",
-        df="numeric",
-        pearson.resid="matrix",
-        sigma="numeric"),
+        coef3 = "matrix",
+        cov.unscaled = "matrix",
+        correlation = "matrix",
+        df = "numeric",
+        pearson.resid = "matrix",
+        sigma = "numeric"),
     contains = "vlm")
 
 
 
- setClass(Class="rrvglm",
-          contains="vglm")
+ setClass(Class = "rrvglm",
+          contains = "vglm")
 
 
 
@@ -253,7 +253,7 @@ if (FALSE)
       "post"         = "list",
       "predictors"   = "matrix",
       "preplot"      = "list",
-      "prior.weights"= "numeric",
+      "prior.weights"= "matrix",
       "residuals"    = "matrix",
       "smart.prediction" = "list",
       "terms"        = "list",
@@ -268,7 +268,7 @@ if (FALSE)
 
 
 
- setClass(Class="qrrvglm",
+ setClass(Class = "qrrvglm",
           contains = "rrvglm")
 
 
@@ -315,9 +315,11 @@ new("vglm", "extra"=from at extra,
 
 
 
- setClass("rcam", representation(not.needed="numeric"),
+ setClass("rcam0", representation(not.needed = "numeric"),
+          contains = "vglm")  # Added 20110506
+ setClass("rcam", representation(not.needed = "numeric"),
           contains = "rrvglm")
- setClass("grc",  representation(not.needed="numeric"),
+ setClass("grc",  representation(not.needed = "numeric"),
           contains = "rrvglm")
 
 
@@ -339,11 +341,11 @@ if (FALSE) {
 
 if (!isGeneric("Coef"))
 setGeneric("Coef", function(object, ...) standardGeneric("Coef"),
-           package="VGAM")
+           package = "VGAM")
 if (!isGeneric("Coefficients"))
 setGeneric("Coefficients", function(object, ...)
             standardGeneric("Coefficients"),
-           package="VGAM")
+           package = "VGAM")
 
 
 
@@ -354,15 +356,15 @@ setGeneric("Coefficients", function(object, ...)
 
 if (!isGeneric("logLik"))
     setGeneric("logLik", function(object, ...) standardGeneric("logLik"),
-           package="VGAM")
+           package = "VGAM")
 
 if (!isGeneric("plot"))
     setGeneric("plot", function(x, y, ...) standardGeneric("plot"),
-           package="VGAM")
+           package = "VGAM")
 
 if (!isGeneric("vcov"))
     setGeneric("vcov", function(object, ...) standardGeneric("vcov"),
-           package="VGAM")
+           package = "VGAM")
 
 
 
@@ -380,17 +382,17 @@ setClass("uqo", representation(
     contains = "vlmsmall")
 
 
-setClass(Class="cao",
-         contains="vgam")
+setClass(Class = "cao",
+         contains = "vgam")
 
 
 if (!isGeneric("lvplot"))
 setGeneric("lvplot", function(object, ...) standardGeneric("lvplot"),
-           package="VGAM")
+           package = "VGAM")
 
 if (!isGeneric("ccoef"))
     setGeneric("ccoef", function(object, ...) standardGeneric("ccoef"),
-           package="VGAM")
+           package = "VGAM")
 
 
 
@@ -398,26 +400,26 @@ if (!isGeneric("ccoef"))
 
 if (!isGeneric("coef"))
     setGeneric("coef", function(object, ...) standardGeneric("coef"),
-           package="VGAM")
+           package = "VGAM")
 
 if (!isGeneric("coefficients"))
     setGeneric("coefficients", function(object, ...)
                                standardGeneric("coefficients"),
-               package="VGAM")
+               package = "VGAM")
 
 if (!isGeneric("df.residual"))
     setGeneric("df.residual", function(object, ...)
                               standardGeneric("df.residual"),
-           package="VGAM")
+           package = "VGAM")
 
 if (!isGeneric("fitted"))
     setGeneric("fitted", function(object, ...) standardGeneric("fitted"),
-           package="VGAM")
+           package = "VGAM")
 
  if (!isGeneric("fitted.values"))
      setGeneric("fitted.values", function(object, ...)
                                  standardGeneric("fitted.values"),
-           package="VGAM")
+           package = "VGAM")
 
 if (!isGeneric("model.matrix"))
     setGeneric("model.matrix", function(object, ...)
@@ -441,11 +443,11 @@ if (!isGeneric("resid"))
 
 if (!isGeneric("residuals"))
     setGeneric("residuals", function(object, ...) standardGeneric("residuals"),
-           package="VGAM")
+           package = "VGAM")
 
 if (!isGeneric("weights"))
     setGeneric("weights", function(object, ...) standardGeneric("weights"),
-           package="VGAM")
+           package = "VGAM")
 
 
 
@@ -453,24 +455,24 @@ if (!isGeneric("weights"))
 
 if (!isGeneric("AIC"))
     setGeneric("AIC", function(object, ..., k=2) standardGeneric("AIC"),
-           package="VGAM")
+           package = "VGAM")
 
 
 
   if (!isGeneric("formula"))
       setGeneric("formula", function(x, ...) standardGeneric("formula"),
-           package="VGAM")
+           package = "VGAM")
 
 
   if (!isGeneric("case.names"))
       setGeneric("case.names", function(object, ...)
            standardGeneric("case.names"),
-           package="VGAM")
+           package = "VGAM")
 
   if (!isGeneric("variable.names"))
       setGeneric("variable.names", function(object, ...)
            standardGeneric("variable.names"),
-           package="VGAM")
+           package = "VGAM")
 
 
 
diff --git a/R/cao.R b/R/cao.R
index 35c536e..c1b03de 100644
--- a/R/cao.R
+++ b/R/cao.R
@@ -167,7 +167,7 @@ cao  <- function(formula,
                                     fit$misc$predictors.names)
     slot(answer, "predictors") = fit$predictors
     if (length(fit$prior.weights))
-        slot(answer, "prior.weights") = fit$prior.weights
+        slot(answer, "prior.weights") = as.matrix(fit$prior.weights)
 
 
 
diff --git a/R/cao.fit.q b/R/cao.fit.q
index 336fb08..1351c7d 100644
--- a/R/cao.fit.q
+++ b/R/cao.fit.q
@@ -159,7 +159,7 @@ cao.fit <- function(x, y, w=rep(1, length(x[, 1])),
                    dim2wz=1, inited=0, # w(,dimw) cols
             modelno, maxitl=control$maxitl, actnits=0, twice=0, p1star. ,
             p2star. , Nice21, lenbeta, controlITolerances=0, control$trace,
-            p1, p2=p2, imethod=control$method.init, bchat=0)
+            p1, p2=p2, imethod=control$imethod, bchat=0)
     othdbl = c(small=control$SmallNo, fseps=control$epsilon,
                .Machine$double.eps,
                iKvector=rep(control$iKvector, len=NOS),
@@ -332,7 +332,7 @@ cao.control = function(Rank=1,
 
           Bestof = if (length(Cinit)) 1 else 10,
           maxitl = 10,   # was 40 prior to 20100420
-          method.init = 1,
+          imethod = 1,
           bf.epsilon = 1.0e-7,
           bf.maxit = 10,  # was 40 prior to 20100420
           Maxit.optim = 250,
@@ -350,8 +350,8 @@ cao.control = function(Rank=1,
         stop("bad input for 'iShape'")
     if (!is.Numeric(iKvector, posit=TRUE))
         stop("bad input for 'iKvector'")
-    if (!is.Numeric(method.init, posit=TRUE, allow=1, integer=TRUE))
-        stop("bad input for 'method.init'")
+    if (!is.Numeric(imethod, posit=TRUE, allow=1, integer=TRUE))
+        stop("bad input for 'imethod'")
     if (criterion != "deviance") stop("'criterion' must be 'deviance'")
     if (GradientFunction)
         stop("14/1/05; GradientFunction = TRUE not working yet")
@@ -421,7 +421,7 @@ cao.control = function(Rank=1,
         maxitl = maxitl,
         bf.epsilon = bf.epsilon,
         bf.maxit = bf.maxit,
-        method.init = method.init,
+        imethod = imethod,
         Maxit.optim = Maxit.optim,
         optim.maxit = optim.maxit,
         Norrr=Norrr,
diff --git a/R/cqo.R b/R/cqo.R
index f3413eb..c83b268 100644
--- a/R/cqo.R
+++ b/R/cqo.R
@@ -154,7 +154,7 @@ cqo <- function(formula,
                                     fit$misc$predictors.names)
     slot(answer, "predictors") = fit$predictors
     if (length(fit$prior.weights))
-        slot(answer, "prior.weights") = fit$prior.weights
+        slot(answer, "prior.weights") = as.matrix(fit$prior.weights)
     answer
 }
 attr(cqo, "smart") <- TRUE
diff --git a/R/cqo.fit.q b/R/cqo.fit.q
index 2543871..31d6d2d 100644
--- a/R/cqo.fit.q
+++ b/R/cqo.fit.q
@@ -70,7 +70,7 @@ callcqoc = function(cmatrix, etamat, xmat, ymat, wvec,
                maxitl = control$maxitl, actnits = 0, twice = 0,
                p1star = p1star, p2star = p2star, nice31 = nice31,
                lenbeta = lenbeta, itol = itol, control$trace,
-               p1 = p1, p2 = p2, control$method.init)
+               p1 = p1, p2 = p2, control$imethod)
     bnumat = if (nice31) matrix(0,nstar,pstar) else
              cbind(matrix(0,nstar,p2star), X_vlm_1save)
 
@@ -189,7 +189,7 @@ calldcqo = function(cmatrix, etamat, xmat, ymat, wvec,
                modelno, maxitl = control$maxitl, actnits = 0, twice = 0, 
                p1star = p1star, p2star = p2star, nice31 = nice31, lenbeta,
                itol = itol, control$trace,
-               p1, p2, control$method.init) # other ints
+               p1, p2, control$imethod) # other ints
     bnumat = if (nice31) matrix(0,nstar,pstar) else
              cbind(matrix(0,nstar,p2star), X_vlm_1save)
     flush.console()
diff --git a/R/family.aunivariate.R b/R/family.aunivariate.R
index 17aafc9..05fcdd3 100644
--- a/R/family.aunivariate.R
+++ b/R/family.aunivariate.R
@@ -171,8 +171,8 @@ pkumar = function(q, shape1, shape2) {
                   (y^shape1) / (1-y^shape1)
     dl.dshape2 <- 1 / shape2 + log1p(-y^shape1)
 
-    w * cbind(dl.dshape1 * dshape1.deta,
-              dl.dshape2 * dshape2.deta)
+    c(w) * cbind(dl.dshape1 * dshape1.deta,
+                 dl.dshape2 * dshape2.deta)
   }), list( .lshape1 = lshape1, .lshape2 = lshape2,
             .eshape1 = eshape1, .eshape2 = eshape2 ))),
   weight = eval(substitute(expression({
@@ -197,9 +197,10 @@ pkumar = function(q, shape1, shape2) {
     wz[, iam(2, 2, M = M)] <- ed2l.dshape22 * dshape2.deta^2
     wz[, iam(1, 2, M = M)] <- ed2l.dshape12 * dshape1.deta * dshape2.deta
 
-    w * wz
+    c(w) * wz
   }), list( .lshape1 = lshape1, .lshape2 = lshape2,
-            .eshape1 = eshape1, .eshape2 = eshape2, .tol12 = tol12 ))))
+            .eshape1 = eshape1, .eshape2 = eshape2,
+            .tol12 = tol12 ))))
 }
 
 
@@ -340,8 +341,8 @@ riceff.control <- function(save.weight = TRUE, ...)
                   besselI(temp8, nu=1) / besselI(temp8, nu=0)
         dl.dsigma = -2/sigma + (y^2 + vee^2)/(sigma^3) - (2 * temp8 / sigma) *
                     besselI(temp8, nu=1) / besselI(temp8, nu=0)
-        w * cbind(dl.dvee * dvee.deta,
-                  dl.dsigma * dsigma.deta)
+        c(w) * cbind(dl.dvee * dvee.deta,
+                     dl.dsigma * dsigma.deta)
     }), list( .lvee = lvee, .lsigma = lsigma,
               .evee = evee, .esigma = esigma, .nsimEIM = nsimEIM ))),
     weight = eval(substitute(expression({
@@ -366,7 +367,7 @@ riceff.control <- function(save.weight = TRUE, ...)
         dtheta.detas = cbind(dvee.deta, dsigma.deta)
         index0 = iam(NA, NA, M = M, both = TRUE, diag = TRUE)
         wz = wz * dtheta.detas[,index0$row] * dtheta.detas[,index0$col]
-        w * wz
+        c(w) * wz
     }), list( .lvee = lvee, .lsigma = lsigma,
               .evee = evee, .esigma = esigma, .nsimEIM = nsimEIM ))))
 }
@@ -523,8 +524,8 @@ skellam.control <- function(save.weight = TRUE, ...)
         temp6 = temp7 / temp9
         dl.dmu1 = -1 + 0.5 * y / mu1 + sqrt(mu2/mu1) * temp6
         dl.dmu2 = -1 - 0.5 * y / mu2 + sqrt(mu1/mu2) * temp6
-        w * cbind(dl.dmu1 * dmu1.deta,
-                  dl.dmu2 * dmu2.deta)
+        c(w) * cbind(dl.dmu1 * dmu1.deta,
+                     dl.dmu2 * dmu2.deta)
     }), list( .lmu1 = lmu1, .lmu2 = lmu2,
               .emu1 = emu1, .emu2 = emu2, .nsimEIM = nsimEIM ))),
     weight = eval(substitute(expression({
@@ -549,7 +550,7 @@ skellam.control <- function(save.weight = TRUE, ...)
         dtheta.detas = cbind(dmu1.deta, dmu2.deta)
         index0 = iam(NA, NA, M = M, both = TRUE, diag = TRUE)
         wz = wz * dtheta.detas[,index0$row] * dtheta.detas[,index0$col]
-        w * wz
+        c(w) * wz
     }), list( .lmu1 = lmu1, .lmu2 = lmu2,
               .emu1 = emu1, .emu2 = emu2, .nsimEIM = nsimEIM ))))
 }
@@ -675,7 +676,7 @@ yulesimon.control <- function(save.weight = TRUE, ...)
         wz = wz * drho.deta^2
 
 
-        w * wz
+        c(w) * wz
     }), list( .nsimEIM = nsimEIM ))))
 }
 
@@ -840,8 +841,8 @@ slash.control <- function(save.weight = TRUE, ...)
         ind0 = (abs(zedd) < .smallno)
         dl.dmu[ind0] = 0
         dl.dsigma[ind0] = -1/sigma[ind0]
-        ans =  w * cbind(dl.dmu * dmu.deta,
-                         dl.dsigma * dsigma.deta)
+        ans =  c(w) * cbind(dl.dmu    * dmu.deta,
+                            dl.dsigma * dsigma.deta)
         ans
     }), list( .lmu = lmu, .lsigma = lsigma,
               .emu = emu, .esigma = esigma, .smallno = smallno ))),
@@ -870,7 +871,7 @@ slash.control <- function(save.weight = TRUE, ...)
                    n, ncol(run.varcov), byrow = TRUE) else run.varcov
         dthetas.detas = cbind(dmu.deta, dsigma.deta)
         wz = wz * dthetas.detas[,ind1$row] * dthetas.detas[,ind1$col]
-        w * wz
+        c(w) * wz
     }), list( .lmu = lmu, .lsigma = lsigma,
               .emu = emu, .esigma = esigma,
               .nsimEIM = nsimEIM, .smallno = smallno ))))
@@ -896,16 +897,16 @@ dnefghs = function(x, tau, log = FALSE) {
 
 
  nefghs <- function(link = "logit", earg = list(), itau = NULL,
-                    method.init = 1)
+                    imethod = 1)
 {
     if (length(itau) && !is.Numeric(itau, positi = TRUE) || any(itau >= 1))
         stop("argument 'itau' must be in (0,1)")
     if (mode(link) != "character" && mode(link) != "name")
         link = as.character(substitute(link))
     if (!is.list(earg)) earg = list()
-    if (!is.Numeric(method.init, allow = 1, integ = TRUE, posit = TRUE) ||
-       method.init > 2)
-        stop("'method.init' must be 1 or 2")
+    if (!is.Numeric(imethod, allow = 1, integ = TRUE, posit = TRUE) ||
+       imethod > 2)
+        stop("'imethod' must be 1 or 2")
 
     new("vglmff",
     blurb = c("Natural exponential family generalized hyperbolic ",
@@ -920,7 +921,7 @@ dnefghs = function(x, tau, log = FALSE) {
         predictors.names = namesof("tau", .link, earg =.earg, tag = FALSE) 
 
         if (!length(etastart)) {
-            wmeany = if ( .method.init == 1) weighted.mean(y,w) else
+            wmeany = if ( .imethod == 1) weighted.mean(y,w) else
                      median(rep(y,w))
             if (abs(wmeany) < 0.01) wmeany = 0.01
             tau.init = atan(pi / wmeany) / pi + 0.5
@@ -930,7 +931,7 @@ dnefghs = function(x, tau, log = FALSE) {
             etastart = theta2eta(tau.init, .link, earg =.earg)
         }
     }), list( .link = link, .earg = earg, .itau = itau,
-              .method.init = method.init ))),
+              .imethod = imethod ))),
     inverse = eval(substitute(function(eta, extra = NULL) {
         tau = eta2theta(eta, .link, earg =.earg)
         pi / tan(pi * tau)
@@ -939,8 +940,8 @@ dnefghs = function(x, tau, log = FALSE) {
         misc$link <-    c(tau = .link)
         misc$earg <- list(tau = .earg)
         misc$expected = TRUE
-        misc$method.init= .method.init
-    }), list( .link=link, .earg =earg, .method.init = method.init ))),
+        misc$imethod= .imethod
+    }), list( .link=link, .earg =earg, .imethod = imethod ))),
     loglikelihood = eval(substitute(
         function(mu,y,w,residuals= FALSE,eta, extra = NULL) {
         tau = eta2theta(eta, .link, earg =.earg)
@@ -959,7 +960,7 @@ dnefghs = function(x, tau, log = FALSE) {
     weight = eval(substitute(expression({
         d2l.dtau2 = (pi / sin(pi * tau))^2
         wz = d2l.dtau2 * dtau.deta^2
-        w * wz
+        c(w) * wz
     }), list( .link = link ))))
 }
 
@@ -982,7 +983,7 @@ dlogF = function(x, shape1, shape2, log = FALSE) {
  logF = function(lshape1 = "loge", lshape2 = "loge",
                  eshape1 = list(), eshape2 = list(),
                  ishape1 = NULL, ishape2 = 1,
-                 method.init = 1)
+                 imethod = 1)
 {
     if (length(ishape1) && !is.Numeric(ishape1, positi = TRUE))
         stop("argument 'ishape1' must be positive")
@@ -995,9 +996,9 @@ dlogF = function(x, shape1, shape2, log = FALSE) {
         lshape2 = as.character(substitute(lshape2))
     if (!is.list(eshape1)) eshape1 = list()
     if (!is.list(eshape2)) eshape2 = list()
-    if (!is.Numeric(method.init, allow = 1, integ = TRUE, posit = TRUE) ||
-       method.init > 2)
-        stop("'method.init' must be 1 or 2")
+    if (!is.Numeric(imethod, allow = 1, integ = TRUE, posit = TRUE) ||
+       imethod > 2)
+        stop("'imethod' must be 1 or 2")
 
     new("vglmff",
     blurb = c("log F distribution\n",
@@ -1017,7 +1018,7 @@ dlogF = function(x, shape1, shape2, log = FALSE) {
             namesof("shape2", .lshape2, earg = .eshape2, tag = FALSE))
 
         if (!length(etastart)) {
-            wmeany = if ( .method.init == 1) weighted.mean(y,w) else
+            wmeany = if ( .imethod == 1) weighted.mean(y,w) else
                      median(rep(y,w))
 
 
@@ -1037,7 +1038,7 @@ dlogF = function(x, shape1, shape2, log = FALSE) {
     }), list( .lshape1 = lshape1, .lshape2 = lshape2,
               .eshape1 = eshape1, .eshape2 = eshape2,
               .ishape1=ishape1, .ishape2=ishape2,
-              .method.init = method.init ))),
+              .imethod = imethod ))),
     inverse = eval(substitute(function(eta, extra = NULL) {
         shape1 = eta2theta(eta[,1], .lshape1, earg = .eshape1)
         shape2 = eta2theta(eta[,2], .lshape2, earg = .eshape2)
@@ -1048,10 +1049,10 @@ dlogF = function(x, shape1, shape2, log = FALSE) {
         misc$link <-    c(shape1 = .lshape1, shape2 = .lshape2)
         misc$earg <- list(shape1 = .eshape1, shape2 = .eshape2)
         misc$expected = TRUE
-        misc$method.init= .method.init
+        misc$imethod= .imethod
     }), list( .lshape1 = lshape1, .lshape2 = lshape2,
               .eshape1 = eshape1, .eshape2 = eshape2,
-              .method.init = method.init ))),
+              .imethod = imethod ))),
     loglikelihood = eval(substitute(
         function(mu,y,w,residuals= FALSE,eta, extra = NULL) {
         shape1 = eta2theta(eta[,1], .lshape1, earg = .eshape1)
@@ -1071,7 +1072,8 @@ dlogF = function(x, shape1, shape2, log = FALSE) {
         dl.dshape2 = tmp888 - digamma(shape2) - y
         dshape1.deta = dtheta.deta(shape1, .lshape1, earg = .eshape1)
         dshape2.deta = dtheta.deta(shape2, .lshape2, earg = .eshape2)
-        w * cbind(dl.dshape1 * dshape1.deta, dl.dshape2 * dshape2.deta)
+        c(w) * cbind(dl.dshape1 * dshape1.deta,
+                     dl.dshape2 * dshape2.deta)
     }), list( .lshape1 = lshape1, .lshape2 = lshape2,
               .eshape1 = eshape1, .eshape2 = eshape2 ))),
     weight = eval(substitute(expression({
@@ -1084,7 +1086,7 @@ dlogF = function(x, shape1, shape2, log = FALSE) {
         wz[,iam(2,2,M = M)] = d2l.dshape22 * dshape2.deta^2
         wz[,iam(1,2,M = M)] = d2l.dshape1shape2 * dshape1.deta *
                                                 dshape2.deta
-        w * wz
+        c(w) * wz
     }), list( .lshape1 = lshape1, .lshape2 = lshape2,
               .eshape1 = eshape1, .eshape2 = eshape2 ))))
 }
diff --git a/R/family.binomial.R b/R/family.binomial.R
index ca8306a..cb5d155 100644
--- a/R/family.binomial.R
+++ b/R/family.binomial.R
@@ -66,16 +66,16 @@ process.binomial2.data.vgam <- expression({
 
 
 
-betabinomial.control <- function(save.weight=TRUE, ...)
+betabinomial.control <- function(save.weight = TRUE, ...)
 {
-    list(save.weight=save.weight)
+    list(save.weight = save.weight)
 }
 
 
 
  betabinomial <- function(lmu = "logit", lrho = "logit",
                           emu = list(),  erho = list(), irho = NULL,
-                          method.init = 1, shrinkage.init = 0.95,
+                          imethod = 1, shrinkage.init = 0.95,
                           nsimEIM = NULL, zero = 2)
 {
   if (mode(lmu) != "character" && mode(lmu) != "name")
@@ -86,13 +86,13 @@ betabinomial.control <- function(save.weight=TRUE, ...)
   if (!is.list(emu )) emu  <- list()
   if (!is.list(erho)) erho <- list()
 
-  if (!is.Numeric(method.init, allow=1, integ=TRUE, posit=TRUE) ||
-     method.init > 4) stop("argument 'method.init' must be 1, 2, 3 or 4")
+  if (!is.Numeric(imethod, allow=1, integ = TRUE, posit = TRUE) ||
+     imethod > 4) stop("argument 'imethod' must be 1, 2, 3 or 4")
 
   if (!is.Numeric(shrinkage.init, allow=1) || shrinkage.init < 0 ||
      shrinkage.init > 1) stop("bad input for argument 'shrinkage.init'")
   if (!is.null(nsimEIM)) {
-    if (!is.Numeric(nsimEIM, allow=1, integ=TRUE))
+    if (!is.Numeric(nsimEIM, allow=1, integ = TRUE))
       stop("bad input for argument 'nsimEIM'")
     if (nsimEIM <= 10)
       warning("'nsimEIM' should be an integer greater than 10, say")
@@ -128,26 +128,26 @@ betabinomial.control <- function(save.weight=TRUE, ...)
       warning("the response (as counts) does not appear to ",
               "be integer-valued. Am rounding to integer values.")
     ycounts <- round(ycounts) # Make sure it is an integer
-    predictors.names <- c(namesof("mu",  .lmu,  earg = .emu,  tag=FALSE),
-                          namesof("rho", .lrho, earg = .erho, tag=FALSE))
+    predictors.names <- c(namesof("mu",  .lmu,  earg = .emu,  tag = FALSE),
+                          namesof("rho", .lrho, earg = .erho, tag = FALSE))
     if (!length(etastart)) {
       betabinomial.Loglikfun = function(rhoval, y, x, w, extraargs) {
         shape1 <-    extraargs$mustart  * (1-rhoval) / rhoval
         shape2 <- (1-extraargs$mustart) * (1-rhoval) / rhoval
         ycounts <- extraargs$ycounts   # Ought to be integer-valued
         nvec <- extraargs$nvec
-        sum(dbetabin.ab(x = ycounts, size=nvec, shape1=shape1,
-                        shape2=shape2, log=TRUE))
+        sum(dbetabin.ab(x = ycounts, size=nvec, shape1 = shape1,
+                        shape2 = shape2, log = TRUE))
       }
       rho.grid <- seq(0.05, 0.95, len=21)  # rvar = 
       mustart.use =
       if (length(mustart.orig)) {
         mustart.orig
-      } else if ( .method.init == 1) {
+      } else if ( .imethod == 1) {
         rep(weighted.mean(y, w), len = n)
-      } else if ( .method.init == 2) {
+      } else if ( .imethod == 2) {
         .sinit * weighted.mean(y, w) + (1 - .sinit) * y
-      } else if ( .method.init == 3) {
+      } else if ( .imethod == 3) {
         y.matrix <- cbind(y)
         mat.temp <- matrix(colMeans(y.matrix), nrow(y.matrix),
                            ncol(y.matrix), byrow = TRUE)
@@ -162,14 +162,14 @@ betabinomial.control <- function(save.weight=TRUE, ...)
                                round(w / extra$orig.w) else round(w),
                         mustart = mustart.use))
       init.rho <- if (is.Numeric( .irho )) rep( .irho, length=n) else
-                  rep(try.this, len=n)
+                  rep(try.this, len = n)
       etastart <- cbind(theta2eta(mustart.use,  .lmu,  earg = .emu),
                         theta2eta(init.rho,     .lrho, earg = .erho))
       mustart <- NULL  # Since etastart has been computed.
     }
   }), list( .lmu = lmu, .lrho = lrho,
             .emu = emu, .erho = erho,
-            .method.init = method.init, .sinit = shrinkage.init,
+            .imethod = imethod, .sinit = shrinkage.init,
             .nsimEIM = nsimEIM, .irho = irho ))),
   inverse = eval(substitute(function(eta, extra = NULL)
     eta2theta(eta[,1], .lmu, earg = .emu), 
@@ -184,7 +184,7 @@ betabinomial.control <- function(save.weight=TRUE, ...)
             .emu = emu, .erho = erho,
             .nsimEIM = nsimEIM, .zero = zero ))),
   loglikelihood = eval(substitute(
-    function(mu,y,w,residuals=FALSE, eta, extra = NULL) {
+    function(mu,y,w,residuals = FALSE, eta, extra = NULL) {
     ycounts <- if (is.numeric(extra$orig.w)) y * w / extra$orig.w else
                y * w # Convert proportions to counts
 
@@ -246,7 +246,7 @@ betabinomial.control <- function(save.weight=TRUE, ...)
                mymu * digamma(shape1) -
                (1 - mymu)*digamma(shape2) + digamma(shape1+shape2))
 
-    (if (is.numeric(extra$orig.w)) extra$orig.w else 1) *
+    c(if (is.numeric(extra$orig.w)) extra$orig.w else 1) *
     cbind(dl.dmu * dmu.deta, dl.drho * drho.deta)
   }), list( .lmu = lmu, .lrho = lrho,
             .emu = emu, .erho = erho  ))),
@@ -274,12 +274,12 @@ betabinomial.control <- function(save.weight=TRUE, ...)
       wz * (if (is.numeric(extra$orig.w)) extra$orig.w else 1)
     } else {
       run.varcov <- 0
-      ind1 <- iam(NA, NA, M=M, both=TRUE, diag=TRUE)
+      ind1 <- iam(NA, NA, M = M, both = TRUE, diag = TRUE)
       dthetas.detas <- cbind(dmu.deta, drho.deta)
 
       for (ii in 1:( .nsimEIM )) {
-          ysim <- rbetabin.ab(n=n, size=nvec, shape1=shape1,
-                             shape2=shape2)
+          ysim <- rbetabin.ab(n = n, size=nvec, shape1 = shape1,
+                             shape2 = shape2)
           dl.dmu <- dshape1.dmu * (digamma(shape1+ysim) -
                    digamma(shape2+nvec-ysim) -
                    digamma(shape1) + digamma(shape2))
@@ -323,22 +323,22 @@ dbinom2.or = function(mu1,
              ErrorCheck = TRUE)
 {
     if (ErrorCheck) {
-        if (!is.Numeric(mu1, positive=TRUE) || max(mu1) >= 1)
+        if (!is.Numeric(mu1, positive = TRUE) || max(mu1) >= 1)
             stop("bad input for argument 'mu1'") 
-        if (!is.Numeric(mu2, positive=TRUE) || max(mu2) >= 1)
+        if (!is.Numeric(mu2, positive = TRUE) || max(mu2) >= 1)
             stop("bad input for argument 'mu2'") 
-        if (!is.Numeric(oratio, positive=TRUE))
+        if (!is.Numeric(oratio, positive = TRUE))
             stop("bad input for argument 'oratio'") 
-        if (!is.Numeric(tol, positive=TRUE, allow=1) || tol > 0.1)
+        if (!is.Numeric(tol, positive = TRUE, allow=1) || tol > 0.1)
             stop("bad input for argument 'tol'") 
         if (exchangeable && max(abs(mu1 - mu2)) > 0.00001)
           stop("argument 'exchangeable' is TRUE but 'mu1' and 'mu2' differ")
     }
 
     n = max(length(mu1), length(mu2), length(oratio))
-    oratio = rep(oratio, len=n)
-    mu1 = rep(mu1, len=n)
-    mu2 = rep(mu2, len=n)
+    oratio = rep(oratio, len = n)
+    mu1 = rep(mu1, len = n)
+    mu2 = rep(mu2, len = n)
 
     a.temp = 1 + (mu1+mu2)*(oratio-1)
     b.temp = -4 * oratio * (oratio-1) * mu1 * mu2
@@ -355,23 +355,23 @@ dbinom2.or = function(mu1,
 
 rbinom2.or = function(n, mu1,
                  mu2 = if (exchangeable) mu1 else stop("'mu2' not specified"),
-                      oratio=1,
-                      exchangeable=FALSE,
-                      tol=0.001,
-                      twoCols=TRUE,
+                      oratio = 1,
+                      exchangeable = FALSE,
+                      tol = 0.001,
+                      twoCols = TRUE,
           colnames = if (twoCols) c("y1","y2") else c("00", "01", "10", "11"),
-                      ErrorCheck=TRUE)
+                      ErrorCheck = TRUE)
 {
   if (ErrorCheck) {
-    if (!is.Numeric(n, integer=TRUE, posit=TRUE, allow=1))
+    if (!is.Numeric(n, integer = TRUE, posit = TRUE, allow=1))
       stop("bad input for argument 'n'")
-    if (!is.Numeric(mu1, positive=TRUE) || max(mu1) >= 1)
+    if (!is.Numeric(mu1, positive = TRUE) || max(mu1) >= 1)
       stop("bad input for argument 'mu1'") 
-    if (!is.Numeric(mu2, positive=TRUE) || max(mu2) >= 1)
+    if (!is.Numeric(mu2, positive = TRUE) || max(mu2) >= 1)
       stop("bad input for argument 'mu2'") 
-    if (!is.Numeric(oratio, positive=TRUE))
+    if (!is.Numeric(oratio, positive = TRUE))
       stop("bad input for argument 'oratio'") 
-    if (!is.Numeric(tol, positive=TRUE, allow=1) || tol > 0.1)
+    if (!is.Numeric(tol, positive = TRUE, allow=1) || tol > 0.1)
       stop("bad input for argument 'tol'") 
     if (exchangeable && max(abs(mu1 - mu2)) > 0.00001)
       stop("argument 'exchangeable' is TRUE but 'mu1' and 'mu2' differ") 
@@ -381,7 +381,7 @@ rbinom2.or = function(n, mu1,
                       tol=tol, ErrorCheck=ErrorCheck)
 
     answer = matrix(0, n, 2,
-                    dimnames=list(NULL, if (twoCols) colnames else NULL))
+                    dimnames = list(NULL, if (twoCols) colnames else NULL))
     yy = runif(n)
     cs1 = dmat[,"00"] + dmat[,"01"]
     cs2 = cs1 + dmat[,"10"]
@@ -392,7 +392,7 @@ rbinom2.or = function(n, mu1,
     index = (yy > cs2)
     answer[index,] = 1
     if (twoCols) answer else {
-        answer4 = matrix(0, n, 4, dimnames=list(NULL, colnames))
+        answer4 = matrix(0, n, 4, dimnames = list(NULL, colnames))
         answer4[cbind(1:n, 1 + 2*answer[,1] + answer[,2])] = 1
         answer4
     }
@@ -418,8 +418,8 @@ rbinom2.or = function(n, mu1,
         loratio = as.character(substitute(loratio))
     if (is.logical(exchangeable) && exchangeable && ((lmu1 != lmu2) ||
        !all.equal(emu1, emu2)))
-        stop("exchangeable=TRUE but marginal links are not equal") 
-    if (!is.Numeric(tol, positive=TRUE, allow=1) || tol > 0.1)
+        stop("exchangeable = TRUE but marginal links are not equal") 
+    if (!is.Numeric(tol, positive = TRUE, allow=1) || tol > 0.1)
         stop("bad input for argument 'tol'") 
     if (!is.list(emu1)) emu1  = list()
     if (!is.list(emu2)) emu2  = list()
@@ -434,7 +434,7 @@ rbinom2.or = function(n, mu1,
     constraints = eval(substitute(expression({
         constraints = cm.vgam(matrix(c(1,1,0,0,0,1),3,2), x, 
                               .exchangeable, constraints,
-                              intercept.apply=TRUE)
+                              intercept.apply = TRUE)
         constraints = cm.zero.vgam(constraints, x, .zero, M)
     }), list( .exchangeable = exchangeable, .zero = zero ))),
     deviance = Deviance.categorical.data.vgam,
@@ -556,9 +556,9 @@ rbinom2.or = function(n, mu1,
         dp11.doratio = Vab / use.oratio
         dl.doratio = coeff3 * dp11.doratio
 
-        w * cbind(dl.dmu1 * dtheta.deta(pmargin[,1], .lmu1, earg = .emu1),
-                  dl.dmu2 * dtheta.deta(pmargin[,2], .lmu2, earg = .emu2),
-               dl.doratio * dtheta.deta(oratio, .loratio, earg = .eoratio))
+        c(w) * cbind(dl.dmu1 * dtheta.deta(pmargin[,1], .lmu1, earg = .emu1),
+                     dl.dmu2 * dtheta.deta(pmargin[,2], .lmu2, earg = .emu2),
+                  dl.doratio * dtheta.deta(oratio, .loratio, earg = .eoratio))
     }), list( .lmu1 = lmu1, .lmu2 = lmu2, .loratio = loratio,
               .emu1 = emu1, .emu2 = emu2, .eoratio = eoratio ))),
     weight = eval(substitute(expression({
@@ -578,7 +578,7 @@ rbinom2.or = function(n, mu1,
         wz[,iam(1,2,M)] = (Vab * Deltapi / myDelta) *
                           dtheta.deta(pmargin[,1], .lmu1, earg = .emu1) *
                           dtheta.deta(pmargin[,2], .lmu2, earg = .emu2)
-        w * wz
+        c(w) * wz
     }), list( .lmu1 = lmu1, .lmu2 = lmu2, .loratio = loratio,
               .emu1 = emu1, .emu2 = emu2, .eoratio = eoratio ))))
 }
@@ -587,14 +587,14 @@ rbinom2.or = function(n, mu1,
 dbinom2.rho = function(mu1,
                 mu2 = if (exchangeable) mu1 else stop("'mu2' not specified"),
                        rho=0,
-                       exchangeable=FALSE,
+                       exchangeable = FALSE,
                        colnames=c("00", "01", "10", "11"),
-                       ErrorCheck=TRUE)
+                       ErrorCheck = TRUE)
 {
     if (ErrorCheck) {
-        if (!is.Numeric(mu1, positive=TRUE) || max(mu1) >= 1)
+        if (!is.Numeric(mu1, positive = TRUE) || max(mu1) >= 1)
             stop("bad input for argument 'mu1'") 
-        if (!is.Numeric(mu2, positive=TRUE) || max(mu2) >= 1)
+        if (!is.Numeric(mu2, positive = TRUE) || max(mu2) >= 1)
             stop("bad input for argument 'mu2'") 
         if (!is.Numeric(rho) || min(rho) <= -1 || max(rho) >= 1)
             stop("bad input for argument 'rho'") 
@@ -620,17 +620,17 @@ dbinom2.rho = function(mu1,
 rbinom2.rho = function(n, mu1,
              mu2 = if (exchangeable) mu1 else stop("'mu2' not specified"),
                        rho=0,
-                       exchangeable=FALSE,
-                       twoCols=TRUE,
+                       exchangeable = FALSE,
+                       twoCols = TRUE,
        colnames = if (twoCols) c("y1","y2") else c("00", "01", "10", "11"),
-                       ErrorCheck=TRUE)
+                       ErrorCheck = TRUE)
 {
     if (ErrorCheck) {
-        if (!is.Numeric(n, integer=TRUE, posit=TRUE, allow=1))
+        if (!is.Numeric(n, integer = TRUE, posit = TRUE, allow=1))
             stop("bad input for argument 'n'")
-        if (!is.Numeric(mu1, positive=TRUE) || max(mu1) >= 1)
+        if (!is.Numeric(mu1, positive = TRUE) || max(mu1) >= 1)
             stop("bad input for argument 'mu1'") 
-        if (!is.Numeric(mu2, positive=TRUE) || max(mu2) >= 1)
+        if (!is.Numeric(mu2, positive = TRUE) || max(mu2) >= 1)
             stop("bad input for argument 'mu2'") 
         if (!is.Numeric(rho) || min(rho) <= -1 || max(rho) >= 1)
             stop("bad input for argument 'rho'") 
@@ -642,7 +642,7 @@ rbinom2.rho = function(n, mu1,
                        ErrorCheck=ErrorCheck)
 
     answer = matrix(0, n, 2,
-                    dimnames=list(NULL, if (twoCols) colnames else NULL))
+                    dimnames = list(NULL, if (twoCols) colnames else NULL))
     yy = runif(n)
     cs1 = dmat[,"00"] + dmat[,"01"]
     cs2 = cs1 + dmat[,"10"]
@@ -653,7 +653,7 @@ rbinom2.rho = function(n, mu1,
     index = (yy > cs2)
     answer[index,] = 1
     if (twoCols) answer else {
-        answer4 = matrix(0, n, 4, dimnames=list(NULL, colnames))
+        answer4 = matrix(0, n, 4, dimnames = list(NULL, colnames))
         answer4[cbind(1:n, 1 + 2*answer[,1] + answer[,2])] = 1
         answer4
     }
@@ -663,17 +663,18 @@ rbinom2.rho = function(n, mu1,
 
 
 
-binom2.rho.control <- function(save.weight=TRUE, ...)
+binom2.rho.control <- function(save.weight = TRUE, ...)
 {
-    list(save.weight=save.weight)
+    list(save.weight = save.weight)
 }
 
 
 
  binom2.rho = function(lrho = "rhobit", erho = list(),
                        imu1 = NULL, imu2 = NULL, irho = NULL,
-                       method.init = 1,
-                       zero = 3, exchangeable = FALSE, nsimEIM = NULL)
+                       imethod = 1,
+                       zero = 3, exchangeable = FALSE,
+                       nsimEIM = NULL)
 {
 
 
@@ -688,8 +689,8 @@ binom2.rho.control <- function(save.weight=TRUE, ...)
         if (nsimEIM <= 100)
             warning("'nsimEIM' should be an integer greater than 100")
     }
-    if (!is.Numeric(method.init, allow = 1, integ = TRUE, posit = TRUE) ||
-       method.init > 2) stop("argument 'method.init' must be 1 or 2")
+    if (!is.Numeric(imethod, allow = 1, integ = TRUE, posit = TRUE) ||
+       imethod > 2) stop("argument 'imethod' must be 1 or 2")
 
     new("vglmff",
     blurb = c("Bivariate probit model\n",
@@ -733,7 +734,7 @@ binom2.rho.control <- function(save.weight=TRUE, ...)
           if (length(mustart.orig)) {
               mu1.init = mustart.orig[,3] + mustart.orig[,4]
               mu2.init = mustart.orig[,2] + mustart.orig[,4]
-          } else if ( .method.init == 1) {
+          } else if ( .imethod == 1) {
               glm1.fit = glm(cbind(ycounts[,3] + ycounts[,4],
                                    ycounts[,1] + ycounts[,2]) ~ x - 1,
                              fam = binomial("probit"))
@@ -742,13 +743,13 @@ binom2.rho.control <- function(save.weight=TRUE, ...)
                              fam = binomial("probit"))
               mu1.init = fitted(glm1.fit)
               mu2.init = fitted(glm2.fit)
-          } else if ( .method.init == 2) {
-              mu1.init = if (is.Numeric( .imu1 )) rep( .imu1, len=n) else
+          } else if ( .imethod == 2) {
+              mu1.init = if (is.Numeric( .imu1 )) rep( .imu1, len = n) else
                          mu[,3] + mu[,4]
-              mu2.init = if (is.Numeric( .imu2 )) rep( .imu2, len=n) else
+              mu2.init = if (is.Numeric( .imu2 )) rep( .imu2, len = n) else
                          mu[,2] + mu[,4]
           } else {
-            stop("bad value for 'method.init'")
+            stop("bad value for 'imethod'")
           }
 
 
@@ -774,7 +775,7 @@ binom2.rho.control <- function(save.weight=TRUE, ...)
             }
             rho.grid = seq(-0.95, 0.95, len=31)
             try.this = getMaxMin(rho.grid, objfun=binom2.rho.Loglikfun,
-                                 y=y, x=x, w=w, extraargs=list(
+                                 y=y, x=x, w=w, extraargs = list(
                                  orig.w = extra$orig.w,
                                  ycounts = ycounts,
                                  initmu1 = mu1.init,
@@ -794,7 +795,7 @@ binom2.rho.control <- function(save.weight=TRUE, ...)
         }
     }), list( .lmu12 = lmu12, .emu12 = emu12, .nsimEIM = nsimEIM,
               .lrho = lrho, .erho = erho, 
-              .method.init = method.init,
+              .imethod = imethod,
               .imu1 = imu1, .imu2 = imu2, .irho = irho ))),
     inverse = eval(substitute(function(eta, extra = NULL) {
         pmargin = cbind(eta2theta(eta[,1], .lmu12, earg = .emu12),
@@ -840,8 +841,8 @@ binom2.rho.control <- function(save.weight=TRUE, ...)
     deriv = eval(substitute(expression({
         nvec = if (is.numeric(extra$orig.w)) round(w / extra$orig.w) else
                   round(w)
-        ycounts = if (is.numeric(extra$orig.w)) y * w / extra$orig.w else
-                  y * w # Convert proportions to counts
+        ycounts = if (is.numeric(extra$orig.w)) y * c(w) / extra$orig.w else
+                  y * c(w) # Convert proportions to counts
 
         pmargin = cbind(eta2theta(eta[,1], .lmu12, earg = .emu12),
                         eta2theta(eta[,2], .lmu12, earg = .emu12))
@@ -922,7 +923,7 @@ binom2.rho.control <- function(save.weight=TRUE, ...)
     
             wz = wz * dthetas.detas[,ind1$row] * dthetas.detas[,ind1$col]
         }
-        w * wz
+        c(w) * wz
     }), list( .nsimEIM = nsimEIM ))))
 }
 
@@ -947,7 +948,7 @@ pnorm2 <- function(ah, ak, r) {
     ans <- ah 
     size <- length(ah)
     singler <- ifelse(length(r) == 1, 1, 0)
-    dotC(name="pnorm2", ah=as.double(-ah), ak=as.double(-ak), r=as.double(r),
+    dotC(name = "pnorm2", ah=as.double(-ah), ak=as.double(-ak), r=as.double(r),
        size=as.integer(size), singler=as.integer(singler), 
        ans=as.double(ans))$ans
 }
@@ -975,9 +976,9 @@ my.dbinom <- function(x,
     if (!is.list(earg)) earg = list()
 
     new("vglmff",
-    blurb = c("Binomial with n unknown, prob known (prob=",prob,")\n",
+    blurb = c("Binomial with n unknown, prob known (prob = ",prob,")\n",
               "Links:    ",
-              namesof("size", link, tag=TRUE),
+              namesof("size", link, tag = TRUE),
               " (treated as real-valued)\n",
               "Variance:  Var(Y) = size * prob * (1-prob);",
               " Var(size) is intractable"),
@@ -1002,7 +1003,7 @@ my.dbinom <- function(x,
         theta2eta(nvec, .link)
     }, list( .link = link ))),
     loglikelihood = eval(substitute(
-        function(mu, y, w, res=FALSE,eta, extra = NULL) {
+        function(mu, y, w, res = FALSE,eta, extra = NULL) {
         nvec <- mu / extra$temp2
         if (residuals)
             stop("loglikelihood residuals not implemented yet") else {
@@ -1016,13 +1017,13 @@ my.dbinom <- function(x,
         nvec <- mu/extra$temp2
         dldnvec = digamma(nvec+1) - digamma(nvec-y+1) + log1p(-extra$temp2)
         dnvecdeta <- dtheta.deta(nvec, .link)
-        w * cbind(dldnvec * dnvecdeta)
+        c(w) * cbind(dldnvec * dnvecdeta)
     }), list( .link = link ))),
     weight = eval(substitute(expression({
         d2ldnvec2 <- trigamma(nvec+1) - trigamma(nvec-y+1)
         # Note: if y == 0 then d2ldnvec2 is 0. Below is a quick fix.
         d2ldnvec2[y == 0] = -sqrt(.Machine$double.eps)
-        wz = -w * dnvecdeta^2 * d2ldnvec2
+        wz = -c(w) * dnvecdeta^2 * d2ldnvec2
         wz
     }), list( .link = link ))))
 }
@@ -1031,64 +1032,78 @@ my.dbinom <- function(x,
 
 
  dbetabin.ab = function(x, size, shape1, shape2, log = FALSE) {
-    log.arg = log
-    rm(log)
-      if (!is.Numeric(x)) stop("bad input for argument 'x'")
-      if (!is.Numeric(size, posit=TRUE, integer=TRUE))
-          stop("bad input for argument 'size'")
-      if (!is.Numeric(shape1, pos=TRUE)) stop("bad input for argument 'shape1'")
-      if (!is.Numeric(shape2, pos=TRUE)) stop("bad input for argument 'shape2'")
-
-    LLL = max(length(x), length(size), length(shape1), length(shape2))
-    if (length(x)      != LLL) x      = rep(x,      len=LLL)
-    if (length(size)   != LLL) size   = rep(size,   len=LLL)
-    if (length(shape1) != LLL) shape1 = rep(shape1, len=LLL)
-    if (length(shape2) != LLL) shape2 = rep(shape2, len=LLL)
-
-    answer = 0 * x
-    ok = (round(x) == x) & (x >= 0) & (x <= size)
-    answer[ok] = lchoose(size[ok], x[ok]) +
-                 lbeta(shape1[ok]+x[ok], shape2[ok]+size[ok]-x[ok]) -
-                 lbeta(shape1[ok], shape2[ok])
-    if (log.arg) {
-        answer[!ok] = log(0.0)
-    } else {
-        answer[ok] = exp(answer[ok])
-    }
-    answer
+  log.arg = log
+  rm(log)
+  if (!is.Numeric(x))
+    stop("bad input for argument 'x'")
+  if (!is.Numeric(size, integer = TRUE))
+    stop("bad input for argument 'size'")
+  if (!is.Numeric(shape1, pos = TRUE))
+    stop("bad input for argument 'shape1'")
+  if (!is.Numeric(shape2, pos = TRUE))
+    stop("bad input for argument 'shape2'")
+
+  LLL = max(length(x), length(size), length(shape1), length(shape2))
+  if (length(x)      != LLL) x      = rep(x,      len = LLL)
+  if (length(size)   != LLL) size   = rep(size,   len = LLL)
+  if (length(shape1) != LLL) shape1 = rep(shape1, len = LLL)
+  if (length(shape2) != LLL) shape2 = rep(shape2, len = LLL)
+
+  answer = 0 * x
+  ok = (round(x) == x) & (x >= 0) & (x <= size)
+  answer[ok] = lchoose(size[ok], x[ok]) +
+               lbeta(shape1[ok] + x[ok], shape2[ok] + size[ok] - x[ok]) -
+               lbeta(shape1[ok], shape2[ok])
+  if (log.arg) {
+    answer[!ok] = log(0.0)
+  } else {
+    answer[ok] = exp(answer[ok])
+  }
+  answer
 }
 
 
- pbetabin.ab = function(q, size, shape1, shape2, log.p=FALSE) {
-  if (!is.Numeric(q)) stop("bad input for argument 'q'")
-  if (!is.Numeric(size, posit=TRUE, integer=TRUE))
-      stop("bad input for argument 'size'")
-  if (!is.Numeric(shape1, pos=TRUE)) stop("bad input for argument 'shape1'")
-  if (!is.Numeric(shape2, pos=TRUE)) stop("bad input for argument 'shape2'")
+ pbetabin.ab = function(q, size, shape1, shape2, log.p = FALSE) {
+
+  if (!is.Numeric(q))
+    stop("bad input for argument 'q'")
+  if (!is.Numeric(size, integer = TRUE))
+    stop("bad input for argument 'size'")
+  if (!is.Numeric(shape1, pos = TRUE))
+    stop("bad input for argument 'shape1'")
+  if (!is.Numeric(shape2, pos = TRUE))
+    stop("bad input for argument 'shape2'")
   LLL = max(length(q), length(size), length(shape1), length(shape2))
 
-  if (length(q)       != LLL) q      = rep(q,      len=LLL)
-  if (length(shape1)  != LLL) shape1 = rep(shape1, len=LLL)
-  if (length(shape1)  != LLL) shape2 = rep(shape2, len=LLL)
-  if (length(size)    != LLL) size   = rep(size,   len=LLL);
+  if (length(q)       != LLL) q      = rep(q,      len = LLL)
+  if (length(shape1)  != LLL) shape1 = rep(shape1, len = LLL)
+  if (length(shape1)  != LLL) shape2 = rep(shape2, len = LLL)
+  if (length(size)    != LLL) size   = rep(size,   len = LLL);
 
   ans = q * 0  # Retains names(q)
-  if (max(abs(size  -  size[1])) < 1.0e-08 &&
-      max(abs(shape1-shape1[1])) < 1.0e-08 &&
-      max(abs(shape2-shape2[1])) < 1.0e-08) {
-      qstar = floor(q)
-      temp = if (max(qstar) >= 0) dbetabin.ab(0:max(qstar), 
-             size=size[1], shape1=shape1[1], shape2=shape2[1]) else 0*qstar
+  if (max(abs(size   -   size[1])) < 1.0e-08 &&
+      max(abs(shape1 - shape1[1])) < 1.0e-08 &&
+      max(abs(shape2 - shape2[1])) < 1.0e-08) {
+    qstar = floor(q)
+    temp = if (max(qstar) >= 0) {
+             dbetabin.ab(0:max(qstar), size = size[1], shape1 = shape1[1],
+                         shape2 = shape2[1])
+           } else {
+             0 * qstar
+           }
       unq = unique(qstar)
-      for (ii in unq) {
-          index = qstar == ii
-          ans[index] = if (ii >= 0) sum(temp[1:(1+ii)]) else 0
-      }
-  } else
-  for (ii in 1:LLL) {
+    for (ii in unq) {
+      index = qstar == ii
+      ans[index] = if (ii >= 0) sum(temp[1:(1+ii)]) else 0
+    }
+  } else {
+    for (ii in 1:LLL) {
       qstar = floor(q[ii])
-      ans[ii] = if (qstar >= 0) sum(dbetabin.ab(x=0:qstar, size=size[ii],
-                shape1=shape1[ii], shape2=shape2[ii])) else 0
+      ans[ii] = if (qstar >= 0) {
+                  sum(dbetabin.ab(x = 0:qstar, size = size[ii],
+                                  shape1 = shape1[ii], shape2 = shape2[ii]))
+                } else 0
+    }
   }
   if (log.p) log(ans) else ans
 }
@@ -1096,41 +1111,45 @@ my.dbinom <- function(x,
 
 
  rbetabin.ab = function(n, size, shape1, shape2) {
-      if (!is.Numeric(size, posit=TRUE, integer=TRUE))
-          stop("bad input for argument 'size'")
-      if (!is.Numeric(shape1, pos=TRUE)) stop("bad input for argument 'shape1'")
-      if (!is.Numeric(shape2, pos=TRUE)) stop("bad input for argument 'shape2'")
-
-    use.n = if ((length.n <- length(n)) > 1) length.n else
-            if (!is.Numeric(n, integ=TRUE, allow=1, posit=TRUE))
-                stop("bad input for argument 'n'") else n
-    if (length(size)   != use.n) size   = rep(size,   len=use.n)
-    if (length(shape1) != use.n) shape1 = rep(shape1, len=use.n)
-    if (length(shape2) != use.n) shape2 = rep(shape2, len=use.n)
-    rbinom(n=use.n, size=size, prob=rbeta(n=n, shape1=shape1, shape2=shape2))
+  if (!is.Numeric(size, integer = TRUE))
+    stop("bad input for argument 'size'")
+  if (!is.Numeric(shape1, pos = TRUE))
+    stop("bad input for argument 'shape1'")
+  if (!is.Numeric(shape2, pos = TRUE))
+    stop("bad input for argument 'shape2'")
+
+  use.n = if ((length.n <- length(n)) > 1) length.n else
+          if (!is.Numeric(n, integ = TRUE, allow = 1, posit = TRUE))
+              stop("bad input for argument 'n'") else n
+  if (length(size)   != use.n) size   = rep(size,   len = use.n)
+  if (length(shape1) != use.n) shape1 = rep(shape1, len = use.n)
+  if (length(shape2) != use.n) shape2 = rep(shape2, len = use.n)
+  rbinom(n = use.n, size = size,
+         prob = rbeta(n = use.n, shape1 = shape1, shape2 = shape2))
 }
 
 
+
  dbetabin = function(x, size, prob, rho, log = FALSE) {
-    dbetabin.ab(x=x, size=size, shape1=prob*(1-rho)/rho,
-                shape2=(1-prob)*(1-rho)/rho, log=log)
+    dbetabin.ab(x=x, size = size, shape1 = prob*(1-rho)/rho,
+                shape2 = (1-prob)*(1-rho)/rho, log = log)
 }
 
  pbetabin = function(q, size, prob, rho, log.p = FALSE) {
-    pbetabin.ab(q=q, size=size, shape1=prob*(1-rho)/rho,
-                shape2=(1-prob)*(1-rho)/rho, log.p=log.p)
+    pbetabin.ab(q = q, size = size, shape1 = prob*(1-rho)/rho,
+                shape2 = (1-prob)*(1-rho)/rho, log.p = log.p)
 }
 
  rbetabin = function(n, size, prob, rho) {
-    rbetabin.ab(n=n, size=size, shape1=prob*(1-rho)/rho,
-                shape2=(1-prob)*(1-rho)/rho)
+    rbetabin.ab(n = n, size = size, shape1 = prob*(1-rho)/rho,
+                shape2 = (1-prob)*(1-rho)/rho)
 }
 
 
  expected.betabin.ab = function(nvec, shape1, shape2, first) {
 
     NN = length(nvec)
-    ans = rep(0.0, len=NN)
+    ans = rep(0.0, len = NN)
     if (first) {
         for (ii in 1:NN) {
             temp639 = lbeta(shape1[ii], shape2[ii])
@@ -1153,32 +1172,32 @@ my.dbinom <- function(x,
 
 
 
-betabin.ab.control <- function(save.weight=TRUE, ...)
+betabin.ab.control <- function(save.weight = TRUE, ...)
 {
-    list(save.weight=save.weight)
+    list(save.weight = save.weight)
 }
 
 
 
 
  betabin.ab = function(lshape12 = "loge", earg = list(),
-                       i1 = 1, i2 = NULL, method.init = 1,
+                       i1 = 1, i2 = NULL, imethod = 1,
                        shrinkage.init = 0.95, nsimEIM = NULL, zero = NULL) {
     if (mode(lshape12) != "character" && mode(lshape12) != "name")
         lshape12 = as.character(substitute(lshape12))
-    if (!is.Numeric(i1, positive=TRUE)) stop("bad input for argument 'i1'")
-    if (length(i2) && !is.Numeric(i2, pos=TRUE))
+    if (!is.Numeric(i1, positive = TRUE)) stop("bad input for argument 'i1'")
+    if (length(i2) && !is.Numeric(i2, pos = TRUE))
         stop("bad input for argument 'i2'")
     if (!is.list(earg)) earg = list()
     if (!is.null(nsimEIM)) {
-        if (!is.Numeric(nsimEIM, allow=1, integ=TRUE))
+        if (!is.Numeric(nsimEIM, allow=1, integ = TRUE))
             stop("bad input for argument 'nsimEIM'")
         if (nsimEIM <= 10)
             warning("'nsimEIM' should be an integer greater than 10, say")
     }
-    if (!is.Numeric(method.init, allow=1, integ=TRUE, posit=TRUE) ||
-       method.init > 3)
-        stop("argument 'method.init' must be 1, 2 or 3")
+    if (!is.Numeric(imethod, allow=1, integ = TRUE, posit = TRUE) ||
+       imethod > 3)
+        stop("argument 'imethod' must be 1, 2 or 3")
 
     new("vglmff",
     blurb = c("Beta-binomial model\n",
@@ -1205,8 +1224,8 @@ betabin.ab.control <- function(save.weight=TRUE, ...)
         if (length(mustart.orig))
           mustart = mustart.orig  # Retain it if inputted
         predictors.names =
-             c(namesof("shape1", .lshape12, earg = .earg, tag=FALSE),
-               namesof("shape2", .lshape12, earg = .earg, tag=FALSE))
+             c(namesof("shape1", .lshape12, earg = .earg, tag = FALSE),
+               namesof("shape2", .lshape12, earg = .earg, tag = FALSE))
 
         if (!length(etastart)) {
 
@@ -1218,9 +1237,9 @@ betabin.ab.control <- function(save.weight=TRUE, ...)
                        rep( .i2, len = n)
                      } else if (length(mustart.orig)) {
                          shape1 * (1 / mustart.use - 1)
-                     } else if ( .method.init == 1) {
+                     } else if ( .imethod == 1) {
                          shape1 * (1 / weighted.mean(y, w)  - 1)
-                     } else if ( .method.init == 2) {
+                     } else if ( .imethod == 2) {
                          temp777 = .sinit * weighted.mean(y, w) + (1- .sinit) * y
                          shape1 * (1 / temp777 - 1)
                      } else {
@@ -1238,7 +1257,7 @@ betabin.ab.control <- function(save.weight=TRUE, ...)
         }
     }), list( .lshape12 = lshape12, .earg = earg, .i1 = i1, .i2 = i2,
               .nsimEIM = nsimEIM,
-              .method.init = method.init, .sinit = shrinkage.init ))),
+              .imethod = imethod, .sinit = shrinkage.init ))),
     inverse = eval(substitute(function(eta, extra = NULL) {
         shape1 = eta2theta(eta[,1], .lshape12, earg = .earg)
         shape2 = eta2theta(eta[,2], .lshape12, earg = .earg)
@@ -1254,7 +1273,7 @@ betabin.ab.control <- function(save.weight=TRUE, ...)
         misc$nsimEIM = .nsimEIM
     }), list( .lshape12 = lshape12, .earg = earg, .nsimEIM = nsimEIM ))),
     loglikelihood = eval(substitute(
-        function(mu,y,w,residuals=FALSE,eta, extra = NULL) {
+        function(mu,y,w,residuals = FALSE,eta, extra = NULL) {
         ycounts = if (is.numeric(extra$orig.w)) y * w / extra$orig.w else
                   y * w # Convert proportions to counts
 
@@ -1311,12 +1330,12 @@ betabin.ab.control <- function(save.weight=TRUE, ...)
             wz * (if (is.numeric(extra$orig.w)) extra$orig.w else 1)
         } else {
             run.varcov = 0
-            ind1 = iam(NA, NA, M=M, both=TRUE, diag=TRUE)
+            ind1 = iam(NA, NA, M = M, both = TRUE, diag = TRUE)
             dthetas.detas = cbind(dshape1.deta, dshape2.deta)
 
             for (ii in 1:( .nsimEIM )) {
-                ysim = rbetabin.ab(n=n, size=nvec, shape1=shape1,
-                              shape2=shape2)
+                ysim = rbetabin.ab(n = n, size=nvec, shape1 = shape1,
+                              shape2 = shape2)
                 dl.dshape1 = digamma(shape1+ysim) -
                              digamma(shape1+shape2+nvec) -
                              digamma(shape1) + digamma(shape1+shape2)
@@ -1340,8 +1359,8 @@ betabin.ab.control <- function(save.weight=TRUE, ...)
 
 
 
- betageometric = function(lprob="logit", lshape="loge",
-                          eprob=list(), eshape=list(),
+ betageometric = function(lprob = "logit", lshape = "loge",
+                          eprob = list(), eshape = list(),
                           iprob = NULL, ishape = 0.1,
                           moreSummation=c(2,100), tolerance=1.0e-10, zero = NULL)
 {
@@ -1349,11 +1368,11 @@ betabin.ab.control <- function(save.weight=TRUE, ...)
         lprob = as.character(substitute(lprob))
     if (mode(lshape) != "character" && mode(lshape) != "name")
         lshape = as.character(substitute(lshape))
-    if (!is.Numeric(ishape, positive=TRUE))
+    if (!is.Numeric(ishape, positive = TRUE))
         stop("bad input for argument 'ishape'")
-    if (!is.Numeric(moreSummation, positive=TRUE, allow=2, integ=TRUE))
+    if (!is.Numeric(moreSummation, positive = TRUE, allow=2, integ = TRUE))
         stop("bad input for argument 'moreSummation'")
-    if (!is.Numeric(tolerance, positive=TRUE, allow=1) ||
+    if (!is.Numeric(tolerance, positive = TRUE, allow=1) ||
         1.0-tolerance >= 1.0)
         stop("bad input for argument 'tolerance'")
     if (!is.list(eprob)) eprob = list()
@@ -1369,12 +1388,12 @@ betabin.ab.control <- function(save.weight=TRUE, ...)
     initialize = eval(substitute(expression({
         eval(geometric()@initialize)
         predictors.names =
-             c(namesof("prob",  .lprob,  earg = .eprob,  tag=FALSE),
-               namesof("shape", .lshape, earg = .eshape, short=FALSE))
+             c(namesof("prob",  .lprob,  earg = .eprob,  tag = FALSE),
+               namesof("shape", .lshape, earg = .eshape, short = FALSE))
         if (length( .iprob))
-            prob.init = rep( .iprob, len=n)
+            prob.init = rep( .iprob, len = n)
         if (!length(etastart) || ncol(cbind(etastart)) != 2) {
-            shape.init = rep( .ishape, len=n)
+            shape.init = rep( .ishape, len = n)
             etastart = cbind(theta2eta(prob.init,  .lprob,  earg = .eprob),
                              theta2eta(shape.init, .lshape, earg = .eshape))
         }
@@ -1403,7 +1422,7 @@ betabin.ab.control <- function(save.weight=TRUE, ...)
               .eprob = eprob, .eshape = eshape,
               .moreSummation = moreSummation, .zero = zero ))),
     loglikelihood = eval(substitute(
-        function(mu,y,w,residuals=FALSE,eta, extra = NULL) {
+        function(mu,y,w,residuals = FALSE,eta, extra = NULL) {
         prob  = eta2theta(eta[,1], .lprob, earg = .eprob)
         shape = eta2theta(eta[,2], .lshape, earg = .eshape)
         ans = log(prob)
@@ -1443,7 +1462,8 @@ betabin.ab.control <- function(save.weight=TRUE, ...)
                               (ii-1)/(1+(ii-1)*shape[index])
         }
         dl.dshape = dl.dshape - (y+1 -1)/(1+(y+1 -1)*shape)
-        w * cbind(dl.dprob * dprob.deta, dl.dshape * dshape.deta)
+        c(w) * cbind(dl.dprob * dprob.deta,
+                     dl.dshape * dshape.deta)
     }), list( .lprob = lprob, .lshape = lshape,
               .eprob = eprob, .eshape = eshape ))),
     weight = eval(substitute(expression({
@@ -1452,7 +1472,7 @@ betabin.ab.control <- function(save.weight=TRUE, ...)
         moresum = .moreSummation
         maxsummation = round(maxy * moresum[1] + moresum[2])
         for (ii in 3:maxsummation) {
-            temp7 = 1 - pbetageom(q=ii-1-1, shape1=shape1, shape2=shape2)
+            temp7 = 1 - pbetageom(q=ii-1-1, shape1 = shape1, shape2 = shape2)
             denom1 = (1-prob+(ii-2)*shape)^2
             denom2 = (1+(ii-2)*shape)^2
             wz[,iam(1,1,M)] = wz[,iam(1,1,M)] + temp7 / denom1
@@ -1462,7 +1482,7 @@ betabin.ab.control <- function(save.weight=TRUE, ...)
             if (max(temp7) < .tolerance ) break;
         }
         ii = 2
-        temp7 = 1 - pbetageom(q=ii-1-1, shape1=shape1, shape2=shape2)
+        temp7 = 1 - pbetageom(q=ii-1-1, shape1 = shape1, shape2 = shape2)
         denom1 = (1-prob+(ii-2)*shape)^2
         denom2 = (1+(ii-2)*shape)^2
         wz[,iam(1,1,M)] = wz[,iam(1,1,M)] + temp7 / denom1
@@ -1470,17 +1490,18 @@ betabin.ab.control <- function(save.weight=TRUE, ...)
         wz[,iam(1,1,M)] = wz[,iam(1,1,M)] * dprob.deta^2
         wz[,iam(2,2,M)] = wz[,iam(2,2,M)] * dshape.deta^2
         wz[,iam(2,1,M)] = wz[,iam(2,1,M)] * dprob.deta * dshape.deta
-        w * wz
-    }), list( .lprob = lprob, .lshape = lshape, .moreSummation = moreSummation,
+        c(w) * wz
+    }), list( .lprob = lprob, .lshape = lshape,
               .eprob = eprob, .eshape = eshape,
+              .moreSummation = moreSummation,
               .tolerance = tolerance ))))
 }
 
 
 
 
-seq2binomial = function(lprob1="logit", lprob2="logit",
-                        eprob1=list(), eprob2=list(),
+seq2binomial = function(lprob1 = "logit", lprob2 = "logit",
+                        eprob1 = list(), eprob2 = list(),
                         iprob1 = NULL, iprob2 = NULL,
                         zero = NULL)
 {
@@ -1489,10 +1510,10 @@ seq2binomial = function(lprob1="logit", lprob2="logit",
     if (mode(lprob2) != "character" && mode(lprob2) != "name")
         lprob2 = as.character(substitute(lprob2))
     if (length(iprob1) &&
-       (!is.Numeric(iprob1, positive=TRUE) || max(iprob1) >= 1))
+       (!is.Numeric(iprob1, positive = TRUE) || max(iprob1) >= 1))
         stop("bad input for argument 'iprob1'")
     if (length(iprob2) &&
-       (!is.Numeric(iprob2, positive=TRUE) || max(iprob2) >= 1))
+       (!is.Numeric(iprob2, positive = TRUE) || max(iprob2) >= 1))
         stop("bad input for argument 'iprob2'")
     if (!is.list(eprob1)) eprob1 = list()
     if (!is.list(eprob2)) eprob2 = list()
@@ -1523,12 +1544,12 @@ seq2binomial = function(lprob1="logit", lprob2="logit",
         if (any(abs(svector - round(svector)) > 1.0e-8))
        warning("number of successes in column two should be integer-valued")
         predictors.names =
-            c(namesof("prob1", .lprob1,earg= .eprob1, tag=FALSE),
-              namesof("prob2", .lprob2,earg= .eprob2, tag=FALSE))
-        prob1.init = if (is.Numeric( .iprob1)) rep( .iprob1, len=n) else
-                     rep(weighted.mean(y[,1], w=w), len=n)
-        prob2.init = if (is.Numeric( .iprob2)) rep( .iprob2, len=n) else
-                     rep(weighted.mean(y[,2], w=w*y[,1]), len=n)
+            c(namesof("prob1", .lprob1,earg= .eprob1, tag = FALSE),
+              namesof("prob2", .lprob2,earg= .eprob2, tag = FALSE))
+        prob1.init = if (is.Numeric( .iprob1)) rep( .iprob1, len = n) else
+                     rep(weighted.mean(y[,1], w=w), len = n)
+        prob2.init = if (is.Numeric( .iprob2)) rep( .iprob2, len = n) else
+                     rep(weighted.mean(y[,2], w=w*y[,1]), len = n)
         if (!length(etastart)) {
             etastart = cbind(theta2eta(prob1.init, .lprob1, earg = .eprob1),
                              theta2eta(prob2.init, .lprob2, earg = .eprob2))
@@ -1551,7 +1572,7 @@ seq2binomial = function(lprob1="logit", lprob2="logit",
               .eprob1 = eprob1, .eprob2 = eprob2,
               .zero = zero ))),
     loglikelihood = eval(substitute(
-        function(mu,y,w,residuals=FALSE,eta, extra = NULL) {
+        function(mu,y,w,residuals = FALSE,eta, extra = NULL) {
         prob1 = eta2theta(eta[,1], .lprob1, earg = .eprob1)
         prob2 = eta2theta(eta[,2], .lprob2, earg = .eprob2)
         smallno = 100 * .Machine$double.eps
@@ -1592,7 +1613,7 @@ seq2binomial = function(lprob1="logit", lprob2="logit",
         wz = matrix(0, n, M)
         wz[,iam(1,1,M)] = (dprob1.deta^2) / (prob1 * (1-prob1))
         wz[,iam(2,2,M)] = (dprob2.deta^2) * prob1 / (prob2 * (1-prob2))
-        w * wz
+        c(w) * wz
     }), list( .lprob1 = lprob1, .lprob2 = lprob2,
               .eprob1 = eprob1, .eprob2 = eprob2 ))))
 }
@@ -1609,9 +1630,9 @@ zipebcom   = function(lmu12 = "cloglog", lphi12 = "logit", loratio = "loge",
         lphi12 = as.character(substitute(lphi12))
     if (mode(loratio) != "character" && mode(loratio) != "name")
         loratio = as.character(substitute(loratio))
-    if (!is.Numeric(tol, positive=TRUE, allow=1) || tol > 0.1)
+    if (!is.Numeric(tol, positive = TRUE, allow=1) || tol > 0.1)
         stop("bad input for argument 'tol'") 
-    if (!is.Numeric(addRidge, allow=1, posit=TRUE) || addRidge > 0.5)
+    if (!is.Numeric(addRidge, allow=1, posit = TRUE) || addRidge > 0.5)
         stop("bad input for argument 'addRidge'") 
     if (!is.list(emu12)) emu12  = list()
     if (!is.list(ephi12)) ephi12  = list()
@@ -1646,11 +1667,11 @@ zipebcom   = function(lmu12 = "cloglog", lphi12 = "logit", loratio = "loge",
 
         if (!length(etastart)) {
             pstar.init = ((mu[,3]+mu[,4]) + (mu[,2]+mu[,4])) / 2
-            phi.init = if (length(.iphi12)) rep(.iphi12, len=n) else
+            phi.init = if (length(.iphi12)) rep(.iphi12, len = n) else
                 min(propY1.eq.0 * 0.95, propY2.eq.0 * 0.95, pstar.init/1.5)
-            oratio.init = if (length( .ioratio)) rep( .ioratio, len=n) else
+            oratio.init = if (length( .ioratio)) rep( .ioratio, len = n) else
                       mu[,4]*mu[,1]/(mu[,2]*mu[,3])
-            mu12.init = if (length(.imu12)) rep(.imu12, len=n) else
+            mu12.init = if (length(.imu12)) rep(.imu12, len = n) else
                 pstar.init / (1-phi.init)
             etastart = cbind(
                 theta2eta(mu12.init,   .lmu12,   earg = .emu12),
@@ -1731,7 +1752,9 @@ zipebcom   = function(lmu12 = "cloglog", lphi12 = "logit", loratio = "loge",
         dthetas.detas = cbind(dtheta.deta(A1vec,  .lmu12,   earg = .emu12),
                               dtheta.deta(phivec, .lphi12,  earg = .ephi12),
                               dtheta.deta(oratio, .loratio, earg = .eoratio))
-        w * cbind(dl.dmu1, dl.dphi1, dl.doratio) * dthetas.detas
+        c(w) * cbind(dl.dmu1,
+                     dl.dphi1,
+                     dl.doratio) * dthetas.detas
     }), list( .lmu12 = lmu12, .lphi12 = lphi12, .loratio = loratio,
               .emu12 = emu12, .ephi12 = ephi12, .eoratio = eoratio ))),
     weight = eval(substitute(expression({
@@ -1752,7 +1775,7 @@ zipebcom   = function(lmu12 = "cloglog", lphi12 = "logit", loratio = "loge",
         wz[,iam(3,3,M)] = alternwz33
 
         wz[,1:2] = wz[,1:2] * (1 + .addRidge)
-        w * wz
+        c(w) * wz
     }), list( .addRidge = addRidge ))))
 }
 
@@ -1964,12 +1987,12 @@ if (FALSE)
 
 
  binom2.Rho = function(rho = 0, imu1 = NULL, imu2 = NULL, 
-                       exchangeable=FALSE, nsimEIM = NULL)
+                       exchangeable = FALSE, nsimEIM = NULL)
 {
     lmu12 = "probit"
     emu12 = list()
     if (is.Numeric(nsimEIM)) {
-        if (!is.Numeric(nsimEIM, allow=1, integ=TRUE))
+        if (!is.Numeric(nsimEIM, allow=1, integ = TRUE))
             stop("bad input for argument 'nsimEIM'")
         if (nsimEIM <= 100)
             warning("'nsimEIM' should be an integer greater than 100")
@@ -1995,9 +2018,9 @@ if (FALSE)
              save.weight <- control$save.weight <- FALSE
         }
         if (is.null(etastart)) {
-            mu1.init= if (is.Numeric(.imu1)) rep(.imu1, len=n) else
+            mu1.init= if (is.Numeric(.imu1)) rep(.imu1, len = n) else
                       mu[,3] + mu[,4]
-            mu2.init= if (is.Numeric(.imu2)) rep(.imu2, len=n) else
+            mu2.init= if (is.Numeric(.imu2)) rep(.imu2, len = n) else
                       mu[,2] + mu[,4]
             etastart = cbind(theta2eta(mu1.init, .lmu12, earg = .emu12),
                              theta2eta(mu2.init, .lmu12, earg = .emu12))
@@ -2055,8 +2078,8 @@ if (FALSE)
         ABmat = (eta[,1:2] - rhovec*eta[,2:1]) / sqrt(1-rhovec^2)
         PhiA = pnorm(ABmat[,1])
         PhiB = pnorm(ABmat[,2])
-        onemPhiA = pnorm(ABmat[,1], lower.tail=FALSE)
-        onemPhiB = pnorm(ABmat[,2], lower.tail=FALSE)
+        onemPhiA = pnorm(ABmat[,1], lower.tail = FALSE)
+        onemPhiB = pnorm(ABmat[,2], lower.tail = FALSE)
 
         smallno = 1000 * .Machine$double.eps
         p00[p00 < smallno] = smallno
@@ -2071,7 +2094,7 @@ if (FALSE)
         dprob2.deta = dtheta.deta(pmargin[,2], .lmu12, earg = .emu12)
         dthetas.detas = cbind(dprob1.deta, dprob2.deta)
 
-        w * cbind(dl.dprob1, dl.dprob2) * dthetas.detas
+        c(w) * cbind(dl.dprob1, dl.dprob2) * dthetas.detas
     }), list( .lmu12 = lmu12, .emu12 = emu12, .rho = rho ))),
     weight = eval(substitute(expression({
         if (is.null( .nsimEIM)) {
@@ -2085,10 +2108,10 @@ if (FALSE)
             wz[,iam(1,2,M)] = d2l.dprob1prob2 * dprob1.deta * dprob2.deta
         } else {
             run.varcov = 0
-            ind1 = iam(NA, NA, M=M, both=TRUE, diag=TRUE)
+            ind1 = iam(NA, NA, M = M, both = TRUE, diag = TRUE)
             for (ii in 1:( .nsimEIM )) {
-                ysim = rbinom2.rho(n=n, mu1=pmargin[,1], mu2=pmargin[,2],
-                                   twoCols=FALSE, rho=rhovec)
+                ysim = rbinom2.rho(n = n, mu1=pmargin[,1], mu2=pmargin[,2],
+                                   twoCols = FALSE, rho=rhovec)
                 dl.dprob1 = PhiB * (ysim[,4]/p11-ysim[,2]/p01) +
                             onemPhiB * (ysim[,3]/p10-ysim[,1]/p00)
                 dl.dprob2 = PhiA * (ysim[,4]/p11-ysim[,3]/p10) +
@@ -2105,7 +2128,7 @@ if (FALSE)
     
             wz = wz * dthetas.detas[,ind1$row] * dthetas.detas[,ind1$col]
         }
-        w * wz
+        c(w) * wz
     }), list( .nsimEIM = nsimEIM ))))
 }
 
diff --git a/R/family.bivariate.R b/R/family.bivariate.R
index b5377cf..428caef 100644
--- a/R/family.bivariate.R
+++ b/R/family.bivariate.R
@@ -12,25 +12,25 @@
 
 
 
-bilogistic4.control <- function(save.weight=TRUE, ...)
+bilogistic4.control <- function(save.weight = TRUE, ...)
 {
     list(save.weight=save.weight)
 }
 
- bilogistic4 = function(llocation="identity",
-                        lscale="loge",
-                        iloc1=NULL, iscale1=NULL,
-                        iloc2=NULL, iscale2=NULL,
-                        method.init=1, zero=NULL) {
+ bilogistic4 = function(llocation = "identity",
+                        lscale = "loge",
+                        iloc1 = NULL, iscale1 = NULL,
+                        iloc2 = NULL, iscale2 = NULL,
+                        imethod = 1, zero = NULL) {
     if (mode(llocation) != "character" && mode(llocation) != "name")
         llocation = as.character(substitute(llocation))
     if (mode(lscale) != "character" && mode(lscale) != "name")
         lscale = as.character(substitute(lscale))
-    if (!is.Numeric(method.init, allow=1, integ=TRUE, posit=TRUE) ||
-       method.init > 2) stop("method.init must be 1 or 2")
+    if (!is.Numeric(imethod, allow = 1, integ = TRUE, posit = TRUE) ||
+       imethod > 2) stop("imethod must be 1 or 2")
 
     new("vglmff",
-    blurb=c("Bivariate logistic distribution\n\n",
+    blurb = c("Bivariate logistic distribution\n\n",
             "Link:    ",
             namesof("location1", llocation), ", ",
             namesof("scale1", lscale), ", ",
@@ -38,75 +38,77 @@ bilogistic4.control <- function(save.weight=TRUE, ...)
             namesof("scale2", lscale),
             "\n", "\n",
             "Means:     location1, location2"),
-    constraints=eval(substitute(expression({
+    constraints = eval(substitute(expression({
         constraints = cm.zero.vgam(constraints, x, .zero, M)
-    }), list(.zero=zero))),
-    initialize=eval(substitute(expression({
+    }), list( .zero = zero))),
+    initialize = eval(substitute(expression({
         if (!is.matrix(y) || ncol(y) != 2)
-            stop("the response must be a 2 column matrix") 
+            stop("the response must be a 2-column matrix") 
+
         predictors.names = c(namesof("location1", .llocation, tag= FALSE),
                              namesof("scale1", .lscale, tag= FALSE),
                              namesof("location2", .llocation, tag= FALSE),
                              namesof("scale2", .lscale, tag= FALSE))
+
         if (!length(etastart)) {
-            if ( .method.init == 1) {
-                location.init1 = y[,1]
-                scale.init1 = sqrt(3) * sd(y[,1]) / pi
+            if ( .imethod == 1) {
+                location.init1 = y[, 1]
+                scale.init1 = sqrt(3) * sd(y[, 1]) / pi
                 location.init2 = y[,2]
                 scale.init2 = sqrt(3) * sd(y[,2]) / pi
             } else {
-                location.init1 = median(rep(y[,1], w))
+                location.init1 = median(rep(y[, 1], w))
                 location.init2 = median(rep(y[,2], w))
-                scale.init1=sqrt(3)*sum(w*(y[,1]-location.init1)^2)/(sum(w)*pi)
+                scale.init1=sqrt(3)*sum(w*(y[, 1]-location.init1)^2)/(sum(w)*pi)
                 scale.init2=sqrt(3)*sum(w*(y[,2]-location.init2)^2)/(sum(w)*pi)
             }
-            loc1.init = if (length(.iloc1)) rep(.iloc1, len=n) else
-                             rep(location.init1, len=n)
-            loc2.init = if (length(.iloc2)) rep(.iloc2, len=n) else
-                             rep(location.init2, len=n)
-            scale1.init = if (length(.iscale1)) rep(.iscale1, len=n) else
-                             rep(1, len=n)
-            scale2.init = if (length(.iscale2)) rep(.iscale2, len=n) else
-                             rep(1, len=n)
-            if (.llocation=="loge") location.init1 = abs(location.init1) + 0.001
-            if (.llocation=="loge") location.init2 = abs(location.init2) + 0.001
+            loc1.init = if (length(.iloc1)) rep(.iloc1, len = n) else
+                             rep(location.init1, len = n)
+            loc2.init = if (length(.iloc2)) rep(.iloc2, len = n) else
+                             rep(location.init2, len = n)
+            scale1.init = if (length(.iscale1)) rep(.iscale1, len = n) else
+                             rep(1, len = n)
+            scale2.init = if (length(.iscale2)) rep(.iscale2, len = n) else
+                             rep(1, len = n)
+            if (.llocation == "loge") location.init1 = abs(location.init1) + 0.001
+            if (.llocation == "loge") location.init2 = abs(location.init2) + 0.001
             etastart = cbind(theta2eta(location.init1, .llocation),
                              theta2eta(scale1.init, .lscale),
                              theta2eta(location.init2, .llocation),
                              theta2eta(scale2.init, .lscale))
         }
-    }), list(.method.init=method.init, .iloc1=iloc1, .iloc2=iloc2,
+    }), list(.imethod = imethod, .iloc1=iloc1, .iloc2=iloc2,
              .llocation=llocation,
              .iscale1=iscale1, .iscale2=iscale2, .lscale=lscale))),
-    inverse=function(eta, extra=NULL) {
-        cbind(eta[,1], eta[,2])
+    inverse=function(eta, extra = NULL) {
+        cbind(eta[, 1], eta[,2])
     },
-    last=eval(substitute(expression({
+    last = eval(substitute(expression({
         misc$link = c(location1= .llocation, scale1= .lscale,
                       location2= .llocation, scale2= .lscale)
         misc$expected = FALSE
         misc$BFGS = TRUE
     }), list(.lscale=lscale, .llocation=llocation))),
-    loglikelihood=eval(substitute(
-        function(mu,y,w,residuals= FALSE,eta, extra=NULL) {
-        loc1 = eta2theta(eta[,1], .llocation)
+    loglikelihood = eval(substitute(
+        function(mu,y,w,residuals= FALSE,eta, extra = NULL) {
+        loc1 = eta2theta(eta[, 1], .llocation)
         Scale1 = eta2theta(eta[,2], .lscale)
         loc2 = eta2theta(eta[,3], .llocation)
         Scale2 = eta2theta(eta[,4], .lscale)
-        zedd1 = (y[,1]-loc1) / Scale1
+        zedd1 = (y[, 1]-loc1) / Scale1
         zedd2 = (y[,2]-loc2) / Scale2
         if (residuals) stop("loglikelihood residuals not ",
                             "implemented yet") else
         sum(w * (-zedd1 - zedd2 - 3 * log1p(exp(-zedd1)+exp(-zedd2)) -
                  log(Scale1) - log(Scale2)))
     }, list(.lscale=lscale, .llocation=llocation))),
-    vfamily=c("bilogistic4"),
-    deriv=eval(substitute(expression({
-        loc1 = eta2theta(eta[,1], .llocation)
+    vfamily = c("bilogistic4"),
+    deriv = eval(substitute(expression({
+        loc1 = eta2theta(eta[, 1], .llocation)
         Scale1 = eta2theta(eta[,2], .lscale)
         loc2 = eta2theta(eta[,3], .llocation)
         Scale2 = eta2theta(eta[,4], .lscale)
-        zedd1 = (y[,1]-loc1) / Scale1
+        zedd1 = (y[, 1]-loc1) / Scale1
         zedd2 = (y[,2]-loc2) / Scale2
         ezedd1 = exp(-zedd1)
         ezedd2 = exp(-zedd2)
@@ -126,13 +128,13 @@ bilogistic4.control <- function(save.weight=TRUE, ...)
             etaold = etanew
             etanew = eta
         }
-        derivnew = w * cbind(dl.dloc1 * dloc1.deta,
-                             dl.dscale1 * dscale1.deta,
-                             dl.dloc2 * dloc2.deta,
-                             dl.dscale2 * dscale2.deta)
+        derivnew = c(w) * cbind(dl.dloc1 * dloc1.deta,
+                                dl.dscale1 * dscale1.deta,
+                                dl.dloc2 * dloc2.deta,
+                                dl.dscale2 * dscale2.deta)
         derivnew
     }), list(.lscale=lscale, .llocation=llocation))),
-    weight=eval(substitute(expression({
+    weight = eval(substitute(expression({
         if (iter == 1) {
             wznew = cbind(matrix(w, n, M), matrix(0, n, dimm(M)-M))
         } else {
@@ -147,27 +149,27 @@ bilogistic4.control <- function(save.weight=TRUE, ...)
 
 
 
-rbilogis4 = function(n, loc1=0, scale1=1, loc2=0, scale2=1) {
-    if (!is.Numeric(n, posit=TRUE,allow=1,integ=TRUE)) stop("bad input for 'n'")
-    if (!is.Numeric(scale1, posit=TRUE)) stop("bad input for 'scale1'")
-    if (!is.Numeric(scale2, posit=TRUE)) stop("bad input for 'scale2'")
+rbilogis4 = function(n, loc1=0, scale1 = 1, loc2=0, scale2 = 1) {
+    if (!is.Numeric(n, posit = TRUE,allow = 1,integ = TRUE)) stop("bad input for 'n'")
+    if (!is.Numeric(scale1, posit = TRUE)) stop("bad input for 'scale1'")
+    if (!is.Numeric(scale2, posit = TRUE)) stop("bad input for 'scale2'")
     y1 = rlogis(n, loc=loc1, scale=scale1)
     ezedd1 = exp(-(y1-loc1)/scale1)
     y2 = loc2 - scale2 * log(1/sqrt(runif(n) / (1 + ezedd1)^2) - 1 - ezedd1)
     cbind(y1, y2)
 }
 
-pbilogis4 = function(q1, q2, loc1=0, scale1=1, loc2=0, scale2=1) {
+pbilogis4 = function(q1, q2, loc1=0, scale1 = 1, loc2=0, scale2 = 1) {
     if (!is.Numeric(q1)) stop("bad input for 'q1'")
     if (!is.Numeric(q2)) stop("bad input for 'q2'")
-    if (!is.Numeric(scale1, posit=TRUE)) stop("bad input for 'scale1'")
-    if (!is.Numeric(scale2, posit=TRUE)) stop("bad input for 'scale2'")
+    if (!is.Numeric(scale1, posit = TRUE)) stop("bad input for 'scale1'")
+    if (!is.Numeric(scale2, posit = TRUE)) stop("bad input for 'scale2'")
 
 
     1 / (1 + exp(-(q1-loc1)/scale1) + exp(-(q2-loc2)/scale2))
 }
 
-dbilogis4 = function(x1, x2, loc1=0, scale1=1, loc2=0, scale2=1, log=FALSE) {
+dbilogis4 = function(x1, x2, loc1=0, scale1 = 1, loc2=0, scale2 = 1, log = FALSE) {
     if (!is.logical(log.arg <- log))
         stop("bad input for argument 'log'")
     rm(log)
@@ -175,9 +177,9 @@ dbilogis4 = function(x1, x2, loc1=0, scale1=1, loc2=0, scale2=1, log=FALSE) {
 
     L = max(length(x1), length(x2), length(loc1), length(loc2),
             length(scale1), length(scale2))
-    x1 = rep(x1, len=L); x2 = rep(x2, len=L);
-    loc1 = rep(loc1, len=L); loc2 = rep(loc2, len=L);
-    scale1 = rep(scale1, len=L); scale2 = rep(scale2, len=L);
+    x1 = rep(x1, len = L); x2 = rep(x2, len = L);
+    loc1 = rep(loc1, len = L); loc2 = rep(loc2, len = L);
+    scale1 = rep(scale1, len = L); scale2 = rep(scale2, len = L);
     zedd1 = (-(x1-loc1)/scale1)
     zedd2 = (-(x2-loc2)/scale2)
     logdensity = log(2) + log(zedd1) + log(zedd2) - log(scale1) - 
@@ -188,13 +190,13 @@ dbilogis4 = function(x1, x2, loc1=0, scale1=1, loc2=0, scale2=1, log=FALSE) {
 
 
 
- freund61 = function(la="loge",
-                     lap="loge",
-                     lb="loge",
-                     lbp="loge",
-                     ia=NULL, iap=NULL, ib=NULL, ibp=NULL,
-                     independent=FALSE,
-                     zero=NULL) {
+ freund61 = function(la = "loge",
+                     lap = "loge",
+                     lb = "loge",
+                     lbp = "loge",
+                     ia = NULL, iap = NULL, ib = NULL, ibp = NULL,
+                     independent = FALSE,
+                     zero = NULL) {
     if (mode(la) != "character" && mode(la) != "name")
         la = as.character(substitute(la))
     if (mode(lap) != "character" && mode(lap) != "name")
@@ -205,60 +207,60 @@ dbilogis4 = function(x1, x2, loc1=0, scale1=1, loc2=0, scale2=1, log=FALSE) {
         lbp = as.character(substitute(lbp))
 
     new("vglmff",
-    blurb=c("Freund (1961) Bivariate Exponential Distribution\n",
+    blurb = c("Freund (1961) bivariate exponential distribution\n",
            "Links:    ",
            namesof("a", la), ", ",
            namesof("ap", lap), ", ",
            namesof("b", lb), ", ",
            namesof("bp", lbp)),
-    constraints=eval(substitute(expression({
+    constraints = eval(substitute(expression({
         constraints <- cm.vgam(matrix(c(1,1,0,0, 0,0,1,1),M,2), x,
-                               .independent, constraints, intercept.apply=TRUE)
+                               .independent, constraints, intercept.apply = TRUE)
         constraints = cm.zero.vgam(constraints, x, .zero, M)
-    }), list(.independent=independent, .zero=zero))),
-    initialize=eval(substitute(expression({
+    }), list(.independent=independent, .zero = zero))),
+    initialize = eval(substitute(expression({
         if (!is.matrix(y) || ncol(y) != 2)
             stop("the response must be a 2 column matrix") 
-        predictors.names = c(namesof("a", .la, short=TRUE), 
-                             namesof("ap", .lap, short=TRUE), 
-                             namesof("b", .lb, short=TRUE), 
-                             namesof("bp", .lbp, short=TRUE))
-        extra$y1.lt.y2 = y[,1] < y[,2]
+        predictors.names = c(namesof("a", .la, short = TRUE), 
+                             namesof("ap", .lap, short = TRUE), 
+                             namesof("b", .lb, short = TRUE), 
+                             namesof("bp", .lbp, short = TRUE))
+        extra$y1.lt.y2 = y[, 1] < y[,2]
         if (!(arr <- sum(extra$y1.lt.y2)) || arr==n)
             stop("identifiability problem: either all y1<y2 or y2<y1")
         if (!length(etastart)) {
-            sumx = sum(y[extra$y1.lt.y2,1]); sumxp = sum(y[!extra$y1.lt.y2,1])
+            sumx = sum(y[extra$y1.lt.y2, 1]); sumxp = sum(y[!extra$y1.lt.y2, 1])
             sumy = sum(y[extra$y1.lt.y2,2]); sumyp = sum(y[!extra$y1.lt.y2,2])
             if (FALSE) { # Noise:
                 arr = min(arr + n/10, n*0.95)
                 sumx = sumx * 1.1; sumxp = sumxp * 1.2;
                 sumy = sumy * 1.2; sumyp = sumyp * 1.3;
             }
-            ainit  = if (length(.ia))  rep(.ia, len=n) else arr / (sumx + sumyp)
-            apinit = if (length(.iap)) rep(.iap,len=n) else (n-arr)/(sumxp-sumyp)
-            binit  = if (length(.ib))  rep(.ib, len=n) else (n-arr)/(sumx +sumyp)
-            bpinit = if (length(.ib))  rep(.ibp,len=n) else arr / (sumy - sumx)
-            etastart = cbind(theta2eta(rep(ainit,  len=n), .la),
-                             theta2eta(rep(apinit, len=n), .lap),
-                             theta2eta(rep(binit,  len=n), .lb),
-                             theta2eta(rep(bpinit, len=n), .lbp))
+            ainit  = if (length(.ia))  rep(.ia, len = n) else arr / (sumx + sumyp)
+            apinit = if (length(.iap)) rep(.iap,len = n) else (n-arr)/(sumxp-sumyp)
+            binit  = if (length(.ib))  rep(.ib, len = n) else (n-arr)/(sumx +sumyp)
+            bpinit = if (length(.ib))  rep(.ibp,len = n) else arr / (sumy - sumx)
+            etastart = cbind(theta2eta(rep(ainit,  len = n), .la),
+                             theta2eta(rep(apinit, len = n), .lap),
+                             theta2eta(rep(binit,  len = n), .lb),
+                             theta2eta(rep(bpinit, len = n), .lbp))
         }
     }), list(.la=la, .lap=lap, .lb=lb, .lbp=lbp, .ia=ia, .iap=iap,
              .ib=ib, .ibp=ibp))),
-    inverse=eval(substitute(function(eta, extra=NULL) {
-        alpha  = eta2theta(eta[,1], .la)
+    inverse = eval(substitute(function(eta, extra = NULL) {
+        alpha  = eta2theta(eta[, 1], .la)
         alphap = eta2theta(eta[,2], .lap)
         beta   = eta2theta(eta[,3], .lb)
         betap  = eta2theta(eta[,4], .lbp)
         cbind((alphap+beta) / (alphap*(alpha+beta)),
               (alpha+betap) / (betap*(alpha+beta)))
     }, list(.la=la, .lap=lap, .lb=lb, .lbp=lbp))),
-    last=eval(substitute(expression({
+    last = eval(substitute(expression({
         misc$link = c("a"= .la, "ap"= .lap, "b"= .lb, "bp"= .lbp)
     }), list(.la=la, .lap=lap, .lb=lb, .lbp=lbp))),
-    loglikelihood= eval(substitute(
-            function(mu, y, w, residuals = FALSE, eta, extra=NULL) {
-        alpha  = eta2theta(eta[,1], .la)
+    loglikelihood = eval(substitute(
+            function(mu, y, w, residuals = FALSE, eta, extra = NULL) {
+        alpha  = eta2theta(eta[, 1], .la)
         alphap = eta2theta(eta[,2], .lap)
         beta   = eta2theta(eta[,3], .lb)
         betap  = eta2theta(eta[,4], .lbp)
@@ -267,44 +269,44 @@ dbilogis4 = function(x1, x2, loc1=0, scale1=1, loc2=0, scale2=1, log=FALSE) {
             tmp88 = extra$y1.lt.y2
             ell1 = log(alpha[tmp88]) + log(betap[tmp88]) -
                    betap[tmp88] * y[tmp88,2] -
-                   (alpha+beta-betap)[tmp88] * y[tmp88,1]
+                   (alpha+beta-betap)[tmp88] * y[tmp88, 1]
             ell2 = log(beta[!tmp88]) + log(alphap[!tmp88]) -
-                   alphap[!tmp88] * y[!tmp88,1] -
+                   alphap[!tmp88] * y[!tmp88, 1] -
                    (alpha+beta-alphap)[!tmp88] * y[!tmp88,2]
         sum(w[tmp88] * ell1) + sum(w[!tmp88] * ell2) }
     }, list(.la=la, .lap=lap, .lb=lb, .lbp=lbp))),
-    vfamily=c("freund61"),
-    deriv=eval(substitute(expression({
+    vfamily = c("freund61"),
+    deriv = eval(substitute(expression({
         tmp88 = extra$y1.lt.y2
-        alpha  = eta2theta(eta[,1], .la)
+        alpha  = eta2theta(eta[, 1], .la)
         alphap = eta2theta(eta[,2], .lap)
         beta   = eta2theta(eta[,3], .lb)
         betap  = eta2theta(eta[,4], .lbp)
-        d1 = 1/alpha - y[,1]
+        d1 = 1/alpha - y[, 1]
         d1[!tmp88] = -y[!tmp88,2]
         d2 = 0 * alphap
-        d2[!tmp88] = 1/alphap[!tmp88] - y[!tmp88,1] + y[!tmp88,2]
-        d3 = -y[,1]
+        d2[!tmp88] = 1/alphap[!tmp88] - y[!tmp88, 1] + y[!tmp88,2]
+        d3 = -y[, 1]
         d3[!tmp88] = 1/beta[!tmp88] - y[!tmp88,2]
-        d4 = 1/betap - y[,2] + y[,1]
+        d4 = 1/betap - y[,2] + y[, 1]
         d4[!tmp88] = 0
-        w * cbind(d1 * dtheta.deta(alpha,  .la),
-                  d2 * dtheta.deta(alphap, .lap),
-                  d3 * dtheta.deta(beta,   .lb),
-                  d4 * dtheta.deta(betap,  .lbp))
+        c(w) * cbind(d1 * dtheta.deta(alpha,  .la),
+                     d2 * dtheta.deta(alphap, .lap),
+                     d3 * dtheta.deta(beta,   .lb),
+                     d4 * dtheta.deta(betap,  .lbp))
     }), list(.la=la, .lap=lap, .lb=lb, .lbp=lbp))),
-    weight=eval(substitute(expression({
+    weight = eval(substitute(expression({
         py1.lt.y2 = alpha / (alpha+beta)
         d11 = py1.lt.y2 / alpha^2
         d22 = (1-py1.lt.y2) / alphap^2
         d33 = (1-py1.lt.y2) / beta^2
         d44 = py1.lt.y2 / betap^2
         wz = matrix(0, n, M)  # diagonal
-        wz[,iam(1,1,M)] = dtheta.deta(alpha,  .la)^2 * d11
-        wz[,iam(2,2,M)] = dtheta.deta(alphap, .lap)^2 * d22
-        wz[,iam(3,3,M)] = dtheta.deta(beta,   .lb)^2 * d33
-        wz[,iam(4,4,M)] = dtheta.deta(betap,  .lbp)^2 * d44
-        w * wz
+        wz[, iam(1,1,M)] = dtheta.deta(alpha,  .la)^2 * d11
+        wz[, iam(2,2,M)] = dtheta.deta(alphap, .lap)^2 * d22
+        wz[, iam(3,3,M)] = dtheta.deta(beta,   .lb)^2 * d33
+        wz[, iam(4,4,M)] = dtheta.deta(betap,  .lbp)^2 * d44
+        c(w) * wz
     }), list(.la=la, .lap=lap, .lb=lb, .lbp=lbp))))
 }
 
@@ -315,14 +317,14 @@ dbilogis4 = function(x1, x2, loc1=0, scale1=1, loc2=0, scale2=1, log=FALSE) {
 
 
 
- bivgamma.mckay = function(lscale="loge",
-                        lshape1="loge",
-                        lshape2="loge",
-                        iscale=NULL,
-                        ishape1=NULL,
-                        ishape2=NULL,
-                        method.init=1,
-                        zero=1) {
+ bivgamma.mckay = function(lscale = "loge",
+                        lshape1 = "loge",
+                        lshape2 = "loge",
+                        iscale = NULL,
+                        ishape1 = NULL,
+                        ishape2 = NULL,
+                        imethod = 1,
+                        zero = 1) {
     if (mode(lscale) != "character" && mode(lscale) != "name")
         lscale = as.character(substitute(lscale))
     if (mode(lshape1) != "character" && mode(lshape1) != "name")
@@ -338,34 +340,34 @@ dbilogis4 = function(x1, x2, loc1=0, scale1=1, loc2=0, scale2=1, log=FALSE) {
     if (!is.null(ishape2))
         if (!is.Numeric(ishape2, positive = TRUE))
             stop("'ishape2' must be positive or NULL")
-    if (!is.Numeric(method.init, allow=1, integ=TRUE, positi=TRUE) ||
-       method.init > 2.5)
-        stop("argument 'method.init' must be 1 or 2")
+    if (!is.Numeric(imethod, allow = 1, integ = TRUE, positi = TRUE) ||
+       imethod > 2.5)
+        stop("argument 'imethod' must be 1 or 2")
 
     new("vglmff",
-    blurb=c("Bivariate Gamma: McKay's Distribution\n",
+    blurb = c("Bivariate gamma: McKay's distribution\n",
            "Links:    ",
            namesof("scale", lscale), ", ",
            namesof("shape1", lshape1), ", ",
            namesof("shape2", lshape2)),
-    constraints=eval(substitute(expression({
+    constraints = eval(substitute(expression({
         constraints = cm.zero.vgam(constraints, x, .zero, M)
-    }), list( .zero=zero ))),
-    initialize=eval(substitute(expression({
+    }), list( .zero = zero ))),
+    initialize = eval(substitute(expression({
         if (!is.matrix(y) || ncol(y) != 2)
             stop("the response must be a 2 column matrix")
-        if (any(y[,1] >= y[,2]))
+        if (any(y[, 1] >= y[,2]))
             stop("the second column minus the first column must be a vector ",
                   "of positive values")
-        predictors.names = c(namesof("scale", .lscale, short=TRUE), 
-                             namesof("shape1", .lshape1, short=TRUE), 
-                             namesof("shape2", .lshape2, short=TRUE))
+        predictors.names = c(namesof("scale", .lscale, short = TRUE), 
+                             namesof("shape1", .lshape1, short = TRUE), 
+                             namesof("shape2", .lshape2, short = TRUE))
         if (!length(etastart)) {
-            momentsY = if ( .method.init == 1) {
-                cbind(median(y[,1]),  # This may not be monotonic
+            momentsY = if ( .imethod == 1) {
+                cbind(median(y[, 1]),  # This may not be monotonic
                       median(y[,2])) + 0.01
             } else {
-                cbind(weighted.mean(y[,1], w),
+                cbind(weighted.mean(y[, 1], w),
                       weighted.mean(y[,2], w))
             }
 
@@ -375,21 +377,21 @@ dbilogis4 = function(x1, x2, loc1=0, scale1=1, loc2=0, scale2=1, log=FALSE) {
                 p = (1/a) * abs(momentsY[1]) + 0.01
                 q = (1/a) * abs(momentsY[2] - momentsY[1]) + 0.01
                 sum(w * (-(p+q)*log(a) - lgamma(p) - lgamma(q) +
-                     (p-1)*log(y[,1]) + (q-1)*log(y[,2]-y[,1]) - y[,2] / a ))
+                     (p - 1)*log(y[, 1]) + (q - 1)*log(y[,2]-y[, 1]) - y[,2] / a ))
             }
 
             a.grid = if (length( .iscale )) c( .iscale ) else
                c(0.01, 0.02, 0.05, 0.1, 0.2, 0.5, 1, 2, 5, 10, 20, 50, 100)
             extraargs = list(momentsY = momentsY)
             ainit = getMaxMin(a.grid, objfun=mcg2.loglik,
-                              y=y,  x=x, w=w, maximize=TRUE,
+                              y=y,  x=x, w=w, maximize = TRUE,
                               extraargs = extraargs)
-            ainit = rep(if(is.Numeric( .iscale )) .iscale else ainit, len=n)
+            ainit = rep(if(is.Numeric( .iscale )) .iscale else ainit, len = n)
             pinit = (1/ainit) * abs(momentsY[1]) + 0.01
             qinit = (1/ainit) * abs(momentsY[2] - momentsY[1]) + 0.01
 
-            pinit = rep(if(is.Numeric( .ishape1 )) .ishape1 else pinit, len=n)
-            qinit = rep(if(is.Numeric( .ishape2 )) .ishape2 else qinit, len=n)
+            pinit = rep(if(is.Numeric( .ishape1 )) .ishape1 else pinit, len = n)
+            qinit = rep(if(is.Numeric( .ishape2 )) .ishape2 else qinit, len = n)
 
             etastart = cbind(theta2eta(ainit, .lscale),
                              theta2eta(pinit, .lshape1),
@@ -397,14 +399,14 @@ dbilogis4 = function(x1, x2, loc1=0, scale1=1, loc2=0, scale2=1, log=FALSE) {
         }
     }), list( .lscale=lscale, .lshape1=lshape1, .lshape2=lshape2,
               .iscale=iscale, .ishape1=ishape1, .ishape2=ishape2,
-              .method.init=method.init ))),
-    inverse=eval(substitute(function(eta, extra=NULL) {
-        a = eta2theta(eta[,1], .lscale)
+              .imethod = imethod ))),
+    inverse = eval(substitute(function(eta, extra = NULL) {
+        a = eta2theta(eta[, 1], .lscale)
         p = eta2theta(eta[,2], .lshape1)
         q = eta2theta(eta[,3], .lshape2)
         cbind("y1"=p*a, "y2"=(p+q)*a)
     }, list( .lscale=lscale, .lshape1=lshape1, .lshape2=lshape2 ))),
-    last=eval(substitute(expression({
+    last = eval(substitute(expression({
         misc$link = c("scale"= .lscale, "shape1"= .lshape1, "shape2"= .lshape2)
         misc$ishape1 = .ishape1
         misc$ishape2 = .ishape2
@@ -412,29 +414,29 @@ dbilogis4 = function(x1, x2, loc1=0, scale1=1, loc2=0, scale2=1, log=FALSE) {
         misc$expected = TRUE
     }), list( .lscale=lscale, .lshape1=lshape1, .lshape2=lshape2,
               .iscale=iscale, .ishape1=ishape1, .ishape2=ishape2 ))),
-    loglikelihood= eval(substitute(
-            function(mu, y, w, residuals = FALSE, eta, extra=NULL) {
-        a = eta2theta(eta[,1], .lscale)
+    loglikelihood = eval(substitute(
+            function(mu, y, w, residuals = FALSE, eta, extra = NULL) {
+        a = eta2theta(eta[, 1], .lscale)
         p = eta2theta(eta[,2], .lshape1)
         q = eta2theta(eta[,3], .lshape2)
         if (residuals) stop("loglikelihood residuals not ",
                             "implemented yet") else
         sum(w * (-(p+q)*log(a) - lgamma(p) - lgamma(q) +
-                  (p-1)*log(y[,1]) + (q-1)*log(y[,2]-y[,1]) - y[,2] / a))
+                  (p - 1)*log(y[, 1]) + (q - 1)*log(y[,2]-y[, 1]) - y[,2] / a))
     }, list( .lscale=lscale, .lshape1=lshape1, .lshape2=lshape2 ))),
-    vfamily=c("bivgamma.mckay"),
-    deriv=eval(substitute(expression({
-        aparam = eta2theta(eta[,1], .lscale)
+    vfamily = c("bivgamma.mckay"),
+    deriv = eval(substitute(expression({
+        aparam = eta2theta(eta[, 1], .lscale)
         shape1 = eta2theta(eta[,2], .lshape1)
         shape2 = eta2theta(eta[,3], .lshape2)
         dl.da = (-(shape1+shape2) + y[,2] / aparam) / aparam
-        dl.dshape1 = -log(aparam) - digamma(shape1) + log(y[,1])
-        dl.dshape2 = -log(aparam) - digamma(shape2) + log(y[,2]-y[,1])
-        w * cbind(dl.da      * dtheta.deta(aparam, .lscale),
-                  dl.dshape1 * dtheta.deta(shape1, .lshape1),
-                  dl.dshape2 * dtheta.deta(shape2, .lshape2))
+        dl.dshape1 = -log(aparam) - digamma(shape1) + log(y[, 1])
+        dl.dshape2 = -log(aparam) - digamma(shape2) + log(y[,2]-y[, 1])
+        c(w) * cbind(dl.da      * dtheta.deta(aparam, .lscale),
+                     dl.dshape1 * dtheta.deta(shape1, .lshape1),
+                     dl.dshape2 * dtheta.deta(shape2, .lshape2))
     }), list( .lscale=lscale, .lshape1=lshape1, .lshape2=lshape2 ))),
-    weight=eval(substitute(expression({
+    weight = eval(substitute(expression({
         d11 = (shape1+shape2) / aparam^2
         d22 = trigamma(shape1)
         d33 = trigamma(shape2)
@@ -442,16 +444,16 @@ dbilogis4 = function(x1, x2, loc1=0, scale1=1, loc2=0, scale2=1, log=FALSE) {
         d13 = 1 / aparam
         d23 = 0
         wz = matrix(0, n, dimm(M))
-        wz[,iam(1,1,M)] = dtheta.deta(aparam, .lscale)^2 * d11
-        wz[,iam(2,2,M)] = dtheta.deta(shape1, .lshape1)^2 * d22
-        wz[,iam(3,3,M)] = dtheta.deta(shape2, .lshape2)^2 * d33
-        wz[,iam(1,2,M)] = dtheta.deta(aparam, .lscale) *
+        wz[, iam(1,1,M)] = dtheta.deta(aparam, .lscale)^2 * d11
+        wz[, iam(2,2,M)] = dtheta.deta(shape1, .lshape1)^2 * d22
+        wz[, iam(3,3,M)] = dtheta.deta(shape2, .lshape2)^2 * d33
+        wz[, iam(1,2,M)] = dtheta.deta(aparam, .lscale) *
                           dtheta.deta(shape1, .lshape1) * d12
-        wz[,iam(1,3,M)] = dtheta.deta(aparam, .lscale) *
+        wz[, iam(1,3,M)] = dtheta.deta(aparam, .lscale) *
                           dtheta.deta(shape2, .lshape2) * d13
-        wz[,iam(2,3,M)] = dtheta.deta(shape1, .lshape1) *
+        wz[, iam(2,3,M)] = dtheta.deta(shape1, .lshape1) *
                           dtheta.deta(shape2, .lshape2) * d23
-        w * wz
+        c(w) * wz
     }), list( .lscale=lscale, .lshape1=lshape1, .lshape2=lshape2 ))))
 }
 
@@ -465,21 +467,21 @@ dbilogis4 = function(x1, x2, loc1=0, scale1=1, loc2=0, scale2=1, log=FALSE) {
 
 
 rfrank = function(n, alpha) {
-    if (!is.Numeric(n, posit=TRUE, allow=1, integ=TRUE)) stop("bad input for 'n'")
-    if (!is.Numeric(alpha, posit=TRUE)) stop("bad input for 'alpha'")
-    alpha = rep(alpha, len=n)
+    if (!is.Numeric(n, posit = TRUE, allow = 1, integ = TRUE)) stop("bad input for 'n'")
+    if (!is.Numeric(alpha, posit = TRUE)) stop("bad input for 'alpha'")
+    alpha = rep(alpha, len = n)
     U = runif(n)
     V = runif(n)
     T = alpha^U + (alpha - alpha^U) * V
     X = U
-    index = abs(alpha-1) < .Machine$double.eps
+    index = abs(alpha - 1) < .Machine$double.eps
     Y = U
     if (any(!index))
         Y[!index] = logb(T[!index]/(T[!index]+(1-alpha[!index])*V[!index]),
                          base=alpha[!index])
-    ans = matrix(c(X,Y), nrow=n, ncol=2)
+    ans = matrix(c(X,Y), nrow=n, ncol = 2)
     if (any(index)) {
-        ans[index,1] = runif(sum(index)) # Uniform density for alpha==1
+        ans[index, 1] = runif(sum(index)) # Uniform density for alpha == 1
         ans[index,2] = runif(sum(index))
     }
     ans
@@ -488,27 +490,28 @@ rfrank = function(n, alpha) {
 pfrank = function(q1, q2, alpha) {
     if (!is.Numeric(q1)) stop("bad input for 'q1'")
     if (!is.Numeric(q2)) stop("bad input for 'q2'")
-    if (!is.Numeric(alpha, posit=TRUE)) stop("bad input for 'alpha'")
+    if (!is.Numeric(alpha, posit = TRUE)) stop("bad input for 'alpha'")
 
     L = max(length(q1), length(q2), length(alpha))
-    alpha = rep(alpha, len=L)
-    q1 = rep(q1, len=L)
-    q2 = rep(q2, len=L)
+    alpha = rep(alpha, len = L)
+    q1 = rep(q1, len = L)
+    q2 = rep(q2, len = L)
 
     x=q1; y=q2
-    index = (x>=1 & y<1) | (y>=1 & x<1) | (x<=0 | y<=0) | (x>=1 & y>=1) |
-            (abs(alpha-1) < .Machine$double.eps)
+    index = (x >= 1 & y <  1) | (y >= 1 & x <  1) |
+            (x <= 0 | y <= 0) | (x >= 1 & y >= 1) |
+            (abs(alpha - 1) < .Machine$double.eps)
     ans = as.numeric(index)
     if (any(!index))
-    ans[!index] = logb(1 + ((alpha[!index])^(x[!index])-1)*
-                  ((alpha[!index])^(y[!index])-1)/(alpha[!index]-1), 
+    ans[!index] = logb(1 + ((alpha[!index])^(x[!index]) - 1)*
+                  ((alpha[!index])^(y[!index]) - 1)/(alpha[!index] - 1), 
                   base=alpha[!index])
-    ind2 = (abs(alpha-1) < .Machine$double.eps)
+    ind2 = (abs(alpha - 1) < .Machine$double.eps)
     ans[ind2] = x[ind2] * y[ind2]
-    ans[x>=1 & y<1] = y[x>=1 & y<1]   # P(Y2 < q2) = q2
-    ans[y>=1 & x<1] = x[y>=1 & x<1]   # P(Y1 < q1) = q1
-    ans[x<=0 | y<=0] = 0
-    ans[x>=1 & y>=1] = 1
+    ans[x >= 1 & y <  1] = y[x >= 1 & y < 1]   # P(Y2 < q2) = q2
+    ans[y >= 1 & x <  1] = x[y >= 1 & x < 1]   # P(Y1 < q1) = q1
+    ans[x <= 0 | y <= 0] = 0
+    ans[x >= 1 & y >= 1] = 1
     ans
 }
 
@@ -519,25 +522,25 @@ dfrank = function(x1, x2, alpha, log = FALSE) {
 
     if (!is.Numeric(x1)) stop("bad input for 'x1'")
     if (!is.Numeric(x2)) stop("bad input for 'x2'")
-    if (!is.Numeric(alpha, posit=TRUE)) stop("bad input for 'alpha'")
+    if (!is.Numeric(alpha, posit = TRUE)) stop("bad input for 'alpha'")
 
     L = max(length(x1), length(x2), length(alpha))
-    alpha = rep(alpha, len=L)
-    x1 = rep(x1, len=L)
-    x2 = rep(x2, len=L)
+    alpha = rep(alpha, len = L)
+    x1 = rep(x1, len = L)
+    x2 = rep(x2, len = L)
 
     if (log.arg) {
-        denom = alpha-1 + (alpha^x1 -1) * (alpha^x2 -1)
+        denom = alpha-1 + (alpha^x1  - 1) * (alpha^x2  - 1)
         denom = abs(denom)  # Needed; Genest (1987) uses this too, eqn (4.1)
-        log((alpha-1) * log(alpha)) + (x1+x2)*log(alpha) - 2 * log(denom)
+        log((alpha - 1) * log(alpha)) + (x1+x2)*log(alpha) - 2 * log(denom)
     } else {
-        temp = (alpha-1) + (alpha^x1 - 1) * (alpha^x2 - 1)
-        index = (abs(alpha-1) < .Machine$double.eps)
+        temp = (alpha - 1) + (alpha^x1 - 1) * (alpha^x2 - 1)
+        index = (abs(alpha - 1) < .Machine$double.eps)
         ans = x1
         if (any(!index))
-            ans[!index] = (alpha[!index]-1) * log(alpha[!index]) *
+            ans[!index] = (alpha[!index] - 1) * log(alpha[!index]) *
                 (alpha[!index])^(x1[!index]+x2[!index]) / (temp[!index])^2
-        ans[x1<=0 | x2<=0 | x1>=1 | x2>=1] = 0
+        ans[x1<=0 | x2<=0 | x1 >= 1 | x2 >= 1] = 0
         ans[index] = 1
         ans
     }
@@ -546,80 +549,80 @@ dfrank = function(x1, x2, alpha, log = FALSE) {
 
 
 
-frank.control <- function(save.weight=TRUE, ...)
+frank.control <- function(save.weight = TRUE, ...)
 {
     list(save.weight=save.weight)
 }
 
 
 
- frank = function(lapar="loge", eapar=list(), iapar=2, nsimEIM=250) {
+ frank = function(lapar = "loge", eapar=list(), iapar = 2, nsimEIM = 250) {
     if (mode(lapar) != "character" && mode(lapar) != "name")
         lapar = as.character(substitute(lapar))
     if (!is.Numeric(iapar, positive = TRUE))
         stop("'iapar' must be positive")
     if (!is.list(eapar)) eapar = list()
     if (length(nsimEIM) &&
-       (!is.Numeric(nsimEIM, allow=1, integ=TRUE) || nsimEIM <= 50))
+       (!is.Numeric(nsimEIM, allow = 1, integ = TRUE) || nsimEIM <= 50))
         stop("'nsimEIM' should be an integer greater than 50")
 
     new("vglmff",
-    blurb=c("Frank's Bivariate Distribution\n",
+    blurb = c("Frank's bivariate distribution\n",
            "Links:    ",
-           namesof("apar", lapar, earg= eapar )),
-    initialize=eval(substitute(expression({
+           namesof("apar", lapar, earg = eapar )),
+    initialize = eval(substitute(expression({
         if (!is.matrix(y) || ncol(y) != 2)
             stop("the response must be a 2 column matrix") 
         if (any(y <= 0) || any(y >= 1))
             stop("the response must have values between 0 and 1") 
-        predictors.names = c(namesof("apar", .lapar, earg= .eapar, short=TRUE))
+        predictors.names = c(namesof("apar", .lapar, earg = .eapar, short = TRUE))
         if (length(dimnames(y)))
             extra$dimnamesy2 = dimnames(y)[[2]]
         if (!length(etastart)) {
-            apar.init = rep(.iapar, len=n)
-            etastart = cbind(theta2eta(apar.init, .lapar, earg= .eapar ))
+            apar.init = rep(.iapar, len = n)
+            etastart = cbind(theta2eta(apar.init, .lapar, earg = .eapar ))
         }
-    }), list( .lapar=lapar, .eapar=eapar, .iapar=iapar))),
-    inverse=eval(substitute(function(eta, extra=NULL) {
-        apar = eta2theta(eta, .lapar, earg= .eapar )
+    }), list( .lapar = lapar, .eapar=eapar, .iapar=iapar))),
+    inverse = eval(substitute(function(eta, extra = NULL) {
+        apar = eta2theta(eta, .lapar, earg = .eapar )
         fv.matrix = matrix(0.5, length(apar), 2)
         if (length(extra$dimnamesy2))
             dimnames(fv.matrix) = list(names(eta), extra$dimnamesy2)
         fv.matrix
-    }, list(.lapar=lapar, .eapar=eapar ))),
-    last=eval(substitute(expression({
+    }, list(.lapar = lapar, .eapar=eapar ))),
+    last = eval(substitute(expression({
         misc$link = c("apar"= .lapar)
         misc$earg = list("apar"= .eapar )
         misc$expected = TRUE
         misc$nsimEIM = .nsimEIM
         misc$pooled.weight = pooled.weight
-    }), list(.lapar=lapar, .eapar=eapar, .nsimEIM=nsimEIM ))),
-    loglikelihood= eval(substitute(
-            function(mu, y, w, residuals = FALSE, eta, extra=NULL) {
-        apar = eta2theta(eta, .lapar, earg= .eapar )
+    }), list(.lapar = lapar, .eapar=eapar, .nsimEIM = nsimEIM ))),
+    loglikelihood = eval(substitute(
+            function(mu, y, w, residuals = FALSE, eta, extra = NULL) {
+        apar = eta2theta(eta, .lapar, earg = .eapar )
         if (residuals) stop("loglikelihood residuals not ",
                             "implemented yet") else {
-            sum(w * dfrank(x1=y[,1], x2=y[,2], alpha=apar, log = TRUE))
+            sum(w * dfrank(x1=y[, 1], x2=y[,2], alpha=apar, log = TRUE))
         }
-    }, list(.lapar=lapar, .eapar=eapar ))),
-    vfamily=c("frank"),
-    deriv=eval(substitute(expression({
-        apar = eta2theta(eta, .lapar, earg= .eapar )
-        dapar.deta = dtheta.deta(apar, .lapar, earg= .eapar )
-
-        de3 = deriv3(~ (log((apar-1) * log(apar)) + (y1+y2)*log(apar) -
-                          2 * log(apar-1 + (apar^y1 -1) * (apar^y2 -1))),
-                        name="apar", hessian= TRUE)
-
-        denom = apar-1 + (apar^y[,1] -1) * (apar^y[,2] -1)
-        tmp700 = 2*apar^(y[,1]+y[,2]) - apar^y[,1] - apar^y[,2]
-        numerator = 1 + y[,1] * apar^(y[,1]-1) * (apar^y[,2] -1) + 
-                        y[,2] * apar^(y[,2]-1) * (apar^y[,1] -1)
-        Dl.dapar = 1/(apar-1) + 1/(apar*log(apar)) + (y[,1]+y[,2])/apar -
+    }, list(.lapar = lapar, .eapar=eapar ))),
+    vfamily = c("frank"),
+    deriv = eval(substitute(expression({
+        apar = eta2theta(eta, .lapar, earg = .eapar )
+        dapar.deta = dtheta.deta(apar, .lapar, earg = .eapar )
+
+        de3 = deriv3(~ (log((apar - 1) * log(apar)) + (y1+y2)*log(apar) -
+                          2 * log(apar-1 + (apar^y1  - 1) * (apar^y2  - 1))),
+                        name = "apar", hessian= TRUE)
+
+        denom = apar-1 + (apar^y[, 1]  - 1) * (apar^y[,2]  - 1)
+        tmp700 = 2*apar^(y[, 1]+y[,2]) - apar^y[, 1] - apar^y[,2]
+        numerator = 1 + y[, 1] * apar^(y[, 1] - 1) * (apar^y[,2]  - 1) + 
+                        y[,2] * apar^(y[,2] - 1) * (apar^y[, 1]  - 1)
+        Dl.dapar = 1/(apar - 1) + 1/(apar*log(apar)) + (y[, 1]+y[,2])/apar -
                    2 * numerator / denom
         w * Dl.dapar * dapar.deta
-    }), list(.lapar=lapar, .eapar=eapar, .nsimEIM=nsimEIM ))),
-    weight=eval(substitute(expression({
+    }), list(.lapar = lapar, .eapar=eapar, .nsimEIM = nsimEIM ))),
+    weight = eval(substitute(expression({
     if ( is.Numeric( .nsimEIM)) {
 
         pooled.weight = FALSE  # For @last
@@ -628,25 +631,25 @@ frank.control <- function(save.weight=TRUE, ...)
         run.mean = 0
         for(ii in 1:( .nsimEIM )) {
             ysim = rfrank(n,alpha=apar)
-            y1 = ysim[,1]; y2 = ysim[,2];
+            y1 = ysim[, 1]; y2 = ysim[,2];
             eval.de3 = eval(de3)
             d2l.dthetas2 =  attr(eval.de3, "hessian")
             rm(ysim)
-            temp3 = -d2l.dthetas2[,1,1]   # M=1
-            run.mean = ((ii-1) * run.mean + temp3) / ii
+            temp3 = -d2l.dthetas2[,1, 1]   # M = 1
+            run.mean = ((ii - 1) * run.mean + temp3) / ii
         }
         wz = if (intercept.only)
             matrix(mean(run.mean), n, dimm(M)) else run.mean
 
         wz = wz * dapar.deta^2
-        w * wz
+        c(w) * wz
     } else {
-        nump = apar^(y[,1]+y[,2]-2) * (2 * y[,1] * y[,2] +
-                     y[,1]*(y[,1]-1) + y[,2]*(y[,2]-1)) - 
-                     y[,1]*(y[,1]-1) * apar^(y[,1]-2) - 
-                     y[,2]*(y[,2]-1) * apar^(y[,2]-2)
-        D2l.dapar2 = 1/(apar-1)^2 + (1+log(apar))/(apar*log(apar))^2 +
-                     (y[,1]+y[,2])/apar^2 + 2 *
+        nump = apar^(y[, 1]+y[,2]-2) * (2 * y[, 1] * y[,2] +
+                     y[, 1]*(y[, 1] - 1) + y[,2]*(y[,2] - 1)) - 
+                     y[, 1]*(y[, 1] - 1) * apar^(y[, 1]-2) - 
+                     y[,2]*(y[,2] - 1) * apar^(y[,2]-2)
+        D2l.dapar2 = 1/(apar - 1)^2 + (1+log(apar))/(apar*log(apar))^2 +
+                     (y[, 1]+y[,2])/apar^2 + 2 *
                      (nump / denom - (numerator/denom)^2)
         d2apar.deta2 = d2theta.deta2(apar, .lapar)
         wz = w * (dapar.deta^2 * D2l.dapar2 - Dl.dapar * d2apar.deta2)
@@ -656,69 +659,69 @@ frank.control <- function(save.weight=TRUE, ...)
             for(iii in 1:ncol(wz))
                 wz[,iii] = sum(wz[,iii]) / sumw
             pooled.weight = TRUE
-            wz = w * wz   # Put back the weights
+            wz = c(w) * wz   # Put back the weights
         } else
             pooled.weight = FALSE
         wz
     }
-    }), list( .lapar=lapar, .eapar=eapar, .nsimEIM=nsimEIM ))))
+    }), list( .lapar = lapar, .eapar=eapar, .nsimEIM = nsimEIM ))))
 }
 
 
 
- gammahyp = function(ltheta="loge", itheta=NULL, expected=FALSE) {
+ gammahyp = function(ltheta = "loge", itheta = NULL, expected = FALSE) {
     if (mode(ltheta) != "character" && mode(ltheta) != "name")
         ltheta = as.character(substitute(ltheta))
-    if (!is.logical(expected) || length(expected)!=1)
-        stop("'expected' must be a single logical")
+    if (!is.logical(expected) || length(expected) != 1)
+        stop("argument 'expected' must be a single logical")
 
     new("vglmff",
-    blurb=c("Gamma Hyperbola Bivariate Distribution\n",
+    blurb = c("Gamma hyperbola bivariate distribution\n",
            "Links:    ",
            namesof("theta", ltheta)),
-    initialize=eval(substitute(expression({
+    initialize = eval(substitute(expression({
         if (!is.matrix(y) || ncol(y) != 2)
             stop("the response must be a 2 column matrix") 
-        if (any(y[,1] <= 0) || any(y[,2] <= 1))
+        if (any(y[, 1] <= 0) || any(y[,2] <= 1))
             stop("the response has values that are out of range") 
-        predictors.names = c(namesof("theta", .ltheta, short=TRUE))
+        predictors.names = c(namesof("theta", .ltheta, short = TRUE))
         if (!length(etastart)) {
-            theta.init = if (length( .itheta)) rep(.itheta, len=n) else {
+            theta.init = if (length( .itheta)) rep(.itheta, len = n) else {
                 1 / (y[,2] - 1 + 0.01)
             }
             etastart = cbind(theta2eta(theta.init, .ltheta))
         }
     }), list(.ltheta=ltheta, .itheta=itheta))),
-    inverse=eval(substitute(function(eta, extra=NULL) {
+    inverse = eval(substitute(function(eta, extra = NULL) {
         theta = eta2theta(eta, .ltheta)
         cbind(theta*exp(theta), 1+1/theta)
     }, list(.ltheta=ltheta))),
-    last=eval(substitute(expression({
+    last = eval(substitute(expression({
         misc$link = c("theta"= .ltheta)
         misc$expected = .expected 
     }), list(.ltheta=ltheta, .expected=expected))),
-    loglikelihood= eval(substitute(
-            function(mu, y, w, residuals = FALSE, eta, extra=NULL) {
+    loglikelihood = eval(substitute(
+            function(mu, y, w, residuals = FALSE, eta, extra = NULL) {
         theta = eta2theta(eta, .ltheta)
         if (residuals) stop("loglikelihood residuals not ",
                             "implemented yet") else {
-            sum(w * (-exp(-theta)*y[,1]/theta - theta*y[,2]))
+            sum(w * (-exp(-theta)*y[, 1]/theta - theta*y[,2]))
         }
     }, list(.ltheta=ltheta))),
-    vfamily=c("gammahyp"),
-    deriv=eval(substitute(expression({
+    vfamily = c("gammahyp"),
+    deriv = eval(substitute(expression({
         theta = eta2theta(eta, .ltheta)
-        Dl.dtheta = exp(-theta) * y[,1] * (1+theta) / theta^2 - y[,2]
+        Dl.dtheta = exp(-theta) * y[, 1] * (1+theta) / theta^2 - y[,2]
         Dtheta.deta = dtheta.deta(theta, .ltheta)
         w * Dl.dtheta * Dtheta.deta
     }), list(.ltheta=ltheta))),
-    weight=eval(substitute(expression({
+    weight = eval(substitute(expression({
         temp300 = 2 + theta * (2 + theta)
         if ( .expected) {
             D2l.dtheta2 = temp300 / theta^2
             wz = w * Dtheta.deta^2 * D2l.dtheta2
         } else {
-            D2l.dtheta2 = temp300 * y[,1] * exp(-theta) / theta^3
+            D2l.dtheta2 = temp300 * y[, 1] * exp(-theta) / theta^3
             D2theta.deta2 = d2theta.deta2(theta, .ltheta)
             wz = w * (Dtheta.deta^2 * D2l.dtheta2 - Dl.dtheta * D2theta.deta2)
         }
@@ -728,83 +731,83 @@ frank.control <- function(save.weight=TRUE, ...)
 
 
 
- morgenstern = function(lapar="rhobit", earg=list(), iapar=NULL, tola0=0.01,
-                        method.init=1) {
+ morgenstern = function(lapar = "rhobit", earg =list(), iapar = NULL, tola0=0.01,
+                        imethod = 1) {
     if (mode(lapar) != "character" && mode(lapar) != "name")
         lapar = as.character(substitute(lapar))
     if (!is.list(earg)) earg = list()
-    if (length(iapar) && (!is.Numeric(iapar, allow=1) || abs(iapar) >= 1))
+    if (length(iapar) && (!is.Numeric(iapar, allow = 1) || abs(iapar) >= 1))
         stop("'iapar' must be a single number between -1 and 1") 
-    if (!is.Numeric(tola0, allow=1, posit=TRUE))
+    if (!is.Numeric(tola0, allow = 1, posit = TRUE))
         stop("'tola0' must be a single positive number") 
     if (length(iapar) && abs(iapar) <= tola0)
         stop("'iapar' must not be between -tola0 and tola0") 
-    if (!is.Numeric(method.init, allow=1, integ=TRUE, positi=TRUE) ||
-       method.init > 2.5)
-        stop("argument 'method.init' must be 1 or 2")
+    if (!is.Numeric(imethod, allow = 1, integ = TRUE, positi = TRUE) ||
+       imethod > 2.5)
+        stop("argument 'imethod' must be 1 or 2")
 
     new("vglmff",
-    blurb=c("Morgenstern's Bivariate Exponential Distribution\n",
+    blurb = c("Morgenstern's bivariate exponential distribution\n",
            "Links:    ",
-           namesof("apar", lapar, earg= earg )),
-    initialize=eval(substitute(expression({
+           namesof("apar", lapar, earg = earg )),
+    initialize = eval(substitute(expression({
         if (!is.matrix(y) || ncol(y) != 2)
             stop("the response must be a 2 column matrix") 
         if (any(y < 0))
             stop("the response must have non-negative values only") 
-        predictors.names = c(namesof("apar", .lapar, earg= .earg , short=TRUE))
+        predictors.names = c(namesof("apar", .lapar, earg = .earg , short = TRUE))
         if (length(dimnames(y)))
             extra$dimnamesy2 = dimnames(y)[[2]]
         if (!length(etastart)) {
-            ainit  = if (length(.iapar))  rep(.iapar, len=n) else {
-                mean1 = if ( .method.init == 1) median(y[,1]) else mean(y[,1])
-                mean2 = if ( .method.init == 1) median(y[,2]) else mean(y[,2])
-                Finit = 0.01 + mean(y[,1] <= mean1 & y[,2] <= mean2)
-                ((Finit+expm1(-mean1)+exp(-mean2)) / exp(-mean1-mean2)-1)/(
+            ainit  = if (length(.iapar))  rep(.iapar, len = n) else {
+                mean1 = if ( .imethod == 1) median(y[, 1]) else mean(y[, 1])
+                mean2 = if ( .imethod == 1) median(y[,2]) else mean(y[,2])
+                Finit = 0.01 + mean(y[, 1] <= mean1 & y[,2] <= mean2)
+                ((Finit+expm1(-mean1)+exp(-mean2)) / exp(-mean1-mean2) - 1)/(
                  expm1(-mean1) * expm1(-mean2))
               }
-            etastart = theta2eta(rep(ainit, len=n), .lapar, earg= .earg )
+            etastart = theta2eta(rep(ainit, len = n), .lapar, earg = .earg )
         }
-    }), list( .iapar=iapar, .lapar=lapar, .earg=earg,
-              .method.init=method.init ))),
-    inverse=eval(substitute(function(eta, extra=NULL) {
-        alpha = eta2theta(eta, .lapar, earg= .earg )
+    }), list( .iapar=iapar, .lapar = lapar, .earg = earg,
+              .imethod = imethod ))),
+    inverse = eval(substitute(function(eta, extra = NULL) {
+        alpha = eta2theta(eta, .lapar, earg = .earg )
         fv.matrix = matrix(1, length(alpha), 2)
         if (length(extra$dimnamesy2))
             dimnames(fv.matrix) = list(names(eta), extra$dimnamesy2)
         fv.matrix
-    }, list( .lapar=lapar, .earg=earg ))),
-    last=eval(substitute(expression({
+    }, list( .lapar = lapar, .earg = earg ))),
+    last = eval(substitute(expression({
         misc$link = c("apar"= .lapar)
         misc$earg = list(apar = .earg)
         misc$expected = FALSE
         misc$pooled.weight = pooled.weight
-    }), list( .lapar=lapar, .earg=earg ))),
-    loglikelihood= eval(substitute(
-            function(mu, y, w, residuals = FALSE, eta, extra=NULL) {
-        alpha  = eta2theta(eta, .lapar, earg= .earg )
+    }), list( .lapar = lapar, .earg = earg ))),
+    loglikelihood = eval(substitute(
+            function(mu, y, w, residuals = FALSE, eta, extra = NULL) {
+        alpha  = eta2theta(eta, .lapar, earg = .earg )
         alpha[abs(alpha) < .tola0 ] = .tola0
         if (residuals) stop("loglikelihood residuals not ",
                             "implemented yet") else {
-        denom = (1 + alpha - 2*alpha*(exp(-y[,1]) + exp(-y[,2])) +
-                4*alpha*exp(-y[,1] - y[,2]))
-        sum(w * (-y[,1] - y[,2] + log(denom)))
+        denom = (1 + alpha - 2*alpha*(exp(-y[, 1]) + exp(-y[,2])) +
+                4*alpha*exp(-y[, 1] - y[,2]))
+        sum(w * (-y[, 1] - y[,2] + log(denom)))
         }
-    }, list( .lapar=lapar, .earg=earg, .tola0=tola0 ))),
-    vfamily=c("morgenstern"),
-    deriv=eval(substitute(expression({
-        alpha  = eta2theta(eta, .lapar, earg= .earg )
+    }, list( .lapar = lapar, .earg = earg, .tola0=tola0 ))),
+    vfamily = c("morgenstern"),
+    deriv = eval(substitute(expression({
+        alpha  = eta2theta(eta, .lapar, earg = .earg )
         alpha[abs(alpha) < .tola0 ] = .tola0
-        numerator = 1 - 2*(exp(-y[,1]) + exp(-y[,2])) + 4*exp(-y[,1] - y[,2])
-        denom = (1 + alpha - 2*alpha*(exp(-y[,1]) + exp(-y[,2])) +
-                4 *alpha*exp(-y[,1] - y[,2]))
+        numerator = 1 - 2*(exp(-y[, 1]) + exp(-y[,2])) + 4*exp(-y[, 1] - y[,2])
+        denom = (1 + alpha - 2*alpha*(exp(-y[, 1]) + exp(-y[,2])) +
+                4 *alpha*exp(-y[, 1] - y[,2]))
         dl.dalpha = numerator / denom
-        dalpha.deta = dtheta.deta(alpha,  .lapar, earg= .earg )
-        w * cbind(dl.dalpha * dalpha.deta)
-    }), list( .lapar=lapar, .earg=earg, .tola0=tola0 ))),
-    weight=eval(substitute(expression({
+        dalpha.deta = dtheta.deta(alpha,  .lapar, earg = .earg )
+        c(w) * cbind(dl.dalpha * dalpha.deta)
+    }), list( .lapar = lapar, .earg = earg, .tola0=tola0 ))),
+    weight = eval(substitute(expression({
         d2l.dalpha2 = dl.dalpha^2
-        d2alpha.deta2 = d2theta.deta2(alpha,  .lapar, earg= .earg )
+        d2alpha.deta2 = d2theta.deta2(alpha,  .lapar, earg = .earg )
         wz = w * (dalpha.deta^2 * d2l.dalpha2 - d2alpha.deta2 * dl.dalpha)
         if (TRUE &&
            intercept.only) {
@@ -813,18 +816,18 @@ frank.control <- function(save.weight=TRUE, ...)
             for(iii in 1:ncol(wz))
                 wz[,iii] = sum(wz[,iii]) / sumw
             pooled.weight = TRUE
-            wz = w * wz   # Put back the weights
+            wz = c(w) * wz   # Put back the weights
         } else
             pooled.weight = FALSE
         wz
-    }), list( .lapar=lapar, .earg=earg ))))
+    }), list( .lapar = lapar, .earg = earg ))))
 }
 
 
 
 
 rfgm = function(n, alpha) {
-    if (!is.Numeric(n, posit=TRUE, allow=1, integ=TRUE)) stop("bad input for 'n'")
+    if (!is.Numeric(n, posit = TRUE, allow = 1, integ = TRUE)) stop("bad input for 'n'")
     if (!is.Numeric(alpha)) stop("bad input for 'alpha'")
     if (any(abs(alpha) > 1)) stop("'alpha' values out of range")
 
@@ -834,23 +837,23 @@ rfgm = function(n, alpha) {
     A = alpha * temp - 1
     B = sqrt(1 - 2 * alpha * temp + (alpha*temp)^2 + 4 * alpha * V2 * temp)
     y2 = 2 * V2 / (B - A)
-    matrix(c(y1,y2), nrow=n, ncol=2)
+    matrix(c(y1,y2), nrow=n, ncol = 2)
 }
 
 
 
-dfgm = function(x1, x2, alpha, log=FALSE) {
+dfgm = function(x1, x2, alpha, log = FALSE) {
     log.arg = log
     rm(log)
     if (!is.Numeric(alpha)) stop("bad input for 'alpha'")
     if (any(abs(alpha) > 1)) stop("'alpha' values out of range")
-    if ( !is.logical( log.arg ) || length( log.arg )!=1 )
-        stop("bad input for 'log'")
+    if ( !is.logical( log.arg ) || length( log.arg ) != 1 )
+        stop("bad input for argument 'log'")
 
     L = max(length(x1), length(x2), length(alpha))
-    if (length(x1) != L)  x1 = rep(x1, len=L)
-    if (length(x2) != L)  x2 = rep(x2, len=L)
-    if (length(alpha) != L)  alpha = rep(alpha, len=L)
+    if (length(x1) != L)  x1 = rep(x1, len = L)
+    if (length(x2) != L)  x2 = rep(x2, len = L)
+    if (length(alpha) != L)  alpha = rep(alpha, len = L)
     ans = 0 * x1
     xnok = (x1 <= 0) | (x1 >= 1) | (x2 <= 0) | (x2 >= 1)
     if ( log.arg ) {
@@ -873,102 +876,102 @@ pfgm = function(q1, q2, alpha) {
     if (any(abs(alpha) > 1)) stop("'alpha' values out of range")
 
     L = max(length(q1), length(q2), length(alpha))
-    if (length(q1) != L)  q1 = rep(q1, len=L)
-    if (length(q2) != L)  q2 = rep(q2, len=L)
-    if (length(alpha) != L)  alpha = rep(alpha, len=L)
+    if (length(q1) != L)  q1 = rep(q1, len = L)
+    if (length(q2) != L)  q2 = rep(q2, len = L)
+    if (length(alpha) != L)  alpha = rep(alpha, len = L)
 
     x=q1; y=q2
-    index = (x>=1 & y<1) | (y>=1 & x<1) | (x<=0 | y<=0) | (x>=1 & y>=1)
+    index = (x >= 1 & y<1) | (y >= 1 & x<1) | (x<=0 | y<=0) | (x >= 1 & y >= 1)
     ans = as.numeric(index)
     if (any(!index)) {
         ans[!index] = q1[!index] * q2[!index] * (1 + alpha[!index] *
                       (1-q1[!index])*(1-q2[!index]))
     }
-    ans[x>=1 & y<1] = y[x>=1 & y<1]   # P(Y2 < q2) = q2
-    ans[y>=1 & x<1] = x[y>=1 & x<1]   # P(Y1 < q1) = q1
+    ans[x >= 1 & y<1] = y[x >= 1 & y<1]   # P(Y2 < q2) = q2
+    ans[y >= 1 & x<1] = x[y >= 1 & x<1]   # P(Y1 < q1) = q1
     ans[x<=0 | y<=0] = 0
-    ans[x>=1 & y>=1] = 1
+    ans[x >= 1 & y >= 1] = 1
     ans
 }
 
 
 
-fgm.control <- function(save.weight=TRUE, ...)
+fgm.control <- function(save.weight = TRUE, ...)
 {
     list(save.weight=save.weight)
 }
 
 
 
- fgm = function(lapar="rhobit", earg=list(), iapar=NULL,
-                method.init=1, nsimEIM=200) {
+ fgm = function(lapar = "rhobit", earg =list(), iapar = NULL,
+                imethod = 1, nsimEIM = 200) {
     if (mode(lapar) != "character" && mode(lapar) != "name")
         lapar = as.character(substitute(lapar))
     if (!is.list(earg)) earg = list()
-    if (!is.Numeric(method.init, allow=1, integ=TRUE, positi=TRUE) ||
-       method.init > 2.5)
-        stop("argument 'method.init' must be 1 or 2")
+    if (!is.Numeric(imethod, allow = 1, integ = TRUE, positi = TRUE) ||
+       imethod > 2.5)
+        stop("argument 'imethod' must be 1 or 2")
     if (!length(nsimEIM) ||
-       (!is.Numeric(nsimEIM, allow=1, integ=TRUE) || nsimEIM <= 50))
+       (!is.Numeric(nsimEIM, allow = 1, integ = TRUE) || nsimEIM <= 50))
         stop("'nsimEIM' should be an integer greater than 50")
     if (length(iapar) &&
        (abs(iapar) >= 1))
         stop("'iapar' should be less than 1 in absolute value")
 
     new("vglmff",
-    blurb=c("Farlie-Gumbel-Morgenstern Distribution\n",
+    blurb = c("Farlie-Gumbel-Morgenstern distribution\n",
            "Links:    ",
-           namesof("apar", lapar, earg= earg )),
-    initialize=eval(substitute(expression({
+           namesof("apar", lapar, earg = earg )),
+    initialize = eval(substitute(expression({
         if (!is.matrix(y) || ncol(y) != 2)
             stop("the response must be a 2 column matrix") 
         if (any(y < 0) || any(y > 1))
             stop("the response must have values in the unit square")
-        predictors.names = namesof("apar", .lapar, earg= .earg, short=TRUE)
+        predictors.names = namesof("apar", .lapar, earg = .earg, short = TRUE)
         if (length(dimnames(y)))
             extra$dimnamesy2 = dimnames(y)[[2]]
         if (!length(etastart)) {
             ainit  = if (length( .iapar ))  .iapar else {
-                mean1 = if ( .method.init == 1) weighted.mean(y[,1],w) else
-                        median(y[,1])
-                mean2 = if ( .method.init == 1) weighted.mean(y[,2],w) else
+                mean1 = if ( .imethod == 1) weighted.mean(y[, 1],w) else
+                        median(y[, 1])
+                mean2 = if ( .imethod == 1) weighted.mean(y[,2],w) else
                         median(y[,2])
-                Finit = weighted.mean(y[,1] <= mean1 & y[,2] <= mean2, w)
+                Finit = weighted.mean(y[, 1] <= mean1 & y[,2] <= mean2, w)
                 (Finit / (mean1 * mean2) - 1) / ((1-mean1) * (1-mean2))
             }
 
             ainit = min(0.95, max(ainit, -0.95))
 
-            etastart = theta2eta(rep(ainit, len=n), .lapar, earg= .earg )
+            etastart = theta2eta(rep(ainit, len = n), .lapar, earg = .earg )
         }
-    }), list( .iapar=iapar, .lapar=lapar, .earg=earg,
-              .method.init=method.init ))),
-    inverse=eval(substitute(function(eta, extra=NULL) {
-        alpha = eta2theta(eta, .lapar, earg= .earg )
+    }), list( .iapar=iapar, .lapar = lapar, .earg = earg,
+              .imethod = imethod ))),
+    inverse = eval(substitute(function(eta, extra = NULL) {
+        alpha = eta2theta(eta, .lapar, earg = .earg )
         fv.matrix = matrix(0.5, length(alpha), 2)
         if (length(extra$dimnamesy2))
             dimnames(fv.matrix) = list(names(eta), extra$dimnamesy2)
         fv.matrix
-    }, list( .lapar=lapar, .earg=earg ))),
-    last=eval(substitute(expression({
+    }, list( .lapar = lapar, .earg = earg ))),
+    last = eval(substitute(expression({
         misc$link = c("apar"= .lapar)
         misc$earg = list(apar = .earg)
         misc$expected = FALSE
         misc$nsimEIM = .nsimEIM
-    }), list(.lapar=lapar, .earg=earg, .nsimEIM=nsimEIM ))),
-    loglikelihood= eval(substitute(
-            function(mu, y, w, residuals = FALSE, eta, extra=NULL) {
-        alpha = eta2theta(eta, .lapar, earg= .earg )
+    }), list(.lapar = lapar, .earg = earg, .nsimEIM = nsimEIM ))),
+    loglikelihood = eval(substitute(
+            function(mu, y, w, residuals = FALSE, eta, extra = NULL) {
+        alpha = eta2theta(eta, .lapar, earg = .earg )
         if (residuals) stop("loglikelihood residuals not ",
                             "implemented yet") else {
-            sum(w * dfgm(x1=y[,1], x2=y[,2], alpha=alpha, log=TRUE))
+            sum(w * dfgm(x1=y[, 1], x2=y[,2], alpha=alpha, log = TRUE))
         }
-    }, list( .lapar=lapar, .earg=earg ))),
-    vfamily=c("fgm"),
-    deriv=eval(substitute(expression({
-        alpha  = eta2theta(eta, .lapar, earg= .earg )
-        dalpha.deta = dtheta.deta(alpha, .lapar, earg= .earg )
-        numerator = (1 - 2 * y[,1])  * (1 - 2 * y[,2])
+    }, list( .lapar = lapar, .earg = earg ))),
+    vfamily = c("fgm"),
+    deriv = eval(substitute(expression({
+        alpha  = eta2theta(eta, .lapar, earg = .earg )
+        dalpha.deta = dtheta.deta(alpha, .lapar, earg = .earg )
+        numerator = (1 - 2 * y[, 1])  * (1 - 2 * y[,2])
         denom = 1 + alpha * numerator
             mytolerance = .Machine$double.eps
             bad <- (denom <= mytolerance)   # Range violation
@@ -978,79 +981,79 @@ fgm.control <- function(save.weight=TRUE, ...)
                 denom[bad] = 2 * mytolerance
             }
         dl.dalpha = numerator / denom
-        w * cbind(dl.dalpha * dalpha.deta)
-    }), list( .lapar=lapar, .earg=earg, .nsimEIM=nsimEIM ))),
-    weight=eval(substitute(expression({
+        c(w) * cbind(dl.dalpha * dalpha.deta)
+    }), list( .lapar = lapar, .earg = earg, .nsimEIM = nsimEIM ))),
+    weight = eval(substitute(expression({
         run.var = 0
         for(ii in 1:( .nsimEIM )) {
             ysim = rfgm(n, alpha=alpha)
-            numerator = (1 - 2 * ysim[,1])  * (1 - 2 * ysim[,2])
+            numerator = (1 - 2 * ysim[, 1])  * (1 - 2 * ysim[,2])
             denom = 1 + alpha * numerator
             dl.dalpha = numerator / denom
             rm(ysim)
             temp3 = dl.dalpha
-            run.var = ((ii-1) * run.var + temp3^2) / ii
+            run.var = ((ii - 1) * run.var + temp3^2) / ii
         }
         wz = if (intercept.only)
             matrix(colMeans(cbind(run.var)),
-                   n, dimm(M), byrow=TRUE) else cbind(run.var)
+                   n, dimm(M), byrow = TRUE) else cbind(run.var)
 
         wz = wz * dalpha.deta^2
-        w * wz
-    }), list( .lapar=lapar, .earg=earg, .nsimEIM=nsimEIM ))))
+        c(w) * wz
+    }), list( .lapar = lapar, .earg = earg, .nsimEIM = nsimEIM ))))
 }
 
 
 
- gumbelIbiv = function(lapar="identity", earg=list(),
-                       iapar=NULL, method.init=1) {
+ gumbelIbiv = function(lapar = "identity", earg =list(),
+                       iapar = NULL, imethod = 1) {
     if (mode(lapar) != "character" && mode(lapar) != "name")
         lapar = as.character(substitute(lapar))
     if (!is.list(earg)) earg = list()
-    if (length(iapar) && !is.Numeric(iapar, allow=1))
+    if (length(iapar) && !is.Numeric(iapar, allow = 1))
         stop("'iapar' must be a single number")
-    if (!is.Numeric(method.init, allow=1, integ=TRUE, positi=TRUE) ||
-       method.init > 2.5)
-        stop("argument 'method.init' must be 1 or 2")
+    if (!is.Numeric(imethod, allow = 1, integ = TRUE, positi = TRUE) ||
+       imethod > 2.5)
+        stop("argument 'imethod' must be 1 or 2")
 
     new("vglmff",
-    blurb=c("Gumbel's Type I Bivariate Distribution\n",
+    blurb = c("Gumbel's Type I bivariate distribution\n",
            "Links:    ",
-           namesof("apar", lapar, earg= earg )),
-    initialize=eval(substitute(expression({
+           namesof("apar", lapar, earg = earg )),
+    initialize = eval(substitute(expression({
         if (!is.matrix(y) || ncol(y) != 2)
             stop("the response must be a 2 column matrix") 
         if (any(y < 0))
             stop("the response must have non-negative values only")
-        predictors.names = c(namesof("apar", .lapar, earg= .earg , short=TRUE))
+        predictors.names = c(namesof("apar", .lapar, earg = .earg , short = TRUE))
         if (!length(etastart)) {
-            ainit  = if (length( .iapar ))  rep( .iapar, len=n) else {
-                mean1 = if ( .method.init == 1) median(y[,1]) else mean(y[,1])
-                mean2 = if ( .method.init == 1) median(y[,2]) else mean(y[,2])
-                Finit = 0.01 + mean(y[,1] <= mean1 & y[,2] <= mean2)
+            ainit  = if (length( .iapar ))  rep( .iapar, len = n) else {
+                mean1 = if ( .imethod == 1) median(y[, 1]) else mean(y[, 1])
+                mean2 = if ( .imethod == 1) median(y[,2]) else mean(y[,2])
+                Finit = 0.01 + mean(y[, 1] <= mean1 & y[,2] <= mean2)
                 (log(Finit+expm1(-mean1)+exp(-mean2))+mean1+mean2)/(mean1*mean2)
             }
-            etastart = theta2eta(rep(ainit,  len=n), .lapar, earg= .earg )
+            etastart = theta2eta(rep(ainit,  len = n), .lapar, earg = .earg )
         }
-    }), list( .iapar=iapar, .lapar=lapar, .earg=earg,
-              .method.init=method.init ))),
-    inverse=eval(substitute(function(eta, extra=NULL) {
-        alpha = eta2theta(eta, .lapar, earg= .earg )
+    }), list( .iapar=iapar, .lapar = lapar, .earg = earg,
+              .imethod = imethod ))),
+    inverse = eval(substitute(function(eta, extra = NULL) {
+        alpha = eta2theta(eta, .lapar, earg = .earg )
         cbind(rep(1, len=length(alpha)),
               rep(1, len=length(alpha)))
-    }, list( .lapar=lapar ))),
-    last=eval(substitute(expression({
+    }, list( .lapar = lapar ))),
+    last = eval(substitute(expression({
         misc$link = c("apar"= .lapar)
         misc$earg = list(apar = .earg)
         misc$expected = FALSE
         misc$pooled.weight = pooled.weight
-    }), list( .lapar=lapar, .earg=earg ))),
-    loglikelihood= eval(substitute(
-            function(mu, y, w, residuals = FALSE, eta, extra=NULL) {
-        alpha  = eta2theta(eta, .lapar, earg= .earg )
+    }), list( .lapar = lapar, .earg = earg ))),
+    loglikelihood = eval(substitute(
+            function(mu, y, w, residuals = FALSE, eta, extra = NULL) {
+        alpha  = eta2theta(eta, .lapar, earg = .earg )
         if (residuals) stop("loglikelihood residuals not ",
                             "implemented yet") else {
-            denom = (alpha*y[,1] - 1) * (alpha*y[,2] - 1) + alpha
+            denom = (alpha*y[, 1] - 1) * (alpha*y[,2] - 1) + alpha
             mytolerance = .Machine$double.xmin
             bad <- (denom <= mytolerance)   # Range violation
             if (any(bad)) {
@@ -1058,23 +1061,23 @@ fgm.control <- function(save.weight=TRUE, ...)
                 flush.console()
             }
             sum(bad) * (-1.0e10) + 
-            sum(w[!bad] * (-y[!bad,1] - y[!bad,2] +
-                alpha[!bad]*y[!bad,1]*y[!bad,2] + log(denom[!bad])))
+            sum(w[!bad] * (-y[!bad, 1] - y[!bad,2] +
+                alpha[!bad]*y[!bad, 1]*y[!bad,2] + log(denom[!bad])))
         }
-    }, list( .lapar=lapar, .earg=earg ))),
-    vfamily=c("gumbelIbiv"),
-    deriv=eval(substitute(expression({
-        alpha  = eta2theta(eta, .lapar, earg= .earg )
-        numerator = (alpha*y[,1] - 1)*y[,2] + (alpha*y[,2] - 1)*y[,1] + 1
-        denom = (alpha*y[,1] - 1) * (alpha*y[,2] - 1) + alpha
+    }, list( .lapar = lapar, .earg = earg ))),
+    vfamily = c("gumbelIbiv"),
+    deriv = eval(substitute(expression({
+        alpha  = eta2theta(eta, .lapar, earg = .earg )
+        numerator = (alpha*y[, 1] - 1)*y[,2] + (alpha*y[,2] - 1)*y[, 1] + 1
+        denom = (alpha*y[, 1] - 1) * (alpha*y[,2] - 1) + alpha
         denom = abs(denom)
-        dl.dalpha = numerator / denom + y[,1]*y[,2]
-        dalpha.deta = dtheta.deta(alpha,  .lapar, earg= .earg )
-        w * cbind(dl.dalpha * dalpha.deta)
-    }), list( .lapar=lapar, .earg=earg ))),
-    weight=eval(substitute(expression({
-        d2l.dalpha2 = (numerator/denom)^2 - 2*y[,1]*y[,2] / denom
-        d2alpha.deta2 = d2theta.deta2(alpha, .lapar, earg= .earg )
+        dl.dalpha = numerator / denom + y[, 1]*y[,2]
+        dalpha.deta = dtheta.deta(alpha,  .lapar, earg = .earg )
+        c(w) * cbind(dl.dalpha * dalpha.deta)
+    }), list( .lapar = lapar, .earg = earg ))),
+    weight = eval(substitute(expression({
+        d2l.dalpha2 = (numerator/denom)^2 - 2*y[, 1]*y[,2] / denom
+        d2alpha.deta2 = d2theta.deta2(alpha, .lapar, earg = .earg )
         wz = w * (dalpha.deta^2 * d2l.dalpha2 - d2alpha.deta2 * dl.dalpha)
         if (TRUE &&
            intercept.only) {
@@ -1083,11 +1086,11 @@ fgm.control <- function(save.weight=TRUE, ...)
             for(iii in 1:ncol(wz))
                 wz[,iii] = sum(wz[,iii]) / sumw
             pooled.weight = TRUE
-            wz = w * wz   # Put back the weights
+            wz = c(w) * wz   # Put back the weights
         } else
             pooled.weight = FALSE
         wz
-    }), list( .lapar=lapar, .earg=earg ))))
+    }), list( .lapar = lapar, .earg = earg ))))
 }
 
 
@@ -1099,39 +1102,40 @@ fgm.control <- function(save.weight=TRUE, ...)
 pplack = function(q1, q2, oratio) {
     if (!is.Numeric(q1)) stop("bad input for 'q1'")
     if (!is.Numeric(q2)) stop("bad input for 'q2'")
-    if (!is.Numeric(oratio, posit=TRUE)) stop("bad input for 'oratio'")
+    if (!is.Numeric(oratio, posit = TRUE)) stop("bad input for 'oratio'")
 
     L = max(length(q1), length(q2), length(oratio))
-    if (length(q1) != L)  q1 = rep(q1, len=L)
-    if (length(q2) != L)  q2 = rep(q2, len=L)
-    if (length(oratio) != L)  oratio = rep(oratio, len=L)
+    if (length(q1) != L)  q1 = rep(q1, len = L)
+    if (length(q2) != L)  q2 = rep(q2, len = L)
+    if (length(oratio) != L)  oratio = rep(oratio, len = L)
 
     x=q1; y=q2
-    index = (x>=1 & y<1) | (y>=1 & x<1) | (x<=0 | y<=0) | (x>=1 & y>=1) |
-            (abs(oratio-1) < 1.0e-6)  #  .Machine$double.eps
+    index = (x >= 1 & y <  1) | (y >= 1 & x <  1) |
+            (x <= 0 | y <= 0) | (x >= 1 & y >= 1) |
+            (abs(oratio - 1) < 1.0e-6)  #  .Machine$double.eps
     ans = as.numeric(index)
     if (any(!index)) {
-        temp1 = 1 + (oratio[!index] -1) * (q1[!index] + q2[!index])
+        temp1 = 1 + (oratio[!index]  - 1) * (q1[!index] + q2[!index])
         temp2 = temp1 - sqrt(temp1^2 - 4 * oratio[!index] *
-                (oratio[!index]-1) * q1[!index] * q2[!index])
+                (oratio[!index] - 1) * q1[!index] * q2[!index])
         ans[!index] = 0.5 * temp2 / (oratio[!index] - 1)
     }
 
-    ind2 = (abs(oratio-1) < 1.0e-6) # .Machine$double.eps
+    ind2 = (abs(oratio - 1) < 1.0e-6) # .Machine$double.eps
     ans[ind2] = x[ind2] * y[ind2]
-    ans[x>=1 & y<1] = y[x>=1 & y<1]   # P(Y2 < q2) = q2
-    ans[y>=1 & x<1] = x[y>=1 & x<1]   # P(Y1 < q1) = q1
+    ans[x >= 1 & y<1] = y[x >= 1 & y<1]   # P(Y2 < q2) = q2
+    ans[y >= 1 & x<1] = x[y >= 1 & x<1]   # P(Y1 < q1) = q1
     ans[x<=0 | y<=0] = 0
-    ans[x>=1 & y>=1] = 1
+    ans[x >= 1 & y >= 1] = 1
     ans
 }
 
 
 
 rplack = function(n, oratio) {
-    if (!is.Numeric(n, posit=TRUE, allow=1, integ=TRUE)) stop("bad input for 'n'")
-    if (!is.Numeric(oratio, posit=TRUE)) stop("bad input for 'oratio'")
-    if (length(oratio) != n)  oratio = rep(oratio, len=n)
+    if (!is.Numeric(n, posit = TRUE, allow = 1, integ = TRUE)) stop("bad input for 'n'")
+    if (!is.Numeric(oratio, posit = TRUE)) stop("bad input for 'oratio'")
+    if (length(oratio) != n)  oratio = rep(oratio, len = n)
 
     y1 = U = runif(n)
     V = runif(n)
@@ -1140,30 +1144,32 @@ rplack = function(n, oratio) {
           (1 - 2 * V) *
           sqrt(oratio * (oratio + 4*Z*y1*(1-y1)*(1-oratio)^2))) / (oratio +
           Z*(1-oratio)^2)
-    matrix(c(y1, 0.5 * y2), nrow=n, ncol=2)
+    matrix(c(y1, 0.5 * y2), nrow=n, ncol = 2)
 }
 
 
 
-dplack = function(x1, x2, oratio, log=FALSE) {
+dplack = function(x1, x2, oratio, log = FALSE) {
     log.arg = log
     rm(log)
-    if (!is.Numeric(oratio, posit=TRUE)) stop("bad input for 'oratio'")
+
+    if (!is.Numeric(oratio, posit = TRUE))
+      stop("bad input for 'oratio'")
     L = max(length(x1), length(x2), length(oratio))
-    if (length(x1) != L)  x1 = rep(x1, len=L)
-    if (length(x2) != L)  x2 = rep(x2, len=L)
-    if (length(oratio) != L)  oratio = rep(oratio, len=L)
-    if ( !is.logical( log.arg ) || length( log.arg )!=1 )
-        stop("bad input for 'log'")
+    if (length(x1) != L)  x1 = rep(x1, len = L)
+    if (length(x2) != L)  x2 = rep(x2, len = L)
+    if (length(oratio) != L)  oratio = rep(oratio, len = L)
+    if ( !is.logical( log.arg ) || length( log.arg ) != 1 )
+        stop("bad input for argument 'log'")
 
     if ( log.arg ) {
-        ans = log(oratio) + log1p((oratio-1) *
+        ans = log(oratio) + log1p((oratio - 1) *
               (x1+x2-2*x1*x2)) - 1.5 *
-              log((1 + (x1+x2)*(oratio-1))^2 - 4 * oratio * (oratio-1)*x1*x2)
+              log((1 + (x1+x2)*(oratio - 1))^2 - 4 * oratio * (oratio - 1)*x1*x2)
         ans[(x1 < 0) | (x1 > 1) | (x2 < 0) | (x2 > 1)] = log(0)
     } else {
-        ans = oratio * ((oratio -1) * (x1+x2-2*x1*x2) + 1) / ((1 +
-              (x1+x2)*(oratio-1))^2 - 4 * oratio * (oratio-1)*x1*x2)^1.5
+        ans = oratio * ((oratio  - 1) * (x1+x2-2*x1*x2) + 1) / ((1 +
+              (x1+x2)*(oratio - 1))^2 - 4 * oratio * (oratio - 1)*x1*x2)^1.5
         ans[(x1 < 0) | (x1 > 1) | (x2 < 0) | (x2 > 1)] = 0
     }
     ans
@@ -1171,122 +1177,122 @@ dplack = function(x1, x2, oratio, log=FALSE) {
 
 
 
-plackett.control <- function(save.weight=TRUE, ...)
+plackett.control <- function(save.weight = TRUE, ...)
 {
     list(save.weight=save.weight)
 }
 
 
 
- plackett = function(link="loge", earg=list(),
-                     ioratio=NULL, method.init=1, nsimEIM=200) {
+ plackett = function(link = "loge", earg =list(),
+                     ioratio = NULL, imethod = 1, nsimEIM = 200) {
     if (mode(link) != "character" && mode(link) != "name")
         link = as.character(substitute(link))
     if (!is.list(earg)) earg = list()
-    if (length(ioratio) && (!is.Numeric(ioratio, posit=TRUE)))
+    if (length(ioratio) && (!is.Numeric(ioratio, posit = TRUE)))
         stop("'ioratio' must be positive")
-    if (!is.Numeric(method.init, allow=1, integ=TRUE, posit=TRUE) ||
-       method.init > 2) stop("method.init must be 1 or 2")
+    if (!is.Numeric(imethod, allow = 1, integ = TRUE, posit = TRUE) ||
+       imethod > 2) stop("imethod must be 1 or 2")
 
     new("vglmff",
-    blurb=c("Plackett Distribution\n",
+    blurb = c("Plackett distribution\n",
            "Links:    ",
-           namesof("oratio", link, earg= earg )),
-    initialize=eval(substitute(expression({
+           namesof("oratio", link, earg = earg )),
+    initialize = eval(substitute(expression({
         if (!is.matrix(y) || ncol(y) != 2)
             stop("the response must be a 2 column matrix") 
         if (any(y < 0) || any(y > 1))
             stop("the response must have values in the unit square")
-        predictors.names = namesof("oratio", .link, earg= .earg, short=TRUE)
+        predictors.names = namesof("oratio", .link, earg = .earg, short = TRUE)
         if (length(dimnames(y)))
             extra$dimnamesy2 = dimnames(y)[[2]]
         if (!length(etastart)) {
             orinit = if (length( .ioratio ))  .ioratio else {
-                if ( .method.init == 2) {
+                if ( .imethod == 2) {
                     scorp = cor(y)[1,2]
                     if (abs(scorp) <= 0.1) 1 else
                     if (abs(scorp) <= 0.3) 3^sign(scorp) else
                     if (abs(scorp) <= 0.6) 5^sign(scorp) else
                     if (abs(scorp) <= 0.8) 20^sign(scorp) else 40^sign(scorp)
                 } else {
-                    y10 = weighted.mean(y[,1], w)
+                    y10 = weighted.mean(y[, 1], w)
                     y20 = weighted.mean(y[,2], w)
-                    (0.5 + sum(w[(y[,1] <  y10) & (y[,2] <  y20)])) *
-                    (0.5 + sum(w[(y[,1] >= y10) & (y[,2] >= y20)])) / (
-                    ((0.5 + sum(w[(y[,1] <  y10) & (y[,2] >= y20)])) *
-                     (0.5 + sum(w[(y[,1] >= y10) & (y[,2] <  y20)]))))
+                    (0.5 + sum(w[(y[, 1] <  y10) & (y[,2] <  y20)])) *
+                    (0.5 + sum(w[(y[, 1] >= y10) & (y[,2] >= y20)])) / (
+                    ((0.5 + sum(w[(y[, 1] <  y10) & (y[,2] >= y20)])) *
+                     (0.5 + sum(w[(y[, 1] >= y10) & (y[,2] <  y20)]))))
                 }
             }
-            etastart = theta2eta(rep(orinit, len=n), .link, earg= .earg)
+            etastart = theta2eta(rep(orinit, len = n), .link, earg = .earg)
         }
-    }), list( .ioratio=ioratio, .link=link, .earg=earg,
-              .method.init=method.init ))),
-    inverse=eval(substitute(function(eta, extra=NULL) {
-        oratio = eta2theta(eta, .link, earg= .earg )
+    }), list( .ioratio=ioratio, .link = link, .earg = earg,
+              .imethod = imethod ))),
+    inverse = eval(substitute(function(eta, extra = NULL) {
+        oratio = eta2theta(eta, .link, earg = .earg )
         fv.matrix = matrix(0.5, length(oratio), 2)
         if (length(extra$dimnamesy2))
             dimnames(fv.matrix) = list(dimnames(eta)[[1]], extra$dimnamesy2)
         fv.matrix
-    }, list( .link=link, .earg=earg ))),
-    last=eval(substitute(expression({
+    }, list( .link = link, .earg = earg ))),
+    last = eval(substitute(expression({
         misc$link = c("oratio"= .link)
         misc$earg = list(oratio = .earg)
         misc$expected = FALSE
         misc$nsimEIM = .nsimEIM
-    }), list( .link=link, .earg=earg,
-              .nsimEIM=nsimEIM ))),
-    loglikelihood= eval(substitute(
-            function(mu, y, w, residuals = FALSE, eta, extra=NULL) {
-        oratio = eta2theta(eta, .link, earg= .earg )
+    }), list( .link = link, .earg = earg,
+              .nsimEIM = nsimEIM ))),
+    loglikelihood = eval(substitute(
+            function(mu, y, w, residuals = FALSE, eta, extra = NULL) {
+        oratio = eta2theta(eta, .link, earg = .earg )
         if (residuals) stop("loglikelihood residuals not ",
                             "implemented yet") else {
-            sum(w * dplack(x1= y[,1], x2= y[,2], oratio=oratio, log=TRUE))
+            sum(w * dplack(x1= y[, 1], x2= y[,2], oratio=oratio, log = TRUE))
         }
-    }, list( .link=link, .earg=earg ))),
-    vfamily=c("plackett"),
-    deriv=eval(substitute(expression({
-        oratio  = eta2theta(eta, .link, earg= .earg )
-        doratio.deta = dtheta.deta(oratio, .link, earg= .earg )
-        y1 = y[,1]
+    }, list( .link = link, .earg = earg ))),
+    vfamily = c("plackett"),
+    deriv = eval(substitute(expression({
+        oratio  = eta2theta(eta, .link, earg = .earg )
+        doratio.deta = dtheta.deta(oratio, .link, earg = .earg )
+        y1 = y[, 1]
         y2 = y[,2]
-        de3 = deriv3(~ (log(oratio) + log(1+(oratio-1) *
+        de3 = deriv3(~ (log(oratio) + log(1+(oratio - 1) *
               (y1+y2-2*y1*y2)) - 1.5 *
-              log((1 + (y1+y2)*(oratio-1))^2 - 4 * oratio * (oratio-1)*y1*y2)),
-                        name="oratio", hessian= FALSE)
+              log((1 + (y1+y2)*(oratio - 1))^2 - 4 * oratio * (oratio - 1)*y1*y2)),
+                        name = "oratio", hessian= FALSE)
         eval.de3 = eval(de3)
         dl.doratio =  attr(eval.de3, "gradient")
         w * dl.doratio * doratio.deta
-    }), list( .link=link, .earg=earg ))),
-    weight=eval(substitute(expression({
-        sd3 = deriv3(~ (log(oratio) + log(1+(oratio-1) *
+    }), list( .link = link, .earg = earg ))),
+    weight = eval(substitute(expression({
+        sd3 = deriv3(~ (log(oratio) + log(1+(oratio - 1) *
               (y1sim+y2sim-2*y1sim*y2sim)) - 1.5 *
-              log((1 + (y1sim+y2sim)*(oratio-1))^2 -
-              4 * oratio * (oratio-1)*y1sim*y2sim)),
-                        name="oratio", hessian= FALSE)
+              log((1 + (y1sim+y2sim)*(oratio - 1))^2 -
+              4 * oratio * (oratio - 1)*y1sim*y2sim)),
+                        name = "oratio", hessian= FALSE)
         run.var = 0
         for(ii in 1:( .nsimEIM )) {
             ysim = rplack(n, oratio=oratio)
-            y1sim = ysim[,1]
-            y2sim = ysim[,1]
+            y1sim = ysim[, 1]
+            y2sim = ysim[, 1]
             eval.sd3 = eval(sd3)
             dl.doratio =  attr(eval.sd3, "gradient")
             rm(ysim, y1sim, y2sim)
             temp3 = dl.doratio
-            run.var = ((ii-1) * run.var + temp3^2) / ii
+            run.var = ((ii - 1) * run.var + temp3^2) / ii
         }
         wz = if (intercept.only)
             matrix(colMeans(cbind(run.var)),
-                   n, dimm(M), byrow=TRUE) else cbind(run.var)
+                   n, dimm(M), byrow = TRUE) else cbind(run.var)
 
         wz = wz * doratio.deta^2
-        w * wz
-    }), list( .link=link, .earg=earg, .nsimEIM=nsimEIM ))))
+        c(w) * wz
+    }), list( .link = link, .earg = earg, .nsimEIM = nsimEIM ))))
 }
 
 
 
 
-damh = function(x1, x2, alpha, log=FALSE) {
+damh = function(x1, x2, alpha, log = FALSE) {
     log.arg = log
     rm(log)
     if (!is.Numeric(x1)) stop("bad input for 'x1'")
@@ -1294,9 +1300,9 @@ damh = function(x1, x2, alpha, log=FALSE) {
     if (!is.Numeric(alpha)) stop("bad input for 'alpha'")
     if (any(abs(alpha) > 1)) stop("'alpha' values out of range")
     L = max(length(x1), length(x2), length(alpha))
-    alpha = rep(alpha, len=L)
-    x1 = rep(x1, len=L)
-    x2 = rep(x2, len=L)
+    alpha = rep(alpha, len = L)
+    x1 = rep(x1, len = L)
+    x2 = rep(x2, len = L)
     temp = 1-alpha*(1-x1)*(1-x2)
     if (log.arg) {
         ans = log1p(-alpha+2*alpha*x1*x2/temp) - 2*log(temp)
@@ -1315,26 +1321,27 @@ pamh = function(q1, q2, alpha) {
     if (any(abs(alpha) > 1)) stop("'alpha' values out of range")
 
     L = max(length(q1), length(q2), length(alpha))
-    if (length(q1) != L)  q1 = rep(q1, len=L)
-    if (length(q2) != L)  q2 = rep(q2, len=L)
-    if (length(alpha) != L)  alpha = rep(alpha, len=L)
+    if (length(q1) != L)  q1 = rep(q1, len = L)
+    if (length(q2) != L)  q2 = rep(q2, len = L)
+    if (length(alpha) != L)  alpha = rep(alpha, len = L)
 
     x=q1; y=q2
-    index = (x>=1 & y<1) | (y>=1 & x<1) | (x<=0 | y<=0) | (x>=1 & y>=1)
+    index = (x >= 1 & y < 1) | (y >= 1 & x <  1) |
+            (x <= 0 | y<= 0) | (x >= 1 & y >= 1)
     ans = as.numeric(index)
     if (any(!index)) {
         ans[!index] = (q1[!index]*q2[!index]) / (1 -
                       alpha[!index]*(1-q1[!index])*(1-q2[!index]))
     }
-    ans[x>=1 & y<1] = y[x>=1 & y<1]   # P(Y2 < q2) = q2
-    ans[y>=1 & x<1] = x[y>=1 & x<1]   # P(Y1 < q1) = q1
-    ans[x<=0 | y<=0] = 0
-    ans[x>=1 & y>=1] = 1
+    ans[x >= 1 & y <  1] = y[x >= 1 & y < 1]   # P(Y2 < q2) = q2
+    ans[y >= 1 & x <  1] = x[y >= 1 & x < 1]   # P(Y1 < q1) = q1
+    ans[x <= 0 | y <= 0] = 0
+    ans[x >= 1 & y >= 1] = 1
     ans
 }
 
 ramh = function(n, alpha) {
-    if (!is.Numeric(n, posit=TRUE, allow=1, integ=TRUE)) stop("bad input for 'n'")
+    if (!is.Numeric(n, posit = TRUE, allow = 1, integ = TRUE)) stop("bad input for 'n'")
     if (!is.Numeric(alpha)) stop("bad input for 'alpha'")
     if (any(abs(alpha) > 1)) stop("'alpha' values out of range")
 
@@ -1343,112 +1350,359 @@ ramh = function(n, alpha) {
     b = 1-V1
     A = -alpha*(2*b*V2+1)+2*alpha^2*b^2*V2+1
     B = alpha^2*(4*b^2*V2-4*b*V2+1)+alpha*(4*V2-4*b*V2-2)+1
-    U2 = (2*V2*(alpha*b-1)^2)/(A+sqrt(B))
-    matrix(c(U1,U2), nrow=n, ncol=2)
+    U2 = (2*V2*(alpha*b - 1)^2)/(A+sqrt(B))
+    matrix(c(U1,U2), nrow=n, ncol = 2)
 }
 
-amh.control <- function(save.weight=TRUE, ...)
+amh.control <- function(save.weight = TRUE, ...)
 {
     list(save.weight=save.weight)
 }
 
- amh = function(lalpha="rhobit", ealpha=list(), ialpha=NULL,
-                method.init=1, nsimEIM=250)
+ amh = function(lalpha = "rhobit", ealpha=list(), ialpha = NULL,
+                imethod = 1, nsimEIM = 250)
 {
     if (mode(lalpha) != "character" && mode(lalpha) != "name")
       lalpha = as.character(substitute(lalpha))
     if (!is.list(ealpha)) ealpha = list()
     if (length(ialpha) && (abs(ialpha) > 1))
       stop("'ialpha' should be less than or equal to 1 in absolute value")
-    if (!is.Numeric(method.init, allow=1, integ=TRUE, posit=TRUE) ||
-      method.init > 2) stop("method.init must be 1 or 2")
+    if (!is.Numeric(imethod, allow = 1, integ = TRUE, posit = TRUE) ||
+      imethod > 2) stop("imethod must be 1 or 2")
     if (length(nsimEIM) &&
-      (!is.Numeric(nsimEIM, allow=1, integ=TRUE) || nsimEIM <= 50))
+      (!is.Numeric(nsimEIM, allow = 1, integ = TRUE) || nsimEIM <= 50))
       stop("'nsimEIM' should be an integer greater than 50")
 
     new("vglmff",
-    blurb=c("Ali-Mikhail-Haq Distribution\n",
+    blurb = c("Ali-Mikhail-Haq distribution\n",
            "Links:    ",
-           namesof("alpha", lalpha, earg= ealpha )),
-    initialize=eval(substitute(expression({
+           namesof("alpha", lalpha, earg = ealpha )),
+    initialize = eval(substitute(expression({
         if (!is.matrix(y) || ncol(y) != 2)
             stop("the response must be a 2 column matrix")
         if (any(y < 0) || any(y > 1))
             stop("the response must have values in the unit square")
-        predictors.names=c(namesof("alpha", .lalpha, earg= .ealpha, short=TRUE))
+        predictors.names=c(namesof("alpha", .lalpha, earg = .ealpha, short = TRUE))
         if (length(dimnames(y)))
             extra$dimnamesy2 = dimnames(y)[[2]]
         if (!length(etastart)) {
             ainit  = if (length( .ialpha ))  .ialpha else {
-                mean1 = if ( .method.init == 1) weighted.mean(y[,1],w) else
-                        median(y[,1])
-                mean2 = if ( .method.init == 1) weighted.mean(y[,2],w) else
+                mean1 = if ( .imethod == 1) weighted.mean(y[, 1],w) else
+                        median(y[, 1])
+                mean2 = if ( .imethod == 1) weighted.mean(y[,2],w) else
                         median(y[,2])
-                Finit = weighted.mean(y[,1] <= mean1 & y[,2] <= mean2, w)
+                Finit = weighted.mean(y[, 1] <= mean1 & y[,2] <= mean2, w)
                 (1 - (mean1 * mean2 / Finit)) / ((1-mean1) * (1-mean2))
             }
             ainit = min(0.95, max(ainit, -0.95))
-            etastart = theta2eta(rep(ainit, len=n), .lalpha, earg= .ealpha )
+            etastart = theta2eta(rep(ainit, len = n), .lalpha, earg = .ealpha )
         }
-    }), list( .lalpha=lalpha, .ealpha=ealpha, .ialpha=ialpha,
-              .method.init=method.init))),
-    inverse=eval(substitute(function(eta, extra=NULL) {
-        alpha = eta2theta(eta, .lalpha, earg= .ealpha )
+    }), list( .lalpha = lalpha, .ealpha = ealpha, .ialpha=ialpha,
+              .imethod = imethod))),
+    inverse = eval(substitute(function(eta, extra = NULL) {
+        alpha = eta2theta(eta, .lalpha, earg = .ealpha )
         fv.matrix = matrix(0.5, length(alpha), 2)
         if (length(extra$dimnamesy2))
             dimnames(fv.matrix) = list(names(eta), extra$dimnamesy2)
         fv.matrix
-    }, list(.lalpha=lalpha, .ealpha=ealpha ))),
-    last=eval(substitute(expression({
+    }, list(.lalpha = lalpha, .ealpha = ealpha ))),
+    last = eval(substitute(expression({
         misc$link = c("alpha"= .lalpha)
         misc$earg = list("alpha"= .ealpha )
         misc$expected = TRUE
         misc$nsimEIM = .nsimEIM
-    }), list(.lalpha=lalpha, .ealpha=ealpha, .nsimEIM=nsimEIM ))),
-    loglikelihood= eval(substitute(
-            function(mu, y, w, residuals = FALSE, eta, extra=NULL) {
-        alpha = eta2theta(eta, .lalpha, earg= .ealpha )
+    }), list(.lalpha = lalpha, .ealpha = ealpha, .nsimEIM = nsimEIM ))),
+    loglikelihood = eval(substitute(
+            function(mu, y, w, residuals = FALSE, eta, extra = NULL) {
+        alpha = eta2theta(eta, .lalpha, earg = .ealpha )
         if (residuals) stop("loglikelihood residuals not ",
                             "implemented yet") else {
-            sum(w * damh(x1=y[,1], x2=y[,2], alpha=alpha, log=TRUE))
+            sum(w * damh(x1=y[, 1], x2=y[,2], alpha=alpha, log = TRUE))
         }
-    }, list( .lalpha=lalpha, .earg=ealpha ))),
-    vfamily=c("amh"),
-    deriv=eval(substitute(expression({
-        alpha = eta2theta(eta, .lalpha, earg= .ealpha )
-        dalpha.deta = dtheta.deta(alpha, .lalpha, earg= .ealpha )
-        y1 = y[,1]
+    }, list( .lalpha = lalpha, .earg = ealpha ))),
+    vfamily = c("amh"),
+    deriv = eval(substitute(expression({
+        alpha = eta2theta(eta, .lalpha, earg = .ealpha )
+        dalpha.deta = dtheta.deta(alpha, .lalpha, earg = .ealpha )
+        y1 = y[, 1]
         y2 = y[,2]
         de3 = deriv3(~ (log(1-alpha+(2*alpha*y1*y2/(1-alpha*(1-y1)*(1-y2))))-
                         2*log(1-alpha*(1-y1)*(1-y2))) ,
-                        name="alpha", hessian= FALSE)
+                        name = "alpha", hessian= FALSE)
         eval.de3 = eval(de3)
         dl.dalpha =  attr(eval.de3, "gradient")
         w * dl.dalpha * dalpha.deta
-    }), list(.lalpha=lalpha, .ealpha=ealpha ))),
-    weight=eval(substitute(expression({
+    }), list(.lalpha = lalpha, .ealpha = ealpha ))),
+    weight = eval(substitute(expression({
         sd3 = deriv3(~ (log(1-alpha+
                         (2*alpha*y1sim*y2sim/(1-alpha*(1-y1sim)*(1-y2sim))))-
                         2*log(1-alpha*(1-y1sim)*(1-y2sim))) ,
-                        name="alpha", hessian= FALSE)
+                        name = "alpha", hessian= FALSE)
         run.var = 0
         for(ii in 1:( .nsimEIM )) {
             ysim = ramh(n, alpha=alpha)
-            y1sim = ysim[,1]
-            y2sim = ysim[,1]
+            y1sim = ysim[, 1]
+            y2sim = ysim[, 1]
             eval.sd3 = eval(sd3)
             dl.alpha =  attr(eval.sd3, "gradient")
             rm(ysim, y1sim, y2sim)
             temp3 = dl.dalpha
-            run.var = ((ii-1) * run.var + temp3^2) / ii
+            run.var = ((ii - 1) * run.var + temp3^2) / ii
         }
         wz = if (intercept.only)
             matrix(colMeans(cbind(run.var)),
-                   n, dimm(M), byrow=TRUE) else cbind(run.var)
+                   n, dimm(M), byrow = TRUE) else cbind(run.var)
         wz = wz * dalpha.deta^2
-        w * wz
-    }), list( .lalpha=lalpha, .ealpha=ealpha, .nsimEIM=nsimEIM ))))
+        c(w) * wz
+    }), list( .lalpha = lalpha, .ealpha = ealpha, .nsimEIM = nsimEIM ))))
 }
 
 
 
+
+
+
+
+
+
+
+
+
+
+
+
+dbinorm = function(x1, x2, mean1 = 0, mean2 = 0, sd1 = 1, sd2 = 1,
+                   rho = 0, log = FALSE) {
+  log.arg = log
+  rm(log)
+
+  temp5 = 1 - rho^2
+  zedd1 = (x1 - mean1) / sd1
+  zedd2 = (x2 - mean2) / sd2
+  logpdf = -log(2 * pi) - log(sd1 ) - log(sd2) -
+            0.5 * log1p(-rho^2) +
+           -(0.5 / temp5)  * (zedd1^2 - 2 * rho * zedd1 * zedd2 + zedd2^2)
+  if (log.arg) logpdf else exp(logpdf)
+}
+
+
+
+
+ binormal = function(lmean1 = "identity", emean1 = list(),
+                     lmean2 = "identity", emean2 = list(),
+                     lsd1   = "loge",     esd1   = list(),
+                     lsd2   = "loge",     esd2   = list(),
+                     lrho   = "rhobit",   erho   = list(),
+                     imean1 = NULL,       imean2 = NULL,
+                     isd1   = NULL,       isd2   = NULL,
+                     irho   = NULL,       imethod = 1,
+                     equalmean = FALSE,   equalsd = FALSE,
+                     zero = 3:5) {
+  if (mode(lmean1) != "character" && mode(lmean1) != "name")
+    lmean1 = as.character(substitute(lmean1))
+  if (mode(lmean2) != "character" && mode(lmean2) != "name")
+    lmean2 = as.character(substitute(lmean2))
+  if (mode(lsd1  ) != "character" && mode(lsd1  ) != "name")
+    lsd1   = as.character(substitute(lsd1  ))
+  if (mode(lsd2  ) != "character" && mode(lsd2  ) != "name")
+    lsd2   = as.character(substitute(lsd2  ))
+  if (mode(lrho  ) != "character" && mode(lrho  ) != "name")
+    lrho   = as.character(substitute(lrho  ))
+
+  if (!is.list(emean1)) emean1 = list()
+  if (!is.list(emean2)) emean2 = list()
+  if (!is.list(esd1  )) esd1   = list()
+  if (!is.list(esd2  )) esd2   = list()
+  if (!is.list(erho  )) erho   = list()
+
+  trivial1 = is.logical(equalmean) && length(equalmean) == 1 && !equalmean
+  trivial2 = is.logical(equalsd  ) && length(equalsd  ) == 1 && !equalsd
+  if(!trivial1 && !trivial2)
+    stop("only one of 'equalmean' and 'equalsd' can be assigned a value")
+
+  if (!is.Numeric(imethod, allow = 1, integ = TRUE, posit = TRUE) ||
+     imethod > 2) stop("argument 'imethod' must be 1 or 2")
+
+  new("vglmff",
+  blurb = c("Bivariate normal distribution\n",
+            "Links:    ",
+            namesof("mean1", lmean1, earg = emean1 ), "\n",
+            namesof("mean2", lmean2, earg = emean2 ), "\n",
+            namesof("sd1",   lsd1,   earg = sd1    ), "\n",
+            namesof("sd2",   lsd2,   earg = sd2    ), "\n",
+            namesof("rho",   lrho,   earg = erho   )),
+  constraints = eval(substitute(expression({
+    temp8.m <- diag(5)[, -2]
+    temp8.m[2, 1] <- 1
+    temp8.s <- diag(5)[, -4]
+    temp8.s[4, 3] <- 1
+    constraints <- cm.vgam(temp8.m, x, .equalmean,
+                           constraints, intercept.apply = TRUE)
+    constraints <- cm.vgam(temp8.s, x, .equalsd,
+                           constraints, intercept.apply = TRUE)
+    constraints = cm.zero.vgam(constraints, x, .zero, M)
+  }), list( .zero = zero,
+            .equalsd   = equalsd,
+            .equalmean = equalmean ))),
+  initialize = eval(substitute(expression({
+    if (!is.matrix(y) || ncol(y) != 2)
+      stop("the response must be a 2 column matrix") 
+
+    predictors.names = c(
+      namesof("mean1", .lmean1, earg = .emean1, short = TRUE),
+      namesof("mean2", .lmean2, earg = .emean2, short = TRUE),
+      namesof("sd1",   .lsd1,   earg = .esd1,   short = TRUE),
+      namesof("sd2",   .lsd2,   earg = .esd2,   short = TRUE),
+      namesof("rho",   .lrho,   earg = .erho,   short = TRUE))
+
+    if (length(dimnames(y)))
+      extra$dimnamesy2 = dimnames(y)[[2]]
+
+    if (!length(etastart)) {
+      imean1 = rep(if (length( .imean1 )) .imean1 else
+                   weighted.mean(y[, 1], w = w), len = n)
+      imean2 = rep(if (length( .imean2 )) .imean2 else
+                   weighted.mean(y[, 2], w = w), len = n)
+      isd1   = rep(if (length( .isd1 )) .isd1 else  sd(y[, 1]), len = n)
+      isd2   = rep(if (length( .isd2 )) .isd2 else  sd(y[, 2]), len = n)
+      irho   = rep(if (length( .irho )) .irho else cor(y[, 1], y[,2]),
+                   len = n)
+
+      if ( .imethod == 2) {
+        imean1 = abs(imean1) + 0.01
+        imean2 = abs(imean2) + 0.01
+      }
+      etastart = cbind(theta2eta(imean1, .lmean1, earg = .emean1),
+                       theta2eta(imean2, .lmean2, earg = .emean2),
+                       theta2eta(isd1,   .lsd1,   earg = .esd1),
+                       theta2eta(isd2,   .lsd2,   earg = .esd2),
+                       theta2eta(irho,   .lrho,   earg = .erho))
+    }
+  }), list( .lmean1 = lmean1, .lmean2 = lmean2,
+            .emean1 = emean1, .emean2 = emean2,
+            .lsd1   = lsd1  , .lsd2   = lsd2  , .lrho = lrho,
+            .esd1   = esd1  , .esd2   = esd2  , .erho = erho,
+            .imethod = imethod,
+            .imean1 = imean1, .imean2 = imean2,
+            .isd1   = isd1,   .isd2   = isd2,
+            .irho   = irho ))),
+  inverse = eval(substitute(function(eta, extra = NULL) {
+    mean1 = eta2theta(eta[, 1], .lmean1, earg = .emean1)
+    mean2 = eta2theta(eta[, 2], .lmean2, earg = .emean2)
+    fv.matrix = cbind(mean1, mean2)
+    if (length(extra$dimnamesy2))
+      dimnames(fv.matrix) = list(names(eta), extra$dimnamesy2)
+    fv.matrix
+  }  , list( .lmean1 = lmean1, .lmean2 = lmean2,
+             .emean1 = emean1, .emean2 = emean2,
+             .lsd1   = lsd1  , .lsd2   = lsd2  , .lrho = lrho,
+             .esd1   = esd1  , .esd2   = esd2  , .erho = erho ))),
+
+  last = eval(substitute(expression({
+    misc$link =   c("mean1" = .lmean1,
+                    "mean2" = .lmean2,
+                    "sd1"   = .lsd1,
+                    "sd2"   = .lsd2,
+                    "rho"   = .lrho)
+    misc$earg = list("mean1" = .emean1,
+                     "mean2" = .emean2, 
+                     "sd1"   = .esd1,
+                     "sd2"   = .esd2,
+                     "rho"   = .erho)
+    misc$expected = TRUE
+  }) , list( .lmean1 = lmean1, .lmean2 = lmean2,
+             .emean1 = emean1, .emean2 = emean2,
+             .lsd1   = lsd1  , .lsd2   = lsd2  , .lrho = lrho,
+             .esd1   = esd1  , .esd2   = esd2  , .erho = erho ))),
+  loglikelihood = eval(substitute(
+          function(mu, y, w, residuals = FALSE, eta, extra = NULL) {
+    mean1 = eta2theta(eta[, 1], .lmean1, earg = .emean1)
+    mean2 = eta2theta(eta[, 2], .lmean2, earg = .emean2)
+    sd1   = eta2theta(eta[, 3], .lsd1  , earg = .esd1  )
+    sd2   = eta2theta(eta[, 4], .lsd2  , earg = .esd2  )
+    Rho   = eta2theta(eta[, 5], .lrho  , earg = .erho  )
+
+    if (residuals) stop("loglikelihood residuals not ",
+                          "implemented yet") else {
+      sum(w * dbinorm(x1 = y[, 1], x2 = y[, 2],
+                      mean1 = mean1, mean2 = mean2,
+                      sd1 = sd1, sd2 = sd2, rho = Rho, log = TRUE))
+    }
+  } , list( .lmean1 = lmean1, .lmean2 = lmean2,
+            .emean1 = emean1, .emean2 = emean2,
+            .lsd1   = lsd1  , .lsd2   = lsd2  , .lrho = lrho,
+            .esd1   = esd1  , .esd2   = esd2  , .erho = erho,
+            .imethod = imethod ))),
+  vfamily = c("binormal"),
+  deriv = eval(substitute(expression({
+    mean1 = eta2theta(eta[, 1], .lmean1, earg = .emean1)
+    mean2 = eta2theta(eta[, 2], .lmean2, earg = .emean2)
+    sd1   = eta2theta(eta[, 3], .lsd1  , earg = .esd1  )
+    sd2   = eta2theta(eta[, 4], .lsd2  , earg = .esd2  )
+    Rho   = eta2theta(eta[, 5], .lrho  , earg = .erho  )
+
+    zedd1 = (y[, 1] - mean1) / sd1
+    zedd2 = (y[, 2] - mean2) / sd2
+    temp5 = 1 - Rho^2
+
+    SigmaInv = matrix(0, n, dimm(2))
+    SigmaInv[, iam(1, 1, M = 2)] = 1 / ((sd1^2) * temp5)
+    SigmaInv[, iam(2, 2, M = 2)] = 1 / ((sd2^2) * temp5)
+    SigmaInv[, iam(1, 2, M = 2)] = -Rho / (sd1 * sd2 * temp5)
+    dl.dmeans = mux22(t(SigmaInv), y - cbind(mean1, mean2), M = 2,
+                      as.matrix = TRUE)
+    dl.dsd1   = -1 / sd1 + zedd1 * (zedd1 - Rho * zedd2) / (sd1 * temp5)
+    dl.dsd2   = -1 / sd2 + zedd2 * (zedd2 - Rho * zedd1) / (sd2 * temp5)
+    dl.drho   = -Rho * (zedd1^2 - 2 * Rho * zedd1 * zedd2 +
+                        zedd2^2) / temp5^2 +
+                zedd1 * zedd2 / temp5 +
+                Rho / temp5
+
+    dmean1.deta = dtheta.deta(mean1, .lmean1) 
+    dmean2.deta = dtheta.deta(mean2, .lmean2) 
+    dsd1.deta   = dtheta.deta(sd1  , .lsd1  ) 
+    dsd2.deta   = dtheta.deta(sd2  , .lsd2  ) 
+    drho.deta   = dtheta.deta(Rho  , .lrho  ) 
+    dthetas.detas  = cbind(dmean1.deta,
+                           dmean2.deta,
+                           dsd1.deta,
+                           dsd2.deta,
+                           drho.deta)
+
+    c(w) * cbind(dl.dmeans[, 1],
+                 dl.dmeans[, 2],
+                 dl.dsd1,
+                 dl.dsd2,
+                 dl.drho) * dthetas.detas
+  }), list( .lmean1 = lmean1, .lmean2 = lmean2,
+            .emean1 = emean1, .emean2 = emean2,
+            .lsd1   = lsd1  , .lsd2   = lsd2  , .lrho = lrho,
+            .esd1   = esd1  , .esd2   = esd2  , .erho = erho,
+            .imethod = imethod ))),
+
+  weight = eval(substitute(expression({
+    wz = matrix(0.0, n, dimm(M))
+    wz[, iam(1, 1, M)] = SigmaInv[, iam(1, 1, M = 2)]
+    wz[, iam(2, 2, M)] = SigmaInv[, iam(2, 2, M = 2)]
+    wz[, iam(1, 2, M)] = SigmaInv[, iam(1, 2, M = 2)]
+    wz[, iam(3, 3, M)] = (1 + 1 / temp5) / sd1^2
+    wz[, iam(4, 4, M)] = (1 + 1 / temp5) / sd2^2
+    wz[, iam(3, 4, M)] = -(Rho^2) / (temp5 * sd1 * sd2)
+    wz[, iam(5, 5, M)] = 2 * (1 + 2 * Rho^2) / temp5^2 -
+                         (1 + Rho^2) / temp5^2
+    wz[, iam(3, 5, M)] = -Rho / (sd1 * temp5)
+    wz[, iam(4, 5, M)] = -Rho / (sd2 * temp5)
+    for (ilocal in 1:M)
+      for (jlocal in ilocal:M)
+        wz[, iam(ilocal, jlocal, M)] = wz[, iam(ilocal, jlocal, M)] *
+                                       dthetas.detas[, ilocal] *
+                                       dthetas.detas[, jlocal]
+      c(w) * wz
+  }), list( .lmean1 = lmean1, .lmean2 = lmean2,
+            .emean1 = emean1, .emean2 = emean2,
+            .lsd1   = lsd1  , .lsd2   = lsd2  , .lrho = lrho,
+            .esd1   = esd1  , .esd2   = esd2  , .erho = erho,
+            .imethod = imethod ))))
+}
+
+
diff --git a/R/family.categorical.R b/R/family.categorical.R
index 7f37bb1..e9a47bb 100644
--- a/R/family.categorical.R
+++ b/R/family.categorical.R
@@ -261,11 +261,11 @@ dmultinomial = function(x, size = NULL, prob, log = FALSE,
         if ( .reverse ) {
             djr = eta2theta(eta, .link, earg = .earg )
             Mp1 = ncol(extra$mymat)
-            w * (y[,-1]/djr - extra$mymat[,-Mp1]/(1-djr)) *
+            c(w) * (y[,-1]/djr - extra$mymat[,-Mp1]/(1-djr)) *
               dtheta.deta(djr, .link, earg = .earg )
         } else {
             dj = eta2theta(eta, .link, earg = .earg )
-            w * (y[,-ncol(y)]/dj - extra$mymat[,-1]/(1-dj)) *
+            c(w) * (y[,-ncol(y)]/dj - extra$mymat[,-1]/(1-dj)) *
               dtheta.deta(dj, .link, earg = .earg )
         }
     }), list( .earg = earg, .link = link, .reverse = reverse) )),
@@ -273,11 +273,13 @@ dmultinomial = function(x, size = NULL, prob, log = FALSE,
         if ( .reverse ) {
             cump = tapplymat1(mu, "cumsum")
             ddjr.deta = dtheta.deta(djr, .link, earg = .earg )
-            wz = w * ddjr.deta^2 * (mu[,-1]/djr^2 + cump[,1:M]/(1-djr)^2)
+            wz = c(w) * ddjr.deta^2 *
+                 (mu[,-1] / djr^2 + cump[,1:M] / (1-djr)^2)
         } else {
             ccump = tapplymat1(mu[,ncol(mu):1], "cumsum")[,ncol(mu):1]
             ddj.deta = dtheta.deta(dj, .link, earg = .earg )
-            wz = w * ddj.deta^2 * (mu[,1:M]/dj^2 + ccump[,-1]/(1-dj)^2)
+            wz = c(w) * ddj.deta^2 *
+                 (mu[,1:M] / dj^2 + ccump[,-1] / (1-dj)^2)
         }
 
         wz
@@ -387,11 +389,11 @@ dmultinomial = function(x, size = NULL, prob, log = FALSE,
         if ( .reverse ) {
             djrs = eta2theta(eta, .link, earg = .earg )
             Mp1 = ncol(extra$mymat)
-            -w * (y[,-1]/(1-djrs) - extra$mymat[,-Mp1]/djrs) *
+            -c(w) * (y[,-1]/(1-djrs) - extra$mymat[,-Mp1]/djrs) *
               dtheta.deta(djrs, .link, earg = .earg )
         } else {
             djs = eta2theta(eta, .link, earg = .earg )
-            -w * (y[,-ncol(y)]/(1-djs) - extra$mymat[,-1]/djs) *
+            -c(w) * (y[,-ncol(y)]/(1-djs) - extra$mymat[,-1]/djs) *
               dtheta.deta(djs, .link, earg = .earg )
         }
     }), list( .earg = earg, .link = link, .reverse = reverse) )),
@@ -399,11 +401,13 @@ dmultinomial = function(x, size = NULL, prob, log = FALSE,
         if ( .reverse ) {
             cump = tapplymat1(mu, "cumsum")
             ddjrs.deta = dtheta.deta(djrs, .link, earg = .earg )
-            wz = w * ddjrs.deta^2 * (mu[,-1]/(1-djrs)^2 + cump[,1:M]/djrs^2)
+            wz = c(w) * ddjrs.deta^2 *
+                 (mu[, -1] / (1-djrs)^2 + cump[, 1:M] / djrs^2)
         } else {
-            ccump = tapplymat1(mu[,ncol(mu):1], "cumsum")[,ncol(mu):1]
+            ccump = tapplymat1(mu[, ncol(mu):1], "cumsum")[, ncol(mu):1]
             ddjs.deta = dtheta.deta(djs, .link, earg = .earg )
-            wz = w * ddjs.deta^2 * (mu[,1:M]/(1-djs)^2 + ccump[,-1]/djs^2)
+            wz = c(w) * ddjs.deta^2 *
+                 (mu[, 1:M] / (1 - djs)^2 + ccump[, -1] / djs^2)
         }
 
         wz
@@ -563,10 +567,10 @@ vglm.vcategorical.control = function(maxit=30, trace=FALSE, panic=TRUE, ...)
     vfamily = c("multinomial", "vcategorical"),
     deriv = eval(substitute(expression({
         if ( .refLevel < 0) {
-            w * (y[,-ncol(y)] - mu[,-ncol(y)])
+            c(w) * (y[,-ncol(y)] - mu[,-ncol(y)])
         } else {
             use.refLevel = if ( .refLevel < 0) M+1 else .refLevel
-            w * (y[,-use.refLevel] - mu[,-use.refLevel])
+            c(w) * (y[,-use.refLevel] - mu[,-use.refLevel])
         }
     }), list( .refLevel = refLevel ))),
     weight = eval(substitute(expression({
@@ -575,7 +579,9 @@ vglm.vcategorical.control = function(maxit=30, trace=FALSE, panic=TRUE, ...)
 
         use.refLevel = if ( .refLevel < 0) M+1 else .refLevel
 
-        if (M == 1) wz = mu[,3-use.refLevel] * (1-mu[,3-use.refLevel]) else {
+        if (M == 1) {
+            wz = mu[,3-use.refLevel] * (1-mu[,3-use.refLevel])
+        } else {
             index = iam(NA, NA, M, both=TRUE, diag=TRUE)
             myinc = (index$row.index >= use.refLevel)
             index$row.index[myinc] = index$row.index[myinc] + 1
@@ -594,7 +600,7 @@ vglm.vcategorical.control = function(maxit=30, trace=FALSE, panic=TRUE, ...)
             wz[atiny,1:M] = wz[atiny,1:M] * (1 + .Machine$double.eps^0.5) +
                             .Machine$double.eps
         }
-        w * wz
+        c(w) * wz
     }), list( .refLevel = refLevel ))))
 }
 
@@ -636,7 +642,7 @@ vglm.vcategorical.control = function(maxit=30, trace=FALSE, panic=TRUE, ...)
             constraints = cm.vgam(matrix(1,M,1), x, .parallel, constraints,
                                   intercept.apply = .intercept.apply)
         }
-    }), list( .parallel = parallel, .mv=mv, .intercept.apply=intercept.apply ))),
+    }), list( .parallel = parallel, .mv = mv, .intercept.apply=intercept.apply ))),
     deviance=eval(substitute(
         function(mu, y, w, residuals=FALSE, eta, extra = NULL) {
 
@@ -793,7 +799,7 @@ vglm.vcategorical.control = function(maxit=30, trace=FALSE, panic=TRUE, ...)
                       earg= .earg)
         }
         answer
-    }, list( .link = link, .reverse = reverse, .earg = earg, .mv=mv ))),
+    }, list( .link = link, .reverse = reverse, .earg = earg, .mv = mv ))),
     loglikelihood = function(mu, y, w, residuals = FALSE, eta, extra = NULL)
         if (residuals) stop("loglikelihood residuals ",
                             "not implemented yet") else {
@@ -828,15 +834,15 @@ vglm.vcategorical.control = function(maxit=30, trace=FALSE, panic=TRUE, ...)
                     (y[,aindex, drop = FALSE]/mu.use[,aindex, drop = FALSE] -
                      y[,1+aindex, drop = FALSE]/mu.use[,1+aindex, drop = FALSE])
             }
-            (if ( .reverse) -w  else w) * dcump.deta * resmat 
+            (if ( .reverse) -c(w)  else c(w)) * dcump.deta * resmat 
         } else {
             cump = eta2theta(eta, .link, earg = .earg)
             dcump.deta = dtheta.deta(cump, .link, earg = .earg)
-            (if ( .reverse) -w  else w) * dcump.deta *
+            c(if ( .reverse) -c(w)  else c(w)) * dcump.deta *
                 (y[,-(M+1)]/mu.use[,-(M+1)] - y[,-1]/mu.use[,-1])
         }
         deriv.answer
-    }), list( .link = link, .reverse = reverse, .earg = earg, .mv=mv ))),
+    }), list( .link = link, .reverse = reverse, .earg = earg, .mv = mv ))),
     weight = eval(substitute(expression({
         if ( .mv ) {
             NOS = extra$NOS
@@ -845,13 +851,15 @@ vglm.vcategorical.control = function(maxit=30, trace=FALSE, panic=TRUE, ...)
             for(iii in 1:NOS) {
                 cindex = (iii-1)*(Llevels-1) + 1:(Llevels-1)
                 aindex = (iii-1)*(Llevels)   + 1:(Llevels-1)
-                wz[,cindex] = w * dcump.deta[,cindex, drop = FALSE]^2 *
-                (1/mu.use[,aindex, drop = FALSE] + 1/mu.use[,1+aindex, drop = FALSE])
+                wz[,cindex] = c(w) * dcump.deta[,cindex, drop = FALSE]^2 *
+                              (1 / mu.use[,   aindex, drop = FALSE] +
+                               1 / mu.use[, 1+aindex, drop = FALSE])
             }
             if (Llevels-1 > 1) {
                 iii = 1
-                oindex = (iii-1)*(Llevels-1) + 1:(Llevels-2)
-                wz = cbind(wz, -w * dcump.deta[,oindex] * dcump.deta[,1+oindex])
+                oindex = (iii-1) * (Llevels-1) + 1:(Llevels-2)
+                wz = cbind(wz, -c(w) *
+                     dcump.deta[, oindex] * dcump.deta[, 1+oindex])
 
 
                 if (NOS > 1) {
@@ -860,7 +868,7 @@ vglm.vcategorical.control = function(maxit=30, trace=FALSE, panic=TRUE, ...)
                     for(iii in 2:NOS) {
                         oindex = (iii-1)*(Llevels-1) + 1:(Llevels-2)
                         wz[,cptrwz + 1 + (1:(Llevels-2))] =
-                              -w * dcump.deta[,oindex] *
+                              -c(w) * dcump.deta[,oindex] *
                                    dcump.deta[,1+oindex]
                         cptrwz = cptrwz + Llevels - 1 # Move it along a bit
                     }
@@ -870,13 +878,13 @@ vglm.vcategorical.control = function(maxit=30, trace=FALSE, panic=TRUE, ...)
 
             }
         } else {
-            wz = w * dcump.deta^2 * (1/mu.use[,1:M] + 1/mu.use[,-1])
+            wz = c(w) * dcump.deta^2 * (1/mu.use[,1:M] + 1/mu.use[,-1])
             if (M > 1)
-                wz = cbind(wz, -w * dcump.deta[,-M] *
+                wz = cbind(wz, -c(w) * dcump.deta[,-M] *
                             dcump.deta[,2:M] / mu.use[,2:M])
         }
         wz
-    }), list( .earg = earg, .link = link, .mv=mv ))))
+    }), list( .earg = earg, .link = link, .mv = mv ))))
 }
 
 
@@ -985,10 +993,10 @@ vglm.vcategorical.control = function(maxit=30, trace=FALSE, panic=TRUE, ...)
         dzeta.deta = dtheta.deta(zeta, .link, earg = .earg )
         if ( .reverse ) {
             cumy = tapplymat1(y, "cumsum")
-            w * dzeta.deta * (cumy[,1:M] / zeta - score)
+            c(w) * dzeta.deta * (cumy[,1:M] / zeta - score)
         } else {
             ccumy = tapplymat1(y[,ncol(y):1], "cumsum")[,ncol(y):1]
-            w * dzeta.deta * (ccumy[,-1] / zeta - score)
+            c(w) * dzeta.deta * (ccumy[,-1] / zeta - score)
         }
     }), list( .earg = earg, .link = link, .reverse = reverse) )),
     weight = eval(substitute(expression({
@@ -1008,7 +1016,7 @@ vglm.vcategorical.control = function(maxit=30, trace=FALSE, panic=TRUE, ...)
             ccump = tapplymat1(mu[,ncol(mu):1], "cumsum")[, ncol(mu):1]
             wz[,1:M] = (ccump[,-1] / zeta^2 - score^2) * dzeta.deta^2
         }
-        w * wz
+        c(w) * wz
     }), list( .earg = earg, .link = link, .reverse = reverse ))))
 }
 
@@ -1151,7 +1159,7 @@ acat.deriv = function(zeta, reverse, M, n)
                     (alpha[uindex[ind5$row]] + alpha[uindex[ind5$col]])^2
             }
         }
-        wz = wz * w
+        wz = c(w) * wz
         wz
     }), list( .refvalue = refvalue, .refgp = refgp ))))
 }
@@ -1240,7 +1248,8 @@ bratt = function(refgp="last",
     loglikelihood = function(mu, y, w, residuals = FALSE, eta, extra = NULL)
         if (residuals) stop("loglikelihood residuals not ",
                             "implemented yet") else {
-            sum(w * (y * log(mu) + 0.5 * extra$ties * log(attr(mu, "probtie"))))
+          sum(c(w) * (y * log(mu) +
+                      0.5 * extra$ties * log(attr(mu, "probtie"))))
         },
     vfamily = c("bratt"),
     deriv = eval(substitute(expression({
@@ -1315,7 +1324,7 @@ bratt = function(refgp="last",
                     -alpha[jay] * alpha0 * sum(naj / Daj^2)
             }
         }
-        wz = wz * w
+        wz = c(w) * wz
         wz
     }), list( .refvalue = refvalue, .refgp = refgp ))))
 }
@@ -1577,7 +1586,7 @@ tapplymat1 = function(mat, function.arg=c("cumsum", "diff", "cumprod"))
                cptr = cptr + 1
             }
         }
-        resmat = w * resmat * dmu.deta
+        resmat = c(w) * resmat * dmu.deta
         resmat
     }), list( .link = link, .earg = earg, .countdata=countdata ))),
     weight = eval(substitute(expression({
@@ -1590,7 +1599,7 @@ tapplymat1 = function(mat, function.arg=c("cumsum", "diff", "cumprod"))
                 cptr = cptr + 1
             }
         }
-        wz = w * d2l.dmu2 * dmu.deta^2
+        wz = c(w) * d2l.dmu2 * dmu.deta^2
         wz
     }), list( .earg = earg, .link = link, .countdata=countdata ))))
 }
@@ -1807,11 +1816,11 @@ ordpoissonProbs = function(extra, mu, deriv=0) {
 
         wz = matrix(0, n, 2*(2*M-3))
 
-        wz[,2*(1:J)-1] = if (ooz) w * (dcump.deta / scalemat)^2 *
+        wz[,2*(1:J)-1] = if (ooz) c(w) * (dcump.deta / scalemat)^2 *
                          (1/mu.use[,1:J] + 1/mu.use[,-1]) else 1
-        wz[,2*(1:J)] = if (ooz) 1 else w * (dcump.dscale * dscale.deta)^2 *
+        wz[,2*(1:J)] = if (ooz) 1 else c(w) * (dcump.dscale * dscale.deta)^2 *
                        (1/mu.use[,1:J] + 1/mu.use[,-1])
-        wz0 = w * (dcump.deta / scalemat) * 
+        wz0 = c(w) * (dcump.deta / scalemat) * 
                   (dcump.dscale * dscale.deta) *
                   (1/mu.use[,1:J] + 1/mu.use[,-1])
         wz0 = as.matrix(wz0)
@@ -1819,12 +1828,12 @@ ordpoissonProbs = function(extra, mu, deriv=0) {
             wz[,iam(2*ii-1,2*ii,M=M)] = if (ooz) wz0[,ii] else 0
 
         if (J > 1) {
-            wz0 = -w * (dcump.deta[,-J] / scalemat[,-J]) *
+            wz0 = -c(w) * (dcump.deta[,-J] / scalemat[,-J]) *
                        (dcump.deta[,-1]  / scalemat[,-1]) / mu.use[,2:J]
             wz0 = as.matrix(wz0) # Just in case J=2
             for(ii in 1:(J-1))
                 wz[,iam(2*ii-1,2*ii+1,M=M)] = if (ooz) wz0[,ii] else 0
-            wz0 = -w * (dcump.dscale[,-1] * dscale.deta[,-1]) *
+            wz0 = -c(w) * (dcump.dscale[,-1] * dscale.deta[,-1]) *
                        (dcump.dscale[,-J] * dscale.deta[,-J]) / mu.use[,2:J]
             wz0 = as.matrix(wz0)
             for(ii in 1:(J-1))
@@ -1832,12 +1841,12 @@ ordpoissonProbs = function(extra, mu, deriv=0) {
 
 
 
-            wz0 = -w * (dcump.deta[,-J] / scalemat[,-J]) *
+            wz0 = -c(w) * (dcump.deta[,-J] / scalemat[,-J]) *
                        (dcump.dscale[,-1] * dscale.deta[,-1]) / mu.use[,2:J]
             wz0 = as.matrix(wz0)
             for(ii in 1:(J-1))
                 wz[,iam(2*ii-1,2*ii+2,M=M)] = if (ooz) wz0[,ii] else 0
-            wz0 = -w * (dcump.deta[,-1] / scalemat[,-1]) *
+            wz0 = -c(w) * (dcump.deta[,-1] / scalemat[,-1]) *
                        (dcump.dscale[,-J] * dscale.deta[,-J]) / mu.use[,2:J]
             wz0 = as.matrix(wz0)
             for(ii in 1:(J-1))
diff --git a/R/family.censored.R b/R/family.censored.R
index 6746b25..de0dc37 100644
--- a/R/family.censored.R
+++ b/R/family.censored.R
@@ -33,16 +33,16 @@
             temp = y[, 2]
             extra$uncensored = ifelse(temp == 1, TRUE, FALSE)
             extra$rightcensored = ifelse(temp == 0, TRUE, FALSE)
-            extra$leftcensored = rep(FALSE, len=n)
-            extra$interval = rep(FALSE, len=n)
+            extra$leftcensored = rep(FALSE, len = n)
+            extra$interval = rep(FALSE, len = n)
             init.mu = pmax(y[,1], 1/8)
         } else
         if (centype == "left") {
             temp = y[, 2]
             extra$uncensored = ifelse(temp == 1, TRUE, FALSE)
-            extra$rightcensored = rep(FALSE, len=n)
+            extra$rightcensored = rep(FALSE, len = n)
             extra$leftcensored = ifelse(temp == 0, TRUE, FALSE)
-            extra$interval = rep(FALSE, len=n)
+            extra$interval = rep(FALSE, len = n)
             init.mu = pmax(y[,1], 1/8)
         } else
         if (centype == "interval" || centype == "interval2") {
@@ -68,7 +68,7 @@
 
         if (length( .imu )) init.mu = 0 * y[,1] + .imu
     
-        predictors.names = namesof("mu", .link, earg = .earg, short=TRUE)
+        predictors.names = namesof("mu", .link, earg = .earg, short = TRUE)
         if (!length(etastart))
             etastart = theta2eta(init.mu, link = .link, earg = .earg)
     }), list( .link = link, .earg = earg, .imu = imu))),
@@ -93,9 +93,9 @@
         if (residuals){
           stop("loglikelihood residuals not implemented yet")
         } else {
-          sum(w[cen0] * dpois(y[cen0,1], mu[cen0], log=TRUE)) +
+          sum(w[cen0] * dpois(y[cen0,1], mu[cen0], log = TRUE)) +
           sum(w[cenU] * log1p(-ppois(y[cenU,1] - 1, mu[cenU]))) +
-          sum(w[cenL] * ppois(y[cenL,1] - 1, mu[cenL], log=TRUE)) +
+          sum(w[cenL] * ppois(y[cenL,1] - 1, mu[cenL], log = TRUE)) +
           sum(w[cenI] * log(ppois(y[cenI,2], mu[cenI]) -
                             ppois(y[cenI,1], mu[cenI])))
         }
@@ -112,7 +112,7 @@
         if (any(cenU)) {
             yllim[cenU] = y[cenU,1]
             densm1 = dpois(yllim-1, lambda)
-            queue = ppois(yllim-1, lambda, lower=FALSE) # Right tail probability
+            queue = ppois(yllim-1, lambda, lower = FALSE) # Right tail probability
             dl.dlambda[cenU] = densm1[cenU] / queue[cenU]
         }
         if (any(cenL)) {
@@ -164,9 +164,9 @@
 
 if (FALSE)
  cexpon = 
- ecexpon = function(link="loge", location=0)
+ ecexpon = function(link = "loge", location = 0)
 {
-    if (!is.Numeric(location, allow=1))
+    if (!is.Numeric(location, allow = 1))
         stop("bad input for 'location'")
     if (mode(link) != "character" && mode(link) != "name")
         link = as.character(substitute(link))
@@ -178,7 +178,7 @@ if (FALSE)
               namesof("rate", link, tag = FALSE), "\n",
               "Variance: ",
               if (location == 0) "Exponential: mu^2" else
-              paste("(mu-",  location, ")^2", sep="")),
+              paste("(mu-",  location, ")^2", sep = "")),
     initialize = eval(substitute(expression({
         extra$location = .location # This is passed into, e.g., link, deriv etc.
         if (any(y[,1] <= extra$location))
@@ -201,22 +201,22 @@ if (FALSE)
           temp <- y[, 2]
           extra$uncensored = ifelse(temp == 1, TRUE, FALSE)
           extra$rightcensored = ifelse(temp == 0, TRUE, FALSE)
-          extra$leftcensored = rep(FALSE, len=n)
-          extra$interval = rep(FALSE, len=n)
+          extra$leftcensored = rep(FALSE, len = n)
+          extra$interval = rep(FALSE, len = n)
         } else
         if (type == "left") {
           temp <- y[, 2]
           extra$uncensored = ifelse(temp == 1, TRUE, FALSE)
-          extra$rightcensored = rep(FALSE, len=n)
+          extra$rightcensored = rep(FALSE, len = n)
           extra$leftcensored = ifelse(temp == 0, TRUE, FALSE)
-          extra$interval = rep(FALSE, len=n)
+          extra$interval = rep(FALSE, len = n)
         } else
         if (type == "counting") {
           stop("type == 'counting' not recognized")
           extra$uncensored = rep(temp == 1, TRUE, FALSE)
-          extra$interval = rep(FALSE, len=n)
-          extra$leftcensored = rep(FALSE, len=n)
-          extra$rightcensored = rep(FALSE, len=n)
+          extra$interval = rep(FALSE, len = n)
+          extra$leftcensored = rep(FALSE, len = n)
+          extra$rightcensored = rep(FALSE, len = n)
           extra$counting = ifelse(temp == 0, TRUE, FALSE)
         } else
         if (type == "interval") {
@@ -227,8 +227,8 @@ if (FALSE)
           extra$interval = ifelse(temp == 3, TRUE, FALSE)
         } else
           stop("'type' not recognized")
-        #if(!length(extra$leftcensored)) extra$leftcensored = rep(FALSE, len=n)
-        #if(!length(extra$rightcensored)) extra$rightcensored = rep(FALSE, len=n)
+        #if(!length(extra$leftcensored)) extra$leftcensored = rep(FALSE, len = n)
+        #if(!length(extra$rightcensored)) extra$rightcensored = rep(FALSE, len = n)
         #if(any(extra$rightcensored & extra$leftcensored))
         #    stop("some observations are both right and left censored!")
     }), list( .location=location, .link = link ))),
@@ -301,157 +301,183 @@ if (FALSE)
 
 
 
- cnormal1 = function(lmu="identity", lsd="loge", method.init=1, zero=2)
+ cennormal1 = function(lmu = "identity", lsd = "loge",
+                       emu = list(), esd = list(),
+                       imethod = 1,
+                       zero = 2)
 {
-    if (mode(lmu) != "character" && mode(lmu) != "name")
-        lmu = as.character(substitute(lmu))
-    if (mode(lsd) != "character" && mode(lsd) != "name")
-        lsd = as.character(substitute(lsd))
-    if (!is.Numeric(method.init, allow=1, integer=TRUE, positi=TRUE) ||
-        method.init > 2)
-        stop("'method.init' must be 1 or 2")
 
-    new("vglmff",
-    blurb = c("Censored univariate normal\n\n",
-              "Links:    ", namesof("mu", lmu, tag = TRUE), "; ",
-                            namesof("sd", lsd, tag = TRUE), "\n",
-              "Conditional variance: sd^2"),
-    constraints = eval(substitute(expression({
-        constraints = cm.zero.vgam(constraints, x, .zero, M)
-    }), list( .zero=zero ))),
-    initialize = eval(substitute(expression({
-        y = cbind(y)
-        if (ncol(y) > 1)
-          stop("the response must be a vector or a 1-column matrix")
 
-        if (!length(extra$leftcensored))
-          extra$leftcensored = rep(FALSE, len=n)
-        if (!length(extra$rightcensored))
-          extra$rightcensored = rep(FALSE, len=n)
-        if (any(extra$rightcensored & extra$leftcensored))
-            stop("some observations are both right and left censored!")
 
-        predictors.names = c(namesof("mu", .lmu, tag = FALSE),
-                             namesof("sd", .lsd, tag = FALSE))
-        if (!length(etastart)) {
-            anyc = extra$leftcensored | extra$rightcensored
-            i11 = if ( .method.init == 1) anyc else FALSE  # can be all data
-            junk = lm.wfit(x=cbind(x[!i11,]),y=y[!i11],w=w[!i11])
-            sd.y.est = sqrt( sum(w[!i11] * junk$resid^2) / junk$df.residual )
-            etastart = cbind(mu=y, rep(theta2eta(sd.y.est, .lsd), length=n))
-            if (any(anyc)) etastart[anyc,1] = x[anyc,,drop=FALSE] %*% junk$coeff
-        }
-   }), list( .lmu = lmu, .lsd = lsd, .method.init = method.init ))),
-    inverse = eval(substitute( function(eta, extra = NULL) {
-        eta2theta(eta[,1], .lmu)
-    }, list( .lmu = lmu ))),
-    last = eval(substitute(expression({
-        misc$link = c("mu"= .lmu, "sd"= .lsd)
-        misc$expected = TRUE
-    }), list( .lmu = lmu, .lsd = lsd ))),
-    loglikelihood = eval(substitute(
-        function(mu,y,w,residuals = FALSE,eta, extra = NULL) {
-        cenL = extra$leftcensored
-        cenU = extra$rightcensored
-        cen0 = !cenL & !cenU   # uncensored obsns
-        mum = eta2theta(eta[,1], .lmu)
-        sd = eta2theta(eta[,2], .lsd)
-        Lower = ifelse(cenL, y, -Inf)
-        Upper = ifelse(cenU, y,  Inf)
-        ell1 = -log(sd[cen0]) - 0.5 * ((y[cen0] - mum[cen0])/sd[cen0])^2
-        ell2 = log1p(-pnorm((mum[cenL] - Lower[cenL])/sd[cenL]))
-        ell3 = log1p(-pnorm(( Upper[cenU] -  mum[cenU])/sd[cenU]))
-        if (residuals) stop("loglikelihood residuals not ",
-                            "implemented yet") else
-        sum(w[cen0] * ell1) + sum(w[cenL] * ell2) + sum(w[cenU] * ell3)
-    }, list( .lmu = lmu, .lsd = lsd ))),
-    vfamily = c("cnormal1"),
-    deriv = eval(substitute(expression({
-        cenL = extra$leftcensored
-        cenU = extra$rightcensored
-        cen0 = !cenL & !cenU   # uncensored obsns
-        Lower = ifelse(cenL, y, -Inf)
-        Upper = ifelse(cenU, y,  Inf)
-        mum = eta2theta(eta[,1], .lmu)
-        sd = eta2theta(eta[,2], .lsd)
-        dl.dmu = (y-mum) / sd^2
-        dl.dsd = (((y-mum)/sd)^2 - 1) / sd
-        dmu.deta = dtheta.deta(mum, .lmu) 
-        dsd.deta = dtheta.deta(sd, .lsd) 
-        if (any(cenL)) {
-            mumL = mum - Lower
-            temp21L = mumL[cenL] / sd[cenL]
-            PhiL = pnorm(temp21L)
-            phiL = dnorm(temp21L)
-            fred21 = phiL / (1 - PhiL)
-            dl.dmu[cenL] = -fred21 / sd[cenL]
-            dl.dsd[cenL] = mumL[cenL] * fred21 / sd[cenL]^2
-            rm(fred21)
-        }
-        if (any(cenU)) {
-            mumU = Upper - mum
-            temp21U = mumU[cenU] / sd[cenU]
-            PhiU = pnorm(temp21U)
-            phiU = dnorm(temp21U)
-            fred21 = phiU / (1 - PhiU)
-            dl.dmu[cenU] = fred21 / sd[cenU]   # Negated
-            dl.dsd[cenU] = mumU[cenU] * fred21 / sd[cenU]^2
-            rm(fred21)
-        }
-        w * cbind(dl.dmu * dmu.deta, dl.dsd * dsd.deta)
-    }), list( .lmu = lmu, .lsd = lsd ))),
-    weight = eval(substitute(expression({
-        A1 = 1 - pnorm((mum - Lower) / sd)   # Lower
-        A3 = 1 - pnorm(( Upper - mum) / sd)  # Upper
-        A2 = 1 - A1 - A3                     # Middle; uncensored
-        wz = matrix(0, n, 3)
-        wz[,iam(1,1,M)] = A2 * 1 / sd^2  # ed2l.dmu2
-        wz[,iam(2,2,M)] = A2 * 2 / sd^2  # ed2l.dsd2
-        mumL = mum - Lower
-        temp21L = mumL / sd
-        PhiL = pnorm(temp21L)
-        phiL = dnorm(temp21L)
-        temp31L = ((1-PhiL) * sd)^2 
-        wz.cenL11 = phiL * (phiL - (1-PhiL)*temp21L) / temp31L
-        wz.cenL22 = mumL * phiL * ((1-PhiL) * (2 - temp21L^2) +
-                    mumL * phiL / sd) / (sd * temp31L)
-        wz.cenL12 = phiL * ((1-PhiL)*(temp21L^2 - 1) -
-                    temp21L*phiL) / temp31L
-        wz.cenL11[!is.finite(wz.cenL11)] = 0
-        wz.cenL22[!is.finite(wz.cenL22)] = 0
-        wz.cenL12[!is.finite(wz.cenL12)] = 0
-        wz[,iam(1,1,M)] = wz[,iam(1,1,M)] + A1 * wz.cenL11
-        wz[,iam(2,2,M)] = wz[,iam(2,2,M)] + A1 * wz.cenL22
-        wz[,iam(1,2,M)] = A1 * wz.cenL12
-        mumU = Upper - mum    # often Inf
-        temp21U = mumU / sd    # often Inf
-        PhiU = pnorm(temp21U)  # often 1
-        phiU = dnorm(temp21U)  # often 0
-        temp31U = ((1-PhiU) * sd)^2  # often 0
-        tmp8 = (1-PhiU)*temp21U
-        wzcenU11 = phiU * (phiU - tmp8) / temp31U
-        tmp9 = (1-PhiU) * (2 - temp21U^2)
-        wzcenU22 = mumU * phiU * (tmp9 + mumU * phiU / sd) / (sd * temp31U)
-        wzcenU12 = -phiU * ((1-PhiU)*(temp21U^2 - 1) -
-                    temp21U*phiU) / temp31U
-        wzcenU11[!is.finite(wzcenU11)] = 0  # Needed when Upper==Inf
-        wzcenU22[!is.finite(wzcenU22)] = 0  # Needed when Upper==Inf
-        wzcenU12[!is.finite(wzcenU12)] = 0  # Needed when Upper==Inf
-        wz[,iam(1,1,M)] = wz[,iam(1,1,M)] + A3 * wzcenU11
-        wz[,iam(2,2,M)] = wz[,iam(2,2,M)] + A3 * wzcenU22
-        wz[,iam(1,2,M)] = wz[,iam(1,2,M)] + A3 * wzcenU12
-        wz[,iam(1,1,M)] = w * wz[,iam(1,1,M)] * dmu.deta^2
-        wz[,iam(2,2,M)] = w * wz[,iam(2,2,M)] * dsd.deta^2
-        wz[,iam(1,2,M)] = w * wz[,iam(1,2,M)] * dmu.deta * dsd.deta
-        wz
-    }), list( .lmu = lmu, .lsd = lsd ))))
+  if (mode(lmu) != "character" && mode(lmu) != "name")
+    lmu = as.character(substitute(lmu))
+  if (mode(lsd) != "character" && mode(lsd) != "name")
+    lsd = as.character(substitute(lsd))
+  if (!is.Numeric(imethod, allow = 1, integer = TRUE, positi = TRUE) ||
+    imethod > 2)
+    stop("argument 'imethod' must be 1 or 2")
+  if (!is.list(emu)) emu = list()
+  if (!is.list(esd)) esd = list()
+
+
+  new("vglmff",
+  blurb = c("Censored univariate normal\n\n",
+            "Links:    ", namesof("mu", lmu, tag = TRUE), "; ",
+                          namesof("sd", lsd, tag = TRUE), "\n",
+            "Conditional variance: sd^2"),
+  constraints = eval(substitute(expression({
+      constraints = cm.zero.vgam(constraints, x, .zero, M)
+  }), list( .zero=zero ))),
+  initialize = eval(substitute(expression({
+    y = cbind(y)
+    if (ncol(y) > 1)
+      stop("the response must be a vector or a 1-column matrix")
+
+    if (!length(extra$leftcensored))
+      extra$leftcensored = rep(FALSE, len = n)
+    if (!length(extra$rightcensored))
+      extra$rightcensored = rep(FALSE, len = n)
+    if (any(extra$rightcensored & extra$leftcensored))
+        stop("some observations are both right and left censored!")
+
+    predictors.names =
+      c(namesof("mu", .lmu, earg =.emu, tag = FALSE),
+        namesof("sd", .lsd, earg =.esd, tag = FALSE))
+
+    if (!length(etastart)) {
+      anyc = extra$leftcensored | extra$rightcensored
+        i11 = if ( .imethod == 1) anyc else FALSE  # can be all data
+        junk = lm.wfit(x=cbind(x[!i11,]),y=y[!i11],w=w[!i11])
+        sd.y.est = sqrt( sum(w[!i11] * junk$resid^2) / junk$df.residual )
+        etastart = cbind(mu = y,
+                         rep(theta2eta(sd.y.est, .lsd), length = n))
+        if (any(anyc)) etastart[anyc,1] = x[anyc,,drop = FALSE] %*% junk$coeff
+    }
+ }), list( .lmu = lmu, .lsd = lsd,
+           .emu = emu, .esd = esd,
+           .imethod = imethod ))),
+  inverse = eval(substitute( function(eta, extra = NULL) {
+    eta2theta(eta[, 1], .lmu, earg = .emu)
+  }, list( .lmu = lmu, .emu = emu ))),
+  last = eval(substitute(expression({
+    misc$link =    c("mu" = .lmu, "sd" = .lsd)
+    misc$earg = list("mu" = .emu ,"sd" = .esd )
+
+    misc$expected = TRUE
+  }), list( .lmu = lmu, .lsd = lsd,
+            .emu = emu, .esd = esd ))),
+  loglikelihood = eval(substitute(
+    function(mu, y, w, residuals = FALSE, eta, extra = NULL) {
+    cenL = extra$leftcensored
+    cenU = extra$rightcensored
+    cen0 = !cenL & !cenU   # uncensored obsns
+
+    mum = eta2theta(eta[,1], .lmu, earg = .emu )
+    sdv = eta2theta(eta[,2], .lsd, earg = .esd )
+
+    Lower = ifelse(cenL, y, -Inf)
+    Upper = ifelse(cenU, y,  Inf)
+    ell1 = -log(sdv[cen0]) - 0.5 * ((y[cen0] - mum[cen0])/sdv[cen0])^2
+    ell2 = log1p(-pnorm((mum[cenL] - Lower[cenL])/sdv[cenL]))
+    ell3 = log1p(-pnorm(( Upper[cenU] -  mum[cenU])/sdv[cenU]))
+    if (residuals) stop("loglikelihood residuals not ",
+                        "implemented yet") else
+    sum(w[cen0] * ell1) + sum(w[cenL] * ell2) + sum(w[cenU] * ell3)
+  }, list( .lmu = lmu, .lsd = lsd,
+           .emu = emu, .esd = esd ))),
+  vfamily = c("cennormal1"),
+  deriv = eval(substitute(expression({
+    cenL = extra$leftcensored
+    cenU = extra$rightcensored
+    cen0 = !cenL & !cenU   # uncensored obsns
+    Lower = ifelse(cenL, y, -Inf)
+    Upper = ifelse(cenU, y,  Inf)
+
+    mum = eta2theta(eta[,1], .lmu)
+    sdv = eta2theta(eta[,2], .lsd)
+
+    dl.dmu = (y-mum) / sdv^2
+    dl.dsd = (((y-mum)/sdv)^2 - 1) / sdv
+
+    dmu.deta = dtheta.deta(mum, .lmu, earg = .emu )
+    dsd.deta = dtheta.deta(sdv, .lsd, earg = .esd )
+
+    if (any(cenL)) {
+      mumL = mum - Lower
+      temp21L = mumL[cenL] / sdv[cenL]
+      PhiL = pnorm(temp21L)
+      phiL = dnorm(temp21L)
+      fred21 = phiL / (1 - PhiL)
+      dl.dmu[cenL] = -fred21 / sdv[cenL]
+      dl.dsd[cenL] = mumL[cenL] * fred21 / sdv[cenL]^2
+      rm(fred21)
+    }
+    if (any(cenU)) {
+      mumU = Upper - mum
+      temp21U = mumU[cenU] / sdv[cenU]
+      PhiU = pnorm(temp21U)
+      phiU = dnorm(temp21U)
+      fred21 = phiU / (1 - PhiU)
+      dl.dmu[cenU] = fred21 / sdv[cenU]   # Negated
+      dl.dsd[cenU] = mumU[cenU] * fred21 / sdv[cenU]^2
+      rm(fred21)
+    }
+    c(w) * cbind(dl.dmu * dmu.deta,
+                 dl.dsd * dsd.deta)
+  }), list( .lmu = lmu, .lsd = lsd,
+            .emu = emu, .esd = esd ))),
+  weight = eval(substitute(expression({
+    A1 = 1 - pnorm((mum - Lower) / sdv)   # Lower
+    A3 = 1 - pnorm(( Upper - mum) / sdv)  # Upper
+    A2 = 1 - A1 - A3                     # Middle; uncensored
+    wz = matrix(0, n, 3)
+    wz[,iam(1,1,M)] = A2 * 1 / sdv^2  # ed2l.dmu2
+    wz[,iam(2,2,M)] = A2 * 2 / sdv^2  # ed2l.dsd2
+    mumL = mum - Lower
+    temp21L = mumL / sdv
+    PhiL = pnorm(temp21L)
+    phiL = dnorm(temp21L)
+    temp31L = ((1-PhiL) * sdv)^2 
+    wz.cenL11 = phiL * (phiL - (1-PhiL)*temp21L) / temp31L
+    wz.cenL22 = mumL * phiL * ((1-PhiL) * (2 - temp21L^2) +
+                mumL * phiL / sdv) / (sdv * temp31L)
+    wz.cenL12 = phiL * ((1-PhiL)*(temp21L^2 - 1) -
+                temp21L*phiL) / temp31L
+    wz.cenL11[!is.finite(wz.cenL11)] = 0
+    wz.cenL22[!is.finite(wz.cenL22)] = 0
+    wz.cenL12[!is.finite(wz.cenL12)] = 0
+    wz[,iam(1,1,M)] = wz[,iam(1,1,M)] + A1 * wz.cenL11
+    wz[,iam(2,2,M)] = wz[,iam(2,2,M)] + A1 * wz.cenL22
+    wz[,iam(1,2,M)] = A1 * wz.cenL12
+    mumU = Upper - mum    # often Inf
+    temp21U = mumU / sdv    # often Inf
+    PhiU = pnorm(temp21U)  # often 1
+    phiU = dnorm(temp21U)  # often 0
+    temp31U = ((1-PhiU) * sdv)^2  # often 0
+    tmp8 = (1-PhiU)*temp21U
+    wzcenU11 = phiU * (phiU - tmp8) / temp31U
+    tmp9 = (1-PhiU) * (2 - temp21U^2)
+    wzcenU22 = mumU * phiU * (tmp9 + mumU * phiU / sdv) / (sdv * temp31U)
+    wzcenU12 = -phiU * ((1-PhiU)*(temp21U^2 - 1) -
+                temp21U*phiU) / temp31U
+    wzcenU11[!is.finite(wzcenU11)] = 0  # Needed when Upper==Inf
+    wzcenU22[!is.finite(wzcenU22)] = 0  # Needed when Upper==Inf
+    wzcenU12[!is.finite(wzcenU12)] = 0  # Needed when Upper==Inf
+    wz[,iam(1,1,M)] = wz[,iam(1,1,M)] + A3 * wzcenU11
+    wz[,iam(2,2,M)] = wz[,iam(2,2,M)] + A3 * wzcenU22
+    wz[,iam(1,2,M)] = wz[,iam(1,2,M)] + A3 * wzcenU12
+    wz[,iam(1,1,M)] = wz[,iam(1,1,M)] * dmu.deta^2
+    wz[,iam(2,2,M)] = wz[,iam(2,2,M)] * dsd.deta^2
+    wz[,iam(1,2,M)] = wz[,iam(1,2,M)] * dmu.deta * dsd.deta
+    c(w) * wz
+  }), list( .lmu = lmu, .lsd = lsd ))))
 }
 
 
 
 
- crayleigh = function(lscale = "loge", escale = list(),
-                      oim  = TRUE) {
+ cenrayleigh = function(lscale = "loge", escale = list(),
+                        oim  = TRUE) {
     if (mode(lscale) != "character" && mode(lscale) != "name")
         lscale = as.character(substitute(lscale))
     if (!is.logical(oim) || length(oim) != 1)
@@ -471,7 +497,7 @@ if (FALSE)
         if (length(extra$leftcensored))
           stop("cannot handle left-censored data")
         if (!length(extra$rightcensored))
-          extra$rightcensored = rep(FALSE, len=n)
+          extra$rightcensored = rep(FALSE, len = n)
 
         predictors.names =
           namesof("scale", .lscale, earg = .escale, tag = FALSE)
@@ -501,7 +527,7 @@ if (FALSE)
                          0.5*(y[cen0]/Scale[cen0])^2)) -
           sum(w[cenU] * (y[cenU]/Scale[cenU])^2) * 0.5
     }, list( .lscale = lscale, .escale = escale ))),
-    vfamily = c("crayleigh"),
+    vfamily = c("cenrayleigh"),
     deriv = eval(substitute(expression({
         cen0 = !extra$rightcensored   # uncensored obsns
         cenU = extra$rightcensored
@@ -522,7 +548,7 @@ if (FALSE)
             ed2l.dScale2[cenU] = 6 / (Scale[cenU])^2
             wz[cenU] = (dScale.deta[cenU])^2 * ed2l.dScale2[cenU]
         }
-        w * wz
+        c(w) * wz
     }), list( .lscale = lscale, .escale = escale,
               .oim = oim ))))
 }
@@ -534,27 +560,28 @@ if (FALSE)
 
 
 
- weibull = 
- weibull.sev = function(lshape = "loge", lscale = "loge",
+  weibull   = function(lshape = "loge", lscale = "loge",
                        eshape = list(), escale = list(),
                        ishape = NULL, iscale = NULL,
                        nrfs = 1,
-                       method.init = 1, zero = 2)
+                       imethod = 1, zero = 2)
 {
 
   if (mode(lshape) != "character" && mode(lshape) != "name")
     lshape = as.character(substitute(lshape))
   if (mode(lscale) != "character" && mode(lscale) != "name")
     lscale = as.character(substitute(lscale))
-  if (length(zero) && !is.Numeric(zero, integer=TRUE, posit=TRUE))
+
+  if (length(zero) && !is.Numeric(zero, integer = TRUE, posit = TRUE))
     stop("bad input for argument 'zero'")
-  if (!is.Numeric(method.init, allow=1, integer=TRUE, positi=TRUE) ||
-      method.init > 2)
-      stop("argument 'method.init' must be 1 or 2")
+  if (!is.Numeric(imethod, allow = 1, integer = TRUE, positi = TRUE) ||
+      imethod > 2)
+      stop("argument 'imethod' must be 1 or 2")
+
   if (!is.list(eshape)) eshape = list()
   if (!is.list(escale)) escale = list()
-  if (!is.Numeric(nrfs, allow=1) || nrfs < 0 || nrfs > 1)
-      stop("bad input for 'nrfs'")
+  if (!is.Numeric(nrfs, allow = 1) || nrfs < 0 || nrfs > 1)
+      stop("bad input for argument 'nrfs'")
 
   new("vglmff",
   blurb = c("Weibull distribution\n\n",
@@ -569,7 +596,7 @@ if (FALSE)
   }), list( .zero = zero ))),
   initialize = eval(substitute(expression({
     y = cbind(y)
-    if (ncol(y)>1)
+    if (ncol(y) > 1)
       stop("the response must be a vector or a 1-column matrix")
 
     if (is.SurvS4(y))
@@ -581,29 +608,29 @@ if (FALSE)
 
     if (!length(.ishape) || !length(.iscale)) {
         anyc = FALSE  # extra$leftcensored | extra$rightcensored
-        i11 = if ( .method.init == 1) anyc else FALSE # can be all data
+        i11 = if ( .imethod == 1) anyc else FALSE # can be all data
         qvec = c(.25, .5, .75)   # Arbitrary; could be made an argument
         init.shape = if (length( .ishape)) .ishape else 1
         xvec = log(-log1p(-qvec))
-        fit0 = lsfit(x=xvec, y=log(quantile(y[!i11], qvec)))
+        fit0 = lsfit(x = xvec, y = log(quantile(y[!i11], qvec)))
     }
 
     if (!length(etastart)) {
-        shape = rep(if(length(.ishape)) .ishape else 1/fit0$coef["X"],len=n)
-        scale = rep(if(length(.iscale)) .iscale else
-                    exp(fit0$coef["Intercept"]), len=n)
-        etastart =
-        cbind(theta2eta(shape, .lshape, earg = .eshape ),
-              theta2eta(scale, .lscale, earg = .escale ))
+        shape = rep(if(length(.ishape)) .ishape else
+                    1 / fit0$coef["X"], len = n)
+        Scale = rep(if(length(.iscale)) .iscale else
+                    exp(fit0$coef["Intercept"]), len = n)
+        etastart = cbind(theta2eta(shape, .lshape, earg = .eshape ),
+                         theta2eta(Scale, .lscale, earg = .escale ))
     }
   }), list( .lscale = lscale, .lshape = lshape,
             .escale = escale, .eshape = eshape,
             .iscale = iscale, .ishape = ishape,
-            .method.init = method.init ) )),
+            .imethod = imethod ) )),
   inverse = eval(substitute(function(eta, extra = NULL) {
     shape = eta2theta(eta[,1], .lshape, earg = .eshape )
-    scale = eta2theta(eta[,2], .lscale, earg = .escale )
-    scale * gamma(1+1/shape)
+    Scale = eta2theta(eta[,2], .lscale, earg = .escale )
+    Scale * gamma(1 + 1 / shape)
   }, list( .lscale = lscale, .lshape = lshape,
            .escale = escale, .eshape = eshape ) )),
   last = eval(substitute(expression({
@@ -621,23 +648,27 @@ if (FALSE)
   loglikelihood = eval(substitute(
           function(mu, y, w, residuals = FALSE,eta, extra = NULL) {
     shape = eta2theta(eta[,1], .lshape, earg = .eshape )
-    scale = eta2theta(eta[,2], .lscale, earg = .escale )
-    ell1 = (log(shape) - log(scale) + (shape-1) *
-           log(y/scale) - (y / scale)^shape)
+    Scale = eta2theta(eta[,2], .lscale, earg = .escale )
+    ell1 = (log(shape) - log(Scale) + (shape-1) *
+           log(y / Scale) - (y / Scale)^shape)
     if (residuals) stop("loglikelihood residuals not ",
                         "implemented yet") else
         sum(w * ell1)
   }, list( .lscale = lscale, .lshape = lshape,
            .escale = escale, .eshape = eshape ) )),
-  vfamily = c("weibull.sev"),
+  vfamily = c("weibull"),
   deriv = eval(substitute(expression({
     shape = eta2theta(eta[,1], .lshape, earg = .eshape )
-    scale = eta2theta(eta[,2], .lscale, earg = .escale )
-    dl.dshape = 1/shape + log(y/scale) - log(y/scale) * (y/scale)^shape
-    dl.dscale = (shape/scale) * (-1 + (y/scale)^shape)
+    Scale = eta2theta(eta[,2], .lscale, earg = .escale )
+
+    dl.dshape = 1 / shape + log(y / Scale) -
+                log(y / Scale) * (y / Scale)^shape
+    dl.dscale = (shape / Scale) * (-1.0 + (y / Scale)^shape)
+
     dshape.deta = dtheta.deta(shape, .lshape, earg = .eshape )
-    dscale.deta = dtheta.deta(scale, .lscale, earg = .escale )
-    w * cbind( dl.dshape * dshape.deta, dl.dscale * dscale.deta )
+    dscale.deta = dtheta.deta(Scale, .lscale, earg = .escale )
+    c(w) * cbind(dl.dshape * dshape.deta,
+                 dl.dscale * dscale.deta)
   }), list( .lscale = lscale, .lshape = lshape,
             .escale = escale, .eshape = eshape ) )),
   weight = eval(substitute(expression({
@@ -645,15 +676,14 @@ if (FALSE)
     wz = matrix(as.numeric(NA), n, dimm(M))  #3=dimm(M)
 
 
-    ed2l.dshape = (6*(EulerM-1)^2 +pi^2)/(6*shape^2) # Kleiber&Kotz (2003)
-    ed2l.dscale = (shape/scale)^2
-    ed2l.dshapescale = (EulerM-1)/scale
+    ed2l.dshape = (6*(EulerM - 1)^2 + pi^2)/(6*shape^2) # KK (2003)
+    ed2l.dscale = (shape / Scale)^2
+    ed2l.dshapescale = (EulerM-1) / Scale
     wz[,iam(1,1,M)] = ed2l.dshape * dshape.deta^2
     wz[,iam(2,2,M)] = ed2l.dscale * dscale.deta^2
     wz[,iam(1,2,M)] = ed2l.dshapescale * dscale.deta * dshape.deta
 
-    wz = w * wz
-    wz
+    c(w) * wz
   }), list( .eshape = eshape, .nrfs = nrfs ))))
 }
 
@@ -664,7 +694,7 @@ if (FALSE)
 
 
 
-setOldClass(c("SurvS4","Surv"))
+setOldClass(c("SurvS4", "Surv"))
 
 
  SurvS4 <-
@@ -755,9 +785,14 @@ function (time, time2, event, type = c("right", "left", "interval",
 
 
 
+
+
 is.SurvS4 <- function(x) inherits(x, "SurvS4")
 
-  setIs(class1="SurvS4", class2="matrix") # Forces vglm()@y to be a matrix
+
+
+
+setIs(class1 = "SurvS4", class2 = "matrix") # Forces vglm()@y to be a matrix
 
 
 
@@ -790,12 +825,12 @@ function (x, ...)
 
 
 
-"[.SurvS4" <- function(x, i,j, drop=FALSE) {
+"[.SurvS4" <- function(x, i,j, drop = FALSE) {
     if (missing(j)) {
         temp <- class(x)
         type <- attr(x, "type")
         class(x) <- NULL
-        x <- x[i, , drop=FALSE]
+        x <- x[i, , drop = FALSE]
         class(x) <- temp
         attr(x, "type") <- type
         x
@@ -834,153 +869,4 @@ setMethod("show", "SurvS4",
 
 
 
-if (FALSE)
- weibullff = function(lscale = "loge", lshape = "loge",
-                      escale = list(), eshape = list(),
-                      iscale = NULL, ishape = NULL,
-                      nrfs = 1,
-                      method.init = 1, zero = 1)
-{
-
-  if (mode(lscale) != "character" && mode(lscale) != "name")
-    lscale = as.character(substitute(lscale))
-  if (mode(lshape) != "character" && mode(lshape) != "name")
-    lshape = as.character(substitute(lshape))
-
-  if (length(zero) && !is.Numeric(zero, integer=TRUE, posit=TRUE))
-    stop("bad input for argument 'zero'")
-
-  if (!is.Numeric(method.init, allow=1, integer=TRUE, positi=TRUE) ||
-      method.init > 2)
-      stop("argument 'method.init' must be 1 or 2")
-
-  if (!is.list(eshape)) eshape = list()
-  if (!is.list(escale)) escale = list()
-  if (!is.Numeric(nrfs, allow=1) || nrfs < 0 || nrfs > 1)
-      stop("bad input for 'nrfs'")
-
-  new("vglmff",
-  blurb = c("Weibull distribution\n\n",
-            "Links:    ",
-            namesof("scale", lscale, earg = escale), ", ",
-            namesof("shape", lshape, earg = eshape), "\n",
-            "Mean:     scale * gamma(1 + 1/shape)\n",
-            "Variance: scale^2 * (gamma(1 + 2/shape) - ",
-                      "gamma(1 + 1/shape)^2)"),
-  constraints = eval(substitute(expression({
-    constraints = cm.zero.vgam(constraints, x, .zero, M)
-  }), list( .zero = zero ))),
-  initialize = eval(substitute(expression({
-    y = cbind(y)
-    if (ncol(y)>1)
-      stop("the response must be a vector or a 1-column matrix")
-
-    if (is.SurvS4(y))
-      stop("only uncensored observations are allowed; don't use SurvS4()")
-
-    predictors.names =
-      c(namesof("scale", .lscale, earg = .escale, tag = FALSE),
-        namesof("shape", .lshape, earg = .eshape, tag = FALSE))
-
-    if (!length(.ishape) || !length(.iscale)) {
-        anyc = FALSE  # extra$leftcensored | extra$rightcensored
-        i11 = if ( .method.init == 1) anyc else FALSE # can be all data
-        qvec = c(.25, .5, .75)   # Arbitrary; could be made an argument
-        init.shape = if (length( .ishape)) .ishape else 1
-        xvec = log(-log1p(-qvec))
-        fit0 = lsfit(x=xvec, y=log(quantile(y[!i11], qvec)))
-    }
-
-    if (!length(etastart)) {
-        shape = rep(if(length(.ishape)) .ishape else 1/fit0$coef["X"],len=n)
-        scale = rep(if(length(.iscale)) .iscale else
-                    exp(fit0$coef["Intercept"]), len=n)
-        etastart =
-        cbind(theta2eta(scale, .lscale, earg = .escale ),
-              theta2eta(shape, .lshape, earg = .eshape ))
-    }
-  }), list( .lscale = lscale, .lshape = lshape,
-            .escale = escale, .eshape = eshape,
-            .iscale = iscale, .ishape = ishape,
-            .method.init = method.init ) )),
-  inverse = eval(substitute(function(eta, extra = NULL) {
-    scale = eta2theta(eta[,1], .lshape, earg = .escale )
-    shape = eta2theta(eta[,2], .lscale, earg = .eshape )
-    scale * gamma(1+1/shape)
-  }, list( .lscale = lscale, .lshape = lshape,
-           .escale = escale, .eshape = eshape ) )),
-  last = eval(substitute(expression({
-    if (regnotok <- any(shape <= 2))
-      warning("MLE regularity conditions are violated",
-              "(shape <= 2) at the final iteration")
-
-
-    misc$link =    c(scale =  .lscale, shape =  .lshape)
-    misc$earg = list(scale =  .escale, shape =  .eshape)
-    misc$nrfs = .nrfs
-    misc$RegCondOK = !regnotok   # Save this for later
-  }), list( .lscale = lscale, .lshape = lshape,
-            .escale = escale, .eshape = eshape, .nrfs = nrfs ) )),
-  loglikelihood = eval(substitute(
-          function(mu, y, w, residuals = FALSE,eta, extra = NULL) {
-    scale = eta2theta(eta[,1], .lscale, earg = .escale )
-    shape = eta2theta(eta[,2], .lshape, earg = .eshape )
-    ell2 = dweibull()
-
-
-    ell1 = (log(shape) - log(scale) + (shape-1) *
-           log(y/scale) - (y / scale)^shape)
-
- print("max(abs(ell1 - ell2))")
- print( max(abs(ell1 - ell2)) )
-
-
-    if (residuals) stop("loglikelihood residuals not ",
-                        "implemented yet") else
-        sum(w * ell1)
-  }, list( .lscale = lscale, .lshape = lshape,
-           .escale = escale, .eshape = eshape ) )),
-  vfamily = c("weibullff"),
-  deriv = eval(substitute(expression({
-    scale = eta2theta(eta[,1], .lscale, earg = .escale )
-    shape = eta2theta(eta[,2], .lshape, earg = .eshape )
-
-    dl.dshape = 1/shape + log(y/scale) - log(y/scale) * (y/scale)^shape
-    dl.dscale = (shape/scale) * (-1 + (y/scale)^shape)
-
-    dshape.deta = dtheta.deta(shape, .lshape, earg = .eshape )
-    dscale.deta = dtheta.deta(scale, .lscale, earg = .escale )
-
-    w * cbind( dl.dscale * dscale.deta,
-               dl.dshape * dshape.deta)
-  }), list( .lscale = lscale, .lshape = lshape,
-            .escale = escale, .eshape = eshape ) )),
-  weight = eval(substitute(expression({
-    EulerM = -digamma(1.0)
-    wz = matrix(as.numeric(NA), n, dimm(M))  #3=dimm(M)
-
-
-    ed2l.dshape = (6*(EulerM-1)^2 +pi^2)/(6*shape^2) # Kleiber&Kotz (2003)
-    ed2l.dscale = (shape/scale)^2
-    ed2l.dshapescale = (EulerM-1)/scale
-    wz[,iam(1,1,M)] = ed2l.dscale * dscale.deta^2
-    wz[,iam(2,2,M)] = ed2l.dshape * dshape.deta^2
-    wz[,iam(1,2,M)] = ed2l.dshapescale * dscale.deta * dshape.deta
-
-    wz = w * wz
-    wz
-  }), list( .eshape = eshape, .nrfs = nrfs ))))
-}
-
-
-
-
-
-
-
-
-
-
-
-
 
diff --git a/R/family.circular.R b/R/family.circular.R
index e32284b..e92bb25 100644
--- a/R/family.circular.R
+++ b/R/family.circular.R
@@ -175,8 +175,8 @@ cardioid.control <- function(save.weight=TRUE, ...)
         drho.deta = dtheta.deta(rho, link= .lrho, earg= .erho)
         dl.dmu =  2 * rho * sin(y-mu) / (1 + 2 * rho * cos(y-mu))
         dl.drho = 2 * cos(y-mu) / (1 + 2 * rho * cos(y-mu))
-        w * cbind(dl.dmu * dmu.deta,
-                  dl.drho * drho.deta)
+        c(w) * cbind(dl.dmu * dmu.deta,
+                     dl.drho * drho.deta)
     }), list( .lmu=lmu, .lrho=lrho,
               .emu=emu, .erho=erho, .nsimEIM=nsimEIM ))),
     weight = eval(substitute(expression({
@@ -198,7 +198,7 @@ cardioid.control <- function(save.weight=TRUE, ...)
 
         dtheta.detas = cbind(dmu.deta, drho.deta)
         wz = wz * dtheta.detas[,index0$row] * dtheta.detas[,index0$col]
-        w * wz
+        c(w) * wz
     }), list( .lmu=lmu, .lrho=lrho,
               .emu=emu, .erho=erho, .nsimEIM=nsimEIM ))))
 }
@@ -211,13 +211,13 @@ cardioid.control <- function(save.weight=TRUE, ...)
                                else list(),
                      escale=list(),
                      ilocation=NULL, iscale=NULL,
-                     method.init=1, zero=NULL) {
+                     imethod=1, zero=NULL) {
     if (mode(llocation) != "character" && mode(llocation) != "name")
         llocation = as.character(substitute(llocation))
     if (mode(lscale) != "character" && mode(lscale) != "name")
         lscale = as.character(substitute(lscale))
-    if (!is.Numeric(method.init, allow=1, integ=TRUE, posit=TRUE) ||
-       method.init > 2) stop("argument 'method.init' must be 1 or 2")
+    if (!is.Numeric(imethod, allow=1, integ=TRUE, posit=TRUE) ||
+       imethod > 2) stop("argument 'imethod' must be 1 or 2")
     if (length(zero) && !is.Numeric(zero, integer=TRUE, posit=TRUE))
         stop("bad input for argument 'zero'")
     if (!is.list(escale)) escale = list()
@@ -239,7 +239,7 @@ cardioid.control <- function(save.weight=TRUE, ...)
         c(namesof("location", .llocation, earg= .elocation, tag=FALSE),
           namesof("scale", .lscale, earg=.escale, tag=FALSE))
         if (!length(etastart)) {
-            if ( .method.init == 1) {
+            if ( .imethod == 1) {
                 location.init = mean(y)
                 rat10 = sqrt((sum(w*cos(y )))^2 + sum(w*sin(y))^2) / sum(w)
                 scale.init = sqrt(1 - rat10)
@@ -255,7 +255,7 @@ cardioid.control <- function(save.weight=TRUE, ...)
                 theta2eta(scale.init, .lscale, earg= .escale))
         }
         y = y %% (2*pi) # Coerce after initial values have been computed
-    }), list( .method.init=method.init, .ilocation=ilocation,
+    }), list( .imethod=imethod, .ilocation=ilocation,
               .escale=escale, .iscale=iscale,
               .lscale=lscale, .llocation=llocation, .elocation=elocation ))),
     inverse=eval(substitute(function(eta, extra=NULL) {
@@ -286,8 +286,8 @@ cardioid.control <- function(save.weight=TRUE, ...)
         dlocation.deta = dtheta.deta(location, .llocation, earg= .elocation)
         dl.dscale = cos(y - location) - tmp6[,2] / tmp6[,1]
         dscale.deta = dtheta.deta(Scale, .lscale, earg= .escale)
-        w * cbind(dl.dlocation * dlocation.deta,
-                  dl.dscale * dscale.deta)
+        c(w) * cbind(dl.dlocation * dlocation.deta,
+                     dl.dscale    * dscale.deta)
     }), list( .escale=escale, .lscale=lscale,
               .llocation=llocation, .elocation=elocation ))),
     weight=eval(substitute(expression({
@@ -296,7 +296,7 @@ cardioid.control <- function(save.weight=TRUE, ...)
         wz = matrix(as.numeric(NA), nrow=n, ncol=2) # diagonal
         wz[,iam(1,1,M)] = d2l.location2 * dlocation.deta^2
         wz[,iam(2,2,M)] = d2l.dscale2 * dscale.deta^2
-        w * wz
+        c(w) * wz
     }), list( .escale=escale, .lscale=lscale,
               .llocation=llocation, .elocation=elocation ))))
 }
diff --git a/R/family.exp.R b/R/family.exp.R
index 107a844..94ae44f 100644
--- a/R/family.exp.R
+++ b/R/family.exp.R
@@ -337,7 +337,7 @@ rkoenker <- function(n, location = 0, scale = 1) {
                      llocation = "identity", lscale = "loge",
                      elocation = list(), escale = list(),
                      ilocation = NULL,   iscale = NULL,
-                     method.init = 1,
+                     imethod = 1,
                      zero = 2)
 {
 
@@ -365,9 +365,9 @@ rkoenker <- function(n, location = 0, scale = 1) {
   if (!is.Numeric(percentile, posit = TRUE) ||
       any(percentile >= 100))
     stop("bad input for argument 'percentile'")
-  if (!is.Numeric(method.init, allow = 1, integ = TRUE, posit = TRUE) ||
-     method.init > 2)
-      stop("'method.init' must be 1 or 2")
+  if (!is.Numeric(imethod, allow = 1, integ = TRUE, posit = TRUE) ||
+     imethod > 2)
+      stop("'imethod' must be 1 or 2")
 
   new("vglmff",
   blurb = c("Koenker distribution\n\n",
@@ -388,7 +388,7 @@ rkoenker <- function(n, location = 0, scale = 1) {
         namesof("scale",    .lscale, earg = .escale, tag = FALSE))
     if (!length(etastart)) {
 
-      locat.init <- if ( .method.init == 2) {
+      locat.init <- if ( .imethod == 2) {
         weighted.mean(y, w)
       } else {
         median(y)
@@ -403,7 +403,7 @@ rkoenker <- function(n, location = 0, scale = 1) {
   }), list( .llocat = llocat, .lscale = lscale,
             .ilocat = ilocat, .iscale = iscale,
             .elocat = elocat, .escale = escale,
-            .method.init = method.init ))),
+            .imethod = imethod ))),
   inverse = eval(substitute(function(eta, extra = NULL){
     Perce <- .percentile
     locat <- eta2theta(eta[, 1], link = .llocat, earg = .elocat)
@@ -422,7 +422,7 @@ rkoenker <- function(n, location = 0, scale = 1) {
     misc$earg <- list("location" = .elocat, "scale" = .escale)
     misc$expected <- TRUE
     misc$percentile <- .percentile
-    misc$method.init <- .method.init
+    misc$imethod <- .imethod
 
       ncoly <- ncol(y)
       for(ii in 1:length( .percentile )) {
@@ -433,7 +433,7 @@ rkoenker <- function(n, location = 0, scale = 1) {
       names(extra$percentile) = colnames(mu)
   }), list( .llocat = llocat, .lscale = lscale,
             .elocat = elocat, .escale = escale,
-            .method.init = method.init, .percentile = percentile ))),
+            .imethod = imethod, .percentile = percentile ))),
   loglikelihood = eval(substitute(
           function(mu, y, w, residuals = FALSE, eta, extra = NULL) {
     locat <- eta2theta(eta[, 1], link = .llocat, earg = .elocat)
@@ -457,8 +457,8 @@ rkoenker <- function(n, location = 0, scale = 1) {
     dl.dlocat <- 3 * zedd   / (Scale * (4 + zedd^2))
     dl.dscale <- 3 * zedd^2 / (Scale * (4 + zedd^2)) - 1 / Scale
 
-    w * cbind(dl.dlocat * dlocat.deta,
-              dl.dscale * dscale.deta)
+    c(w) * cbind(dl.dlocat * dlocat.deta,
+                 dl.dscale * dscale.deta)
   }), list( .llocat = llocat, .lscale = lscale,
             .elocat = elocat, .escale = escale ))),
   weight = eval(substitute(expression({
@@ -469,7 +469,7 @@ rkoenker <- function(n, location = 0, scale = 1) {
     wz[, iam(1, 1, M = M)] <- ed2l.dlocat2 * dlocat.deta^2
     wz[, iam(2, 2, M = M)] <- ed2l.dscale2 * dscale.deta^2
 
-    w * wz
+    c(w) * wz
   }), list( .llocat = llocat, .lscale = lscale,
             .elocat = elocat, .escale = escale ))))
 }
diff --git a/R/family.extremes.R b/R/family.extremes.R
index da4f622..fc0c620 100644
--- a/R/family.extremes.R
+++ b/R/family.extremes.R
@@ -29,7 +29,7 @@ rgev <- function(n, location = 0, scale = 1, shape = 0) {
     nscase = sum(scase)
     if (use.n - nscase)
         ans[!scase] = location[!scase] + scale[!scase] *
-          ((-log(runif(use.n-nscase)))^(-shape[!scase]) -1) / shape[!scase]
+        ((-log(runif(use.n - nscase)))^(-shape[!scase]) -1) / shape[!scase]
     if (nscase)
         ans[scase] = rgumbel(nscase, location[scase], scale[scase])
     ans[scale <= 0] = NaN
@@ -145,7 +145,7 @@ qgev <- function(p, location = 0, scale = 1, shape = 0) {
           if (lshape == "elogit") list(min = -0.5, max = 0.5) else list(),
           percentiles = c(95, 99),
           iscale = NULL, ishape = NULL,
-          method.init = 1, gshape = c(-0.45, 0.45),
+          imethod = 1, gshape = c(-0.45, 0.45),
           tolshape0 = 0.001, giveWarning = TRUE,
           zero = 3)
 {
@@ -167,14 +167,14 @@ qgev <- function(p, location = 0, scale = 1, shape = 0) {
     if (!mean &&  length(percentiles) &&
        (!is.Numeric(percentiles, posit = TRUE) || max(percentiles) >= 100))
         stop("bad input for argument 'percentiles'")
-    if (!is.Numeric(method.init, allow = 1, posit = TRUE, integer = TRUE) ||
-       method.init > 2.5)
-        stop("argument 'method.init' must be 1 or 2")
+    if (!is.Numeric(imethod, allow = 1, posit = TRUE, integer = TRUE) ||
+       imethod > 2.5)
+        stop("argument 'imethod' must be 1 or 2")
     if (length(ishape) && !is.Numeric(ishape))
         stop("bad input for argument 'ishape'")
     if (!is.Numeric(tolshape0, allow = 1, posit = TRUE) || tolshape0 > 0.1)
         stop("bad input for argument 'tolshape0'")
-    if (!is.Numeric(gshape, allow=2) || gshape[1] >= gshape[2])
+    if (!is.Numeric(gshape, allow = 2) || gshape[1] >= gshape[2])
         stop("bad input for argument 'gshape'")
     if (length(zero) && !is.Numeric(zero, integer = TRUE, posit = TRUE))
         stop("bad input for argument 'zero'")
@@ -184,7 +184,7 @@ qgev <- function(p, location = 0, scale = 1, shape = 0) {
     if (!is.list(eshape)) eshape = list()
 
     new("vglmff",
-    blurb = c("Generalized Extreme Value Distribution\n",
+    blurb = c("Generalized extreme value distribution\n",
             "Links:    ",
             namesof("location", link = llocation, earg = elocation), ", ", 
             namesof("scale", link = lscale, earg = escale), ", ",
@@ -215,9 +215,9 @@ qgev <- function(p, location = 0, scale = 1, shape = 0) {
             if ( .lshape == "elogit" && length(init.xi) &&
                 (any(init.xi <= eshape$min | init.xi >= eshape$max)))
                 stop("bad input for argument 'eshape'")
-            if ( .method.init == 1) {
+            if ( .imethod == 1) {
                 nvector = 4:10   # Arbitrary; could be made an argument
-                ynvector = quantile(y[,1], probs = 1-1/nvector)
+                ynvector = quantile(y[, 1], probs = 1-1/nvector)
                 objecFunction = -Inf   # Actually the log-likelihood
                 est.sigma = !length(init.sig)
                 gshape = .gshape
@@ -226,14 +226,14 @@ qgev <- function(p, location = 0, scale = 1, shape = 0) {
                 for(xi.try in temp234) {
                     xvec = if (abs(xi.try) < .tolshape0) log(nvector) else
                            (nvector^xi.try - 1) / xi.try
-                    fit0 = lsfit(x=xvec, y=ynvector, intercept = TRUE)
+                    fit0 = lsfit(x = xvec, y=ynvector, intercept = TRUE)
                     sigmaTry = if (est.sigma)
                         rep(fit0$coef["X"], len = nrow(y)) else init.sig
                     muTry = rep(fit0$coef["Intercept"], len = nrow(y))
                     llTry = egev(giveWarning=
-                     FALSE)@loglikelihood(mu = NULL, y=y[,1], w=w,
+                     FALSE)@loglikelihood(mu = NULL, y=y[, 1], w=w,
                      residuals = FALSE,
-                     eta=cbind(theta2eta(muTry, .llocation,earg = .elocation),
+                     eta = cbind(theta2eta(muTry, .llocation,earg = .elocation),
                                theta2eta(sigmaTry, .lscale,earg = .escale), 
                                theta2eta(xi.try, link= .lshape, earg = .eshape)))
                     if (llTry >= objecFunction) {
@@ -249,9 +249,9 @@ qgev <- function(p, location = 0, scale = 1, shape = 0) {
             } else {
                 init.xi = rep(0.05, len = nrow(y))
                 if (!length(init.sig))
-                    init.sig = rep(sqrt(6 * var(y[,1]))/pi, len = nrow(y))
+                    init.sig = rep(sqrt(6 * var(y[, 1]))/pi, len = nrow(y))
                 EulerM = -digamma(1)
-                init.mu = rep(median(y[,1]) - EulerM*init.sig, len = nrow(y))
+                init.mu = rep(median(y[, 1]) - EulerM*init.sig, len = nrow(y))
             }
 
             bad = ((1 + init.xi*(y-init.mu)/init.sig) <= 0)
@@ -261,9 +261,10 @@ qgev <- function(p, location = 0, scale = 1, shape = 0) {
                 init.xi[bad] = ifelse(y[bad] > init.mu[bad], 0.1, -0.1)
             }
 
-            etastart = cbind(theta2eta(init.mu,  .llocation, earg = .elocation),
-                             theta2eta(init.sig, .lscale, earg = .escale),
-                             theta2eta(init.xi,  .lshape, earg = .eshape))
+            etastart =
+              cbind(theta2eta(init.mu,  .llocation, earg = .elocation),
+                    theta2eta(init.sig, .lscale,    earg = .escale),
+                    theta2eta(init.xi,  .lshape,    earg = .eshape))
         }
     }), list( .llocation = llocation, .lscale = lscale, .lshape = lshape,
               .elocation = elocation, .escale = escale, .eshape = eshape,
@@ -271,17 +272,17 @@ qgev <- function(p, location = 0, scale = 1, shape = 0) {
               .gshape = gshape,
               .percentiles = percentiles,
               .tolshape0 = tolshape0,
-              .method.init = method.init, .giveWarning= giveWarning ))),
+              .imethod = imethod, .giveWarning= giveWarning ))),
     inverse = eval(substitute(function(eta, extra = NULL) {
-        loc = eta2theta(eta[,1], .llocation, earg = .elocation)
-        sigma = eta2theta(eta[,2], .lscale, earg = .escale)
+        loc = eta2theta(eta[, 1], .llocation, earg = .elocation)
+        sigma = eta2theta(eta[, 2], .lscale, earg = .escale)
         xi = eta2theta(eta[,3], .lshape, earg = .eshape)
         is.zero = (abs(xi) < .tolshape0)
         cent = extra$percentiles
-        lp = length(cent)
-        fv = matrix(as.numeric(NA), nrow(eta), lp)
-        if (lp) {
-            for(ii in 1:lp) {
+        LP = length(cent)
+        fv = matrix(as.numeric(NA), nrow(eta), LP)
+        if (LP) {
+            for(ii in 1:LP) {
                 yp = -log(cent[ii]/100)
                 fv[!is.zero,ii] = loc[!is.zero] - sigma[!is.zero] *
                                 (1 - yp^(-xi[!is.zero])) / xi[!is.zero]
@@ -291,19 +292,24 @@ qgev <- function(p, location = 0, scale = 1, shape = 0) {
                                 paste(as.character(cent), "%", sep = ""))
         } else {
             EulerM = -digamma(1)
-            fv = loc + sigma * EulerM  # When xi=0, is Gumbel
+            fv = loc + sigma * EulerM  # When xi = 0, is Gumbel
             fv[!is.zero] = loc[!is.zero] + sigma[!is.zero] *
                           (gamma(1-xi[!is.zero])-1) / xi[!is.zero]
             fv[xi >= 1] = NA  # Mean exists only if xi < 1.
         }
         fv
-    }, list( .llocation = llocation, .lscale = lscale, .lshape = lshape,
+    }, list( .llocation = llocation, .lscale = lscale,
+             .lshape = lshape,
              .eshape = eshape, .tolshape0 = tolshape0 ))),
     last = eval(substitute(expression({
-        misc$links = c(location = .llocation, scale = .lscale, shape =.lshape)
+        misc$links = c(location = .llocation,
+                       scale = .lscale,
+                       shape = .lshape)
         misc$true.mu = !length( .percentiles) # @fitted is not a true mu
         misc$percentiles = .percentiles
-        misc$earg = list(location= .elocation, scale= .escale, shape= .eshape)
+        misc$earg = list(location = .elocation,
+                         scale = .escale,
+                         shape = .eshape)
         misc$expected = TRUE
         misc$tolshape0 = .tolshape0
         if (ncol(y) == 1)
@@ -315,8 +321,8 @@ qgev <- function(p, location = 0, scale = 1, shape = 0) {
               .tolshape0 = tolshape0, .percentiles = percentiles ))),
     loglikelihood = eval(substitute(
     function(mu,y,w,residuals = FALSE,eta,extra = NULL) {
-        mmu = eta2theta(eta[,1], .llocation, earg = .elocation)
-        sigma = eta2theta(eta[,2], .lscale, earg = .escale)
+        mmu = eta2theta(eta[, 1], .llocation, earg = .elocation)
+        sigma = eta2theta(eta[, 2], .lscale, earg = .escale)
         xi = eta2theta(eta[,3], .lshape, earg = .eshape)
         is.zero = (abs(xi) < .tolshape0)
         zedd = (y-mmu) / sigma
@@ -326,7 +332,8 @@ qgev <- function(p, location = 0, scale = 1, shape = 0) {
         A1 = A[cbind(ii, r.vec)]
         mytolerance = 0  # .Machine$double.eps
         if (any(bad <- (A1 <= mytolerance), na.rm = TRUE)) {
-            cat("There are",sum(bad),"range violations in @loglikelihood\n")
+            cat("There are", sum(bad),
+                "range violations in @loglikelihood\n")
             flush.console()
         }
         igev = !is.zero &  !bad
@@ -351,8 +358,8 @@ qgev <- function(p, location = 0, scale = 1, shape = 0) {
     vfamily = c("gev", "vextremes"),
     deriv = eval(substitute(expression({
         r.vec = rowSums(cbind(!is.na(y)))
-        mmu = eta2theta(eta[,1], .llocation, earg = .elocation)
-        sigma = eta2theta(eta[,2], .lscale, earg = .escale)
+        mmu = eta2theta(eta[, 1], .llocation, earg = .elocation)
+        sigma = eta2theta(eta[, 2], .lscale, earg = .escale)
         xi = eta2theta(eta[,3], .lshape, earg = .eshape)
         is.zero = (abs(xi) < .tolshape0)
         ii = 1:nrow(eta)
@@ -364,10 +371,12 @@ qgev <- function(p, location = 0, scale = 1, shape = 0) {
         pow = 1 + 1/xi
         A1 = A[cbind(ii, r.vec)]
 
-        AAr1 = dA.dmu/(xi * A1^pow) - pow * rowSums(cbind(dA.dmu/A), na.rm = TRUE)
+        AAr1 = dA.dmu/(xi * A1^pow) -
+               pow * rowSums(cbind(dA.dmu/A), na.rm = TRUE)
         AAr2 = dA.dsigma[cbind(ii,r.vec)] / (xi * A1^pow) -
                pow * rowSums(cbind(dA.dsigma/A), na.rm = TRUE)
-        AAr3 = 1/(xi * A1^pow) - pow * rowSums(cbind(dA.dsigma/A), na.rm = TRUE)
+        AAr3 = 1/(xi * A1^pow) -
+               pow * rowSums(cbind(dA.dsigma/A), na.rm = TRUE)
         dl.dmu = AAr1
         dl.dsi = AAr2 - r.vec/sigma
         dl.dxi = rowSums(cbind(log(A)), na.rm = TRUE)/xi^2 -
@@ -386,7 +395,9 @@ qgev <- function(p, location = 0, scale = 1, shape = 0) {
         dmu.deta = dtheta.deta(mmu, .llocation, earg = .elocation)
         dsi.deta = dtheta.deta(sigma, .lscale, earg = .escale)
         dxi.deta = dtheta.deta(xi, .lshape, earg = .eshape)
-        w * cbind(dl.dmu * dmu.deta, dl.dsi * dsi.deta, dl.dxi * dxi.deta)
+        c(w) * cbind(dl.dmu * dmu.deta,
+                     dl.dsi * dsi.deta,
+                     dl.dxi * dxi.deta)
     }), list( .llocation = llocation, .lscale = lscale, .lshape = lshape,
               .elocation = elocation, .escale = escale, .eshape = eshape,
               .tolshape0 = tolshape0 ))),
@@ -395,7 +406,8 @@ qgev <- function(p, location = 0, scale = 1, shape = 0) {
         dd = digamma(r.vec-kay+1)
         ddd = digamma(r.vec+1) # Unnecessarily evaluated at each iteration
         temp13 = -kay * dd + (kay^2 - kay + 1) / (1-kay)
-        temp33 = 1 - 2 * kay * ddd + kay^2 * (1 + trigamma(r.vec+1) + ddd^2)
+        temp33 = 1 - 2 * kay * ddd +
+                 kay^2 * (1 + trigamma(r.vec+1) + ddd^2)
         temp23 = -kay * dd + (1+(1-kay)^2) / (1-kay)
         GR.gev = function(j, ri, kay) gamma(ri - j*kay + 1) /  gamma(ri)
         tmp2 = (1-kay)^2 * GR.gev(2, r.vec, kay)  # Latter is GR2
@@ -405,41 +417,44 @@ qgev <- function(p, location = 0, scale = 1, shape = 0) {
         k2 = k1 * kay
         k3 = k2 * kay   # kay^3 * (1-2*kay)
         wz = matrix(as.numeric(NA), n, 6)
-        wz[,iam(1,1,M)] = tmp2 / (sigma^2 * k0)
-        wz[,iam(1,2,M)] = (tmp2 - tmp1) / (sigma^2 * k1)
-        wz[,iam(1,3,M)] = (tmp1 * temp13 - tmp2) / (sigma * k2)
-        wz[,iam(2,2,M)] = (r.vec*k0 - 2*tmp1 + tmp2) / (sigma^2 * k2)
-        wz[,iam(2,3,M)] = (r.vec*k1*ddd + tmp1 *
+        wz[, iam(1, 1, M)] = tmp2 / (sigma^2 * k0)
+        wz[, iam(1, 2, M)] = (tmp2 - tmp1) / (sigma^2 * k1)
+        wz[, iam(1, 3, M)] = (tmp1 * temp13 - tmp2) / (sigma * k2)
+        wz[, iam(2, 2, M)] = (r.vec*k0 - 2*tmp1 + tmp2) / (sigma^2 * k2)
+        wz[, iam(2, 3, M)] = (r.vec*k1*ddd + tmp1 *
                            temp23 - tmp2 - r.vec*k0) / (sigma * k3)
-        wz[,iam(3,3,M)] = (2*tmp1*(-temp13) + tmp2 + r.vec*k0*temp33)/(k3*kay)
+        wz[, iam(3, 3, M)] = (2*tmp1*(-temp13) + tmp2 +
+                             r.vec*k0*temp33)/(k3*kay)
 
         if (any(is.zero)) {
             if (ncol(y) > 1)
-                stop("cannot handle xi==0 with a multivariate response")
+                stop("cannot handle xi == 0 with a multivariate response")
 
             EulerM = -digamma(1)
-            wz[is.zero,iam(2,2,M)] = (pi^2/6 + (1-EulerM)^2) / sigma^2
-            wz[is.zero,iam(3,3,M)] = 2.4236
-            wz[is.zero,iam(1,2,M)] = (digamma(2) + 2*(EulerM-1)) / sigma^2
-            wz[is.zero,iam(1,3,M)]= -(trigamma(1)/2 + digamma(1)*
+            wz[is.zero, iam(2, 2, M)] = (pi^2/6 + (1-EulerM)^2) / sigma^2
+            wz[is.zero, iam(3, 3, M)] = 2.4236
+            wz[is.zero, iam(1, 2, M)] = (digamma(2) +
+                                         2*(EulerM-1)) / sigma^2
+            wz[is.zero, iam(1, 3, M)]= -(trigamma(1)/2 + digamma(1)*
                                     (digamma(1)/2+1))/sigma
-            wz[is.zero,iam(2,3,M)] = (-dgammadx(2,3)/6 + dgammadx(1,1) +
-                                    2*dgammadx(1,2) + 2*dgammadx(1,3)/3) / sigma
+            wz[is.zero, iam(2, 3, M)] = (-dgammadx(2,3)/6 + dgammadx(1, 1) +
+                                    2*dgammadx(1, 2) +
+                                    2*dgammadx(1,3)/3) / sigma
 
             if (FALSE ) {
-            wz[,iam(1,2,M)] = 2 * r.vec / sigma^2
-            wz[,iam(2,2,M)] = -4 * r.vec * digamma(r.vec+1) + 2 * r.vec +
+            wz[, iam(1, 2, M)] = 2 * r.vec / sigma^2
+            wz[, iam(2, 2, M)] = -4 * r.vec * digamma(r.vec+1) + 2 * r.vec +
                 (4 * dgammadx(r.vec+1, der=1) - 
-                 3 * dgammadx(r.vec+1, der=2)) / gamma(r.vec) # Not checked
+                 3 * dgammadx(r.vec+1, der = 2)) / gamma(r.vec) # Not checked
             }
         }
-        wz[,iam(1,1,M)] = wz[,iam(1,1,M)] * dmu.deta^2
-        wz[,iam(2,2,M)] = wz[,iam(2,2,M)] * dsi.deta^2
-        wz[,iam(3,3,M)] = wz[,iam(3,3,M)] * dxi.deta^2
-        wz[,iam(1,2,M)] = wz[,iam(1,2,M)] * dmu.deta * dsi.deta
-        wz[,iam(1,3,M)] = wz[,iam(1,3,M)] * dmu.deta * (-dxi.deta)
-        wz[,iam(2,3,M)] = wz[,iam(2,3,M)] * dsi.deta * (-dxi.deta)
-        w * wz
+        wz[, iam(1, 1, M)] = wz[, iam(1, 1, M)] * dmu.deta^2
+        wz[, iam(2, 2, M)] = wz[, iam(2, 2, M)] * dsi.deta^2
+        wz[, iam(3, 3, M)] = wz[, iam(3,3, M)] * dxi.deta^2
+        wz[, iam(1, 2, M)] = wz[, iam(1, 2, M)] * dmu.deta * dsi.deta
+        wz[, iam(1, 3, M)] = wz[, iam(1,3, M)] * dmu.deta * (-dxi.deta)
+        wz[, iam(2, 3, M)] = wz[, iam(2,3, M)] * dsi.deta * (-dxi.deta)
+        c(w) * wz
     }), list( .eshape = eshape ))))
 }
 
@@ -447,21 +462,21 @@ qgev <- function(p, location = 0, scale = 1, shape = 0) {
 
 
 dgammadx <- function(x, deriv.arg=1) {
-    if (deriv.arg==0) {
+    if (deriv.arg == 0) {
         gamma(x)
     } else if (deriv.arg == 1) {
         digamma(x) * gamma(x)
     } else if (deriv.arg == 2) {
         gamma(x) * (trigamma(x) + digamma(x)^2)
     } else if (deriv.arg == 3) {
-        gamma(x) * (psigamma(x, der=2) + 2 * digamma(x) * trigamma(x)) +
+        gamma(x) * (psigamma(x, der = 2) + 2 * digamma(x) * trigamma(x)) +
         dgammadx(x, der=1) * (trigamma(x) + digamma(x)^2)
     } else if (deriv.arg == 4) {
-        dgammadx(x, der=2) * (trigamma(x) + digamma(x)^2) +
-    2 * dgammadx(x, der=1) * (psigamma(x, der=2) + 2*digamma(x) * trigamma(x)) +
+        dgammadx(x, der = 2) * (trigamma(x) + digamma(x)^2) +
+    2 * dgammadx(x, der=1) * (psigamma(x, der = 2) + 2*digamma(x) * trigamma(x)) +
         gamma(x) * (psigamma(x, der=3) + 2*trigamma(x)^2 +
-                    2 * digamma(x) * psigamma(x, der=2))
-    } else stop("cannot handle deriv>4")
+                    2 * digamma(x) * psigamma(x, der = 2))
+    } else stop("cannot handle deriv > 4")
 }
 
 
@@ -476,7 +491,7 @@ dgammadx <- function(x, deriv.arg=1) {
                   if (lshape == "elogit") list(min = -0.5, max = 0.5) else list(),
                   percentiles = c(95, 99),
                   iscale = NULL, ishape = NULL,
-                  method.init = 1, gshape = c(-0.45, 0.45),
+                  imethod = 1, gshape = c(-0.45, 0.45),
                   tolshape0 = 0.001, giveWarning = TRUE,
                   zero = 3)
 {
@@ -490,14 +505,14 @@ dgammadx <- function(x, deriv.arg=1) {
       llocation <- as.character(substitute(llocation))
   if (mode(lshape) != "character" && mode(lshape) != "name")
       lshape <- as.character(substitute(lshape))
-  if (!is.Numeric(gshape, allow=2) || gshape[1] >= gshape[2])
+  if (!is.Numeric(gshape, allow = 2) || gshape[1] >= gshape[2])
       stop("bad input for argument 'gshape'")
     if (length(percentiles) && 
       (!is.Numeric(percentiles, posit = TRUE) || max(percentiles) >= 100))
         stop("bad input for argument 'percentiles'")
-    if (!is.Numeric(method.init, allow = 1, posit = TRUE, integer = TRUE) ||
-       method.init > 2.5)
-        stop("argument 'method.init' must be 1 or 2")
+    if (!is.Numeric(imethod, allow = 1, posit = TRUE, integer = TRUE) ||
+       imethod > 2.5)
+        stop("argument 'imethod' must be 1 or 2")
     if (length(ishape) && !is.Numeric(ishape))
         stop("bad input for argument 'ishape'")
     if (!is.Numeric(tolshape0, allow = 1, posit = TRUE) || tolshape0 > 0.1)
@@ -509,7 +524,7 @@ dgammadx <- function(x, deriv.arg=1) {
     if (!is.list(eshape)) eshape = list()
 
     new("vglmff",
-    blurb = c("Generalized Extreme Value Distribution\n",
+    blurb = c("Generalized extreme value distribution\n",
             "Links:    ",
             namesof("location", link = llocation, earg = elocation), ", ", 
             namesof("scale", link = lscale, earg = escale), ", ",
@@ -531,7 +546,7 @@ dgammadx <- function(x, deriv.arg=1) {
             if ( .lshape == "elogit" && length(init.xi) && 
                (any(init.xi <= eshape$min | init.xi >= eshape$max)))
                 stop("bad input for argument 'eshape'")
-            if ( .method.init == 1) {
+            if ( .imethod == 1) {
                 nvector = 4:10   # Arbitrary; could be made an argument
                 ynvector = quantile(y, probs = 1-1/nvector)
                 objecFunction = -Inf   # Actually the log-likelihood
@@ -542,7 +557,7 @@ dgammadx <- function(x, deriv.arg=1) {
                 for(xi.try in temp234) {
                     xvec = if (abs(xi.try) < .tolshape0) log(nvector) else
                            (nvector^xi.try - 1) / xi.try
-                    fit0 = lsfit(x=xvec, y=ynvector, intercept = TRUE)
+                    fit0 = lsfit(x = xvec, y=ynvector, intercept = TRUE)
                     if (est.sigma) {
                         sigmaTry = rep(fit0$coef["X"], len = length(y))
                     } else { 
@@ -552,7 +567,7 @@ dgammadx <- function(x, deriv.arg=1) {
                     llTry = egev(giveWarning=
                       FALSE)@loglikelihood(mu = NULL, y=y, w=w,
                       residuals = FALSE,
-                      eta=cbind(theta2eta(muTry, .llocation, earg = .elocation),
+                      eta = cbind(theta2eta(muTry, .llocation, earg = .elocation),
                                 theta2eta(sigmaTry, .lscale, earg = .escale), 
                                 theta2eta(xi.try,  .lshape,  earg = .eshape)))
                     if (llTry >= objecFunction) {
@@ -583,26 +598,27 @@ dgammadx <- function(x, deriv.arg=1) {
 
             extra$percentiles = .percentiles
 
-            etastart = cbind(theta2eta(init.mu,  .llocation, earg = .elocation),
-                             theta2eta(init.sig, .lscale, earg = .escale), 
-                             theta2eta(init.xi,  .lshape, earg = .eshape))
+            etastart =
+              cbind(theta2eta(init.mu,  .llocation, earg = .elocation),
+                    theta2eta(init.sig, .lscale,    earg = .escale), 
+                    theta2eta(init.xi,  .lshape,    earg = .eshape))
         }
     }), list( .llocation = llocation, .lscale = lscale, .lshape = lshape,
               .percentiles = percentiles, .tolshape0 = tolshape0,
               .elocation = elocation, .escale = escale, .eshape = eshape,
-              .method.init = method.init,
+              .imethod = imethod,
               .giveWarning= giveWarning,
               .iscale = iscale, .ishape = ishape, .gshape = gshape ))),
     inverse = eval(substitute(function(eta, extra = NULL) {
-        loc <- eta2theta(eta[,1], .llocation, earg = .elocation)
-        sigma <- eta2theta(eta[,2], .lscale, earg = .escale)
+        loc <- eta2theta(eta[, 1], .llocation, earg = .elocation)
+        sigma <- eta2theta(eta[, 2], .lscale, earg = .escale)
         xi <- eta2theta(eta[,3], .lshape, earg = .eshape)
         is.zero <- (abs(xi) < .tolshape0)
         cent = extra$percentiles
-        lp <- length(cent)
-        fv <- matrix(as.numeric(NA), nrow(eta), lp)
-        if (lp) {
-            for(ii in 1:lp) {
+        LP <- length(cent)
+        fv <- matrix(as.numeric(NA), nrow(eta), LP)
+        if (LP) {
+            for(ii in 1:LP) {
                 yp = -log(cent[ii]/100)
                 fv[!is.zero,ii] = loc[!is.zero] - sigma[!is.zero] *
                                 (1 - yp^(-xi[!is.zero])) / xi[!is.zero]
@@ -612,7 +628,7 @@ dgammadx <- function(x, deriv.arg=1) {
                                 paste(as.character(cent), "%", sep = ""))
         } else {
             EulerM = -digamma(1)
-            fv = loc + sigma * EulerM  # When xi=0, is Gumbel
+            fv = loc + sigma * EulerM  # When xi = 0, is Gumbel
             fv[!is.zero] = loc[!is.zero] + sigma[!is.zero] *
                           (gamma(1-xi[!is.zero])-1) / xi[!is.zero]
             fv[xi >= 1] = NA  # Mean exists only if xi < 1.
@@ -629,14 +645,14 @@ dgammadx <- function(x, deriv.arg=1) {
         misc$tolshape0 = .tolshape0
         misc$expected = TRUE 
         if (any(xi < -0.5))
-            warning("some values of the shape parameter are less than -0.5")
+          warning("some values of the shape parameter are less than -0.5")
       }), list( .llocation = llocation, .lscale = lscale, .lshape = lshape,
                 .elocation = elocation, .escale = escale, .eshape = eshape,
                 .tolshape0 = tolshape0,  .percentiles = percentiles ))),
     loglikelihood = eval(substitute(
     function(mu, y, w, residuals = FALSE, eta, extra = NULL) {
-        mmu <- eta2theta(eta[,1], .llocation, earg = .elocation )
-        sigma <- eta2theta(eta[,2], .lscale, earg = .escale )
+        mmu <- eta2theta(eta[, 1], .llocation, earg = .elocation )
+        sigma <- eta2theta(eta[, 2], .lscale, earg = .escale )
         xi <- eta2theta(eta[,3], .lshape, earg = .eshape )
 
         if (residuals) stop("loglikelihood residuals not ",
@@ -651,8 +667,8 @@ dgammadx <- function(x, deriv.arg=1) {
              .giveWarning= giveWarning, .tolshape0 = tolshape0 ))),
     vfamily = c("egev", "vextremes"),
     deriv = eval(substitute(expression({
-        mmu = eta2theta(eta[,1], .llocation, earg = .elocation)
-        sigma = eta2theta(eta[,2], .lscale, earg = .escale )
+        mmu = eta2theta(eta[, 1], .llocation, earg = .elocation)
+        sigma = eta2theta(eta[, 2], .lscale, earg = .escale )
         xi = eta2theta(eta[,3], .lshape, earg = .eshape)
         is.zero <- (abs(xi) < .tolshape0)
         zedd = (y-mmu) / sigma
@@ -661,8 +677,9 @@ dgammadx <- function(x, deriv.arg=1) {
         dA.dmu = -xi / sigma
         dA.dsigma = -xi * zedd / sigma
         pow = 1 + 1/xi
-        if (any(bad <- A<=0, na.rm = TRUE)) stop(sum(bad, na.rm = TRUE),
-            " observations violating boundary constraints in '@deriv'")
+        if (any(bad <- A <= 0, na.rm = TRUE))
+          stop(sum(bad, na.rm = TRUE),
+               " observations violating boundary constraints in '@deriv'")
         AA = 1/(xi*A^pow)- pow/A 
         dl.dmu = dA.dmu * AA
         dl.dsi = dA.dsigma * AA - 1/sigma
@@ -677,45 +694,48 @@ dgammadx <- function(x, deriv.arg=1) {
         dmu.deta = dtheta.deta(mmu, .llocation, earg = .elocation)
         dsi.deta = dtheta.deta(sigma, .lscale, earg = .escale )
         dxi.deta = dtheta.deta(xi, .lshape, earg = .eshape)
-        w * cbind(dl.dmu * dmu.deta, dl.dsi * dsi.deta, dl.dxi*dxi.deta)
+        c(w) * cbind(dl.dmu * dmu.deta,
+                     dl.dsi * dsi.deta,
+                     dl.dxi * dxi.deta)
     }), list( .llocation = llocation, .lscale = lscale, .lshape = lshape,
               .elocation = elocation, .escale = escale, .eshape = eshape,
               .tolshape0 = tolshape0 ))),
     weight = eval(substitute(expression({
         bad <- A <= 0
-        if (any(bad, na.rm = TRUE)) stop(sum(bad, na.rm = TRUE),
-            " observations violating boundary constraints in '@weight'")
+        if (any(bad, na.rm = TRUE))
+          stop(sum(bad, na.rm = TRUE),
+               " observations violating boundary constraints in '@weight'")
         kay = -xi  # for the formulae 
         kay[abs(kay-0.5) < .tolshape0] = 0.501
         temp100 = gamma(2-kay)
         pp = (1-kay)^2 * gamma(1-2*kay) # gamma(0) is undefined so kay != 0.5
         qq = temp100 * (digamma(1-kay) - (1-kay)/kay)
         wz = matrix(as.numeric(NA), n, 6)
-        wz[,iam(1,1,M)] = pp / sigma^2
-        wz[,iam(2,2,M)] = (1-2*temp100 + pp) / (sigma * kay)^2
+        wz[, iam(1, 1, M)] = pp / sigma^2
+        wz[, iam(2, 2, M)] = (1-2*temp100 + pp) / (sigma * kay)^2
         EulerM = -digamma(1)
-        wz[,iam(3,3,M)] = (pi^2 / 6 + (1-EulerM-1/kay)^2 +
+        wz[, iam(3,3, M)] = (pi^2 / 6 + (1-EulerM-1/kay)^2 +
                            (2*qq + pp/kay)/kay) / kay^2 
-        wz[,iam(1,2,M)] = (pp - temp100) / (sigma^2 * kay)
-        wz[,iam(1,3,M)] = -(qq + pp/kay) / (sigma * kay)
-        wz[,iam(2,3,M)] = (1-EulerM - (1-temp100)/kay - qq -
+        wz[, iam(1, 2, M)] = (pp - temp100) / (sigma^2 * kay)
+        wz[, iam(1,3, M)] = -(qq + pp/kay) / (sigma * kay)
+        wz[, iam(2,3, M)] = (1-EulerM - (1-temp100)/kay - qq -
                             pp/kay) / (sigma * kay^2)
         if (any(is.zero)) {
-            wz[is.zero,iam(2,2,M)] = (pi^2/6 + (1-EulerM)^2) / sigma^2
-            wz[is.zero,iam(3,3,M)] <- 2.4236
-            wz[is.zero,iam(1,2,M)] <- (digamma(2) + 2*(EulerM-1)) / sigma^2
-            wz[is.zero,iam(1,3,M)] <- -(trigamma(1)/2 + digamma(1)*
+            wz[is.zero, iam(2, 2, M)] = (pi^2/6 + (1-EulerM)^2) / sigma^2
+            wz[is.zero, iam(3,3, M)] <- 2.4236
+            wz[is.zero, iam(1, 2, M)] <- (digamma(2) + 2*(EulerM-1)) / sigma^2
+            wz[is.zero, iam(1,3, M)] <- -(trigamma(1)/2 + digamma(1)*
                                        (digamma(1)/2+1))/sigma
-            wz[is.zero,iam(2,3,M)] <- (-dgammadx(2,3)/6 + dgammadx(1,1) +
-                                    2*dgammadx(1,2) + 2*dgammadx(1,3)/3)/sigma
+            wz[is.zero, iam(2,3, M)] <- (-dgammadx(2,3)/6 + dgammadx(1, 1) +
+                                    2*dgammadx(1, 2) + 2*dgammadx(1,3)/3)/sigma
         }
-        wz[,iam(1,1,M)] <- wz[,iam(1,1,M)] * dmu.deta^2
-        wz[,iam(2,2,M)] <- wz[,iam(2,2,M)] * dsi.deta^2
-        wz[,iam(3,3,M)] <- wz[,iam(3,3,M)] * dxi.deta^2
-        wz[,iam(1,2,M)] <- wz[,iam(1,2,M)] * dmu.deta * dsi.deta
-        wz[,iam(1,3,M)] <- wz[,iam(1,3,M)] * dmu.deta * (-dxi.deta)
-        wz[,iam(2,3,M)] <- wz[,iam(2,3,M)] * dsi.deta * (-dxi.deta)
-        w * wz
+        wz[, iam(1, 1, M)] <- wz[, iam(1, 1, M)] * dmu.deta^2
+        wz[, iam(2, 2, M)] <- wz[, iam(2, 2, M)] * dsi.deta^2
+        wz[, iam(3,3, M)] <- wz[, iam(3,3, M)] * dxi.deta^2
+        wz[, iam(1, 2, M)] <- wz[, iam(1, 2, M)] * dmu.deta * dsi.deta
+        wz[, iam(1,3, M)] <- wz[, iam(1,3, M)] * dmu.deta * (-dxi.deta)
+        wz[, iam(2,3, M)] <- wz[, iam(2,3, M)] * dsi.deta * (-dxi.deta)
+        c(w) * wz
     }), list( .eshape = eshape, .tolshape0 = tolshape0 ))))
 }
 
@@ -765,7 +785,7 @@ pgumbel <- function(q, location = 0, scale = 1) {
                    elocation = list(),
                    escale = list(),
                    iscale = NULL,
-                   R=NA, percentiles=c(95,99),
+                   R=NA, percentiles = c(95,99),
                    mpv = FALSE, zero = NULL)
 {
     if (mode(llocation) != "character" && mode(llocation) != "name")
@@ -785,7 +805,7 @@ pgumbel <- function(q, location = 0, scale = 1) {
     if (!is.list(escale)) escale = list()
 
     new("vglmff",
-    blurb = c("Gumbel Distribution for Extreme Value Regression\n",
+    blurb = c("Gumbel distribution for extreme value regression\n",
            "Links:    ",
            namesof("location", link = llocation, earg = elocation), ", ",
            namesof("scale", link = lscale, earg = escale )),
@@ -829,17 +849,18 @@ pgumbel <- function(q, location = 0, scale = 1) {
               .elocation = elocation, .escale = escale,
               .R=R, .mpv=mpv, .percentiles = percentiles ))),
     inverse = eval(substitute(function(eta, extra = NULL) {
-        loc = eta2theta(eta[,1], .llocation, earg = .elocation)
-        sigma = eta2theta(eta[,2], .lscale, earg = .escale )  # sigma
+        loc = eta2theta(eta[, 1], .llocation, earg = .elocation)
+        sigma = eta2theta(eta[, 2], .lscale, earg = .escale )  # sigma
         Percentiles = extra$percentiles
-        lp = length(Percentiles)  # may be 0
-        if (lp > 0) {
+        LP = length(Percentiles)  # may be 0
+        if (LP > 0) {
             mpv = extra$mpv
-            mu = matrix(as.numeric(NA), nrow(eta), lp + mpv) # lp could be 0
+            mu = matrix(as.numeric(NA), nrow(eta), LP + mpv) # LP may be 0
             Rvec = extra$R
-            for(ii in 1:lp) {
-                ci = if (is.Numeric(Rvec)) Rvec * (1 - Percentiles[ii] / 100) else
-                    -log(Percentiles[ii] / 100)
+            for(ii in 1:LP) {
+                ci = if (is.Numeric(Rvec))
+                       Rvec * (1 - Percentiles[ii] / 100) else
+                       -log(Percentiles[ii] / 100)
                 mu[,ii] = loc - sigma * log(ci)
             }
             if (mpv) 
@@ -868,8 +889,8 @@ pgumbel <- function(q, location = 0, scale = 1) {
     vfamily = c("gumbel", "vextremes"),
     loglikelihood = eval(substitute(
     function(mu, y, w, residuals = FALSE, eta, extra = NULL) {
-        loc = eta2theta(eta[,1], .llocation, earg = .elocation)
-        sigma = eta2theta(eta[,2], .lscale, earg = .escale )
+        loc = eta2theta(eta[, 1], .llocation, earg = .elocation)
+        sigma = eta2theta(eta[, 2], .lscale, earg = .escale )
         r.vec = rowSums(cbind(!is.na(y)))
         yiri = y[cbind(1:nrow(y),r.vec)]
         ans = -r.vec * log(sigma) - exp( -(yiri-loc)/sigma )
@@ -887,8 +908,8 @@ pgumbel <- function(q, location = 0, scale = 1) {
     }, list( .llocation = llocation, .lscale = lscale,
              .elocation = elocation, .escale = escale ))),
     deriv = eval(substitute(expression({
-        loc = eta2theta(eta[,1], .llocation, earg = .elocation)
-        sigma = eta2theta(eta[,2], .lscale, earg = .escale )
+        loc = eta2theta(eta[, 1], .llocation, earg = .elocation)
+        sigma = eta2theta(eta[, 2], .lscale, earg = .escale )
         r.vec = rowSums(cbind(!is.na(y)))
         yiri = y[cbind(1:nrow(y),r.vec)]
         yi.bar = rowMeans(y, na.rm = TRUE)
@@ -899,7 +920,8 @@ pgumbel <- function(q, location = 0, scale = 1) {
         dl.dloc = (r.vec - term2) / sigma
         dl.dsigma = (rowSums((y - loc) / sigma, na.rm = TRUE) - r.vec -
              temp2 * term2) / sigma
-        w * cbind(dl.dloc * dloc.deta, dl.dsigma * dsigma.deta)
+        c(w) * cbind(dl.dloc * dloc.deta,
+                     dl.dsigma * dsigma.deta)
     }), list( .llocation = llocation, .lscale = lscale,
               .elocation = elocation, .escale = escale ))),
     weight = eval(substitute(expression({
@@ -909,14 +931,14 @@ pgumbel <- function(q, location = 0, scale = 1) {
         temp5[col(temp5) > r.vec] = 0
         temp5 = temp5 %*% rep(1, ncol(temp5))
         wz = matrix(as.numeric(NA), n, dimm(M = 2))  # 3=dimm(M = 2)
-        wz[,iam(1,1,M)] = r.vec / sigma^2
-        wz[,iam(2,1,M)] = -(1 + r.vec * temp6) / sigma^2
-        wz[,iam(2,2,M)] = (2*(r.vec+1)*temp6 + r.vec*(trigamma(r.vec) +
+        wz[, iam(1, 1, M)] = r.vec / sigma^2
+        wz[, iam(2, 1, M)] = -(1 + r.vec * temp6) / sigma^2
+        wz[, iam(2, 2, M)] = (2*(r.vec+1)*temp6 + r.vec*(trigamma(r.vec) +
                           temp6^2) + 2 - r.vec - 2*temp5) / sigma^2
-        wz[,iam(1,1,M)] = wz[,iam(1,1,M)] * dloc.deta^2
-        wz[,iam(2,1,M)] = wz[,iam(2,1,M)] * dsigma.deta * dloc.deta
-        wz[,iam(2,2,M)] = wz[,iam(2,2,M)] * dsigma.deta^2
-        w * wz
+        wz[, iam(1, 1, M)] = wz[, iam(1, 1, M)] * dloc.deta^2
+        wz[, iam(2, 1, M)] = wz[, iam(2, 1, M)] * dsigma.deta * dloc.deta
+        wz[, iam(2, 2, M)] = wz[, iam(2, 2, M)] * dsigma.deta^2
+        c(w) * wz
     }), list( .lscale = lscale ))))
 }
 
@@ -927,8 +949,10 @@ rgpd <- function(n, location = 0, scale = 1, shape = 0) {
             if (!is.Numeric(n, integ = TRUE, allow = 1, posit = TRUE))
                 stop("bad input for argument 'n'") else n
 
-    if (!is.Numeric(location)) stop("bad input for argument 'location'")
-    if (!is.Numeric(shape)) stop("bad input for argument 'shape'")
+    if (!is.Numeric(location))
+      stop("bad input for argument 'location'")
+    if (!is.Numeric(shape))
+      stop("bad input for argument 'shape'")
     ans = numeric(use.n)
     shape = rep(shape, len = use.n); location = rep(location, len = use.n); 
     scale = rep(scale, len = use.n)
@@ -936,7 +960,7 @@ rgpd <- function(n, location = 0, scale = 1, shape = 0) {
     nscase = sum(scase)
     if (use.n - nscase)
         ans[!scase] = location[!scase] + scale[!scase] *
-                    ((runif(use.n-nscase))^(-shape[!scase])-1) / shape[!scase]
+           ((runif(use.n - nscase))^(-shape[!scase])-1) / shape[!scase]
     if (nscase)
         ans[scase] = location[scase] - scale[scase] * log(runif(nscase))
     ans[scale <= 0] = NaN
@@ -974,20 +998,21 @@ dgpd <- function(x, location = 0, scale = 1, shape = 0, log = FALSE,
             logdensity[outofbounds] = oobounds.log
             no.oob = sum(outofbounds)
             if (giveWarning)
-                warning(no.oob, " observation",
-                        ifelse(no.oob > 1, "s are", " is"), " out of bounds")
+              warning(no.oob, " observation",
+                      ifelse(no.oob > 1, "s are", " is"), " out of bounds")
         }
     }
     if (nscase) {
         xok = scase & (x > location)
-        logdensity[xok] = -(x[xok]-location[xok])/scale[xok] - log(scale[xok])
+        logdensity[xok] = -(x[xok] - location[xok]) / scale[xok] -
+                          log(scale[xok])
         outofbounds = scase & (x <= location)
         if (any(outofbounds)) {
             logdensity[outofbounds] = oobounds.log
             no.oob = sum(outofbounds)
             if (giveWarning)
-                warning(no.oob, " observation",
-                        ifelse(no.oob > 1, "s are", " is"), " out of bounds")
+              warning(no.oob, " observation",
+                      ifelse(no.oob > 1, "s are", " is"), " out of bounds")
         }
     }
 
@@ -998,23 +1023,28 @@ dgpd <- function(x, location = 0, scale = 1, shape = 0, log = FALSE,
 
 
 pgpd <- function(q, location = 0, scale = 1, shape = 0) {
-    if (!is.Numeric(q)) stop("bad input for argument 'q'")
-    if (!is.Numeric(location)) stop("bad input for argument 'location'")
-    if (!is.Numeric(shape)) stop("bad input for argument 'shape'")
+    if (!is.Numeric(q))
+      stop("bad input for argument 'q'")
+    if (!is.Numeric(location))
+      stop("bad input for argument 'location'")
+    if (!is.Numeric(shape))
+      stop("bad input for argument 'shape'")
 
     use.n = max(length(q), length(location), length(scale), length(shape))
     ans = numeric(use.n)
-    shape = rep(shape, len = use.n); location = rep(location, len = use.n); 
-    scale = rep(scale, len = use.n);
-    q = rep(q-location, len = use.n) # Note the centering, careful with dgumbel()!
+    shape    = rep(shape,      len = use.n);
+    location = rep(location,   len = use.n); 
+    scale    = rep(scale,      len = use.n);
+    q        = rep(q-location, len = use.n)
+
     scase = abs(shape) < sqrt(.Machine$double.eps)
     nscase = sum(scase)
     if (use.n - nscase) {
-        q[q<0] = 0
-        ans = 1 - pmax(0, (1+shape*q/scale))^(-1/shape)
+        q[q < 0] = 0
+        ans = 1 - pmax(0, (1 + shape*q/scale))^(-1/shape)
     }
     if (nscase) {
-        pos = q>=0
+        pos = q >= 0
         ind9 =  pos & scase
         ans[ind9] =  -expm1(-q[ind9]/scale[ind9])
         ind9 = !pos & scase
@@ -1055,41 +1085,45 @@ qgpd <- function(p, location = 0, scale = 1, shape = 0) {
 
 
 
- gpd <- function(threshold=0,
+ gpd <- function(threshold = 0,
                 lscale = "loge",
                 lshape = "logoff",
                 escale = list(),
-                eshape = if (lshape == "logoff") list(offset=0.5) else 
-                if (lshape == "elogit") list(min=-0.5, max=0.5) else NULL,
-                percentiles=c(90,95),
+                eshape = if (lshape == "logoff") list(offset = 0.5) else 
+                if (lshape == "elogit") list(min = -0.5, max = 0.5) else NULL,
+                percentiles = c(90,95),
                 iscale = NULL,
                 ishape = NULL, 
                 tolshape0 = 0.001, giveWarning = TRUE,
-                method.init = 1,
-                zero=2) {
+                imethod = 1,
+                zero = 2) {
     if (!is.logical(giveWarning) || length(giveWarning) != 1)
         stop("bad input for argument 'giveWarning'")
     if (!is.Numeric(threshold)) 
         stop("bad input for argument 'threshold'")
-    if (!is.Numeric(method.init, allow = 1, posit = TRUE, integer = TRUE) ||
-       method.init > 2.5)
-        stop("argument 'method.init' must be 1 or 2")
+    if (!is.Numeric(imethod, allow = 1, posit = TRUE, integer = TRUE) ||
+       imethod > 2.5)
+        stop("argument 'imethod' must be 1 or 2")
+
     if (mode(lscale) != "character" && mode(lscale) != "name")
         lscale = as.character(substitute(lscale))
     if (mode(lshape) != "character" && mode(lshape) != "name")
         lshape = as.character(substitute(lshape))
+
     if (length(percentiles) && 
-      (!is.Numeric(percentiles, posit = TRUE) || max(percentiles) >= 100))
+      (!is.Numeric(percentiles, posit = TRUE) ||
+       max(percentiles) >= 100))
         stop("bad input for argument 'percentiles'")
     if (!is.Numeric(tolshape0, allow = 1, posit = TRUE) || tolshape0 > 0.1)
         stop("bad input for argument 'tolshape0'")
     if (length(zero) && !is.Numeric(zero, integer = TRUE, posit = TRUE))
         stop("bad input for argument 'zero'")
+
     if (!is.list(escale)) escale = list()
     if (!is.list(eshape)) eshape = list()
 
     new("vglmff",
-    blurb = c("Generalized Pareto Distribution\n",
+    blurb = c("Generalized Pareto distribution\n",
             "Links:    ",
             namesof("scale", link = lscale, earg = escale ), ", ",
             namesof("shape", link = lshape, earg = eshape)),
@@ -1112,11 +1146,11 @@ qgpd <- function(p, location = 0, scale = 1, shape = 0) {
             meany = mean(ystar)
             vary = var(ystar)
             init.xi = if (length( .ishape)) .ishape else {
-                if ( .method.init == 1) -0.5*(meany^2/vary - 1) else
+                if ( .imethod == 1) -0.5*(meany^2/vary - 1) else
                     0.5 * (1 - median(ystar)^2 / vary)
             }
             init.sig = if (length( .iscale)) .iscale else {
-                if (.method.init == 1) 0.5*meany*(meany^2/vary + 1) else
+                if (.imethod == 1) 0.5*meany*(meany^2/vary + 1) else
                     abs(1-init.xi) * median(ystar)
             }
             init.sig[init.sig <= 0] = 0.01    # sigma > 0
@@ -1132,27 +1166,28 @@ qgpd <- function(p, location = 0, scale = 1, shape = 0) {
     }), list( .lscale = lscale, .lshape = lshape, .threshold=threshold,
               .iscale = iscale, .ishape = ishape,
               .escale = escale, .eshape = eshape,
-              .method.init = method.init ))),
+              .imethod = imethod ))),
     inverse = eval(substitute(function(eta, extra = NULL) {
-        sigma = eta2theta(eta[,1], .lscale, earg = .escale )
-        xi = eta2theta(eta[,2], .lshape, earg = .eshape )
+        sigma = eta2theta(eta[, 1], .lscale, earg = .escale )
+        Shape = eta2theta(eta[, 2], .lshape, earg = .eshape )
         cent = .percentiles
-        lp = length(cent)  # NULL means lp==0 and the mean is returned
+        LP = length(cent)  # NULL means LP == 0 and the mean is returned
         Threshold = if (is.Numeric( .threshold)) .threshold else 0
-        if (lp) {
-            fv = matrix(as.numeric(NA), nrow(eta), lp)
-            is.zero = (abs(xi) < .tolshape0)
-            for(ii in 1:lp) {
+        if (LP) {
+            fv = matrix(as.numeric(NA), nrow(eta), LP)
+            is.zero = (abs(Shape) < .tolshape0)
+            for(ii in 1:LP) {
                 temp = 1-cent[ii]/100
-                fv[!is.zero,ii] = Threshold + (temp^(-xi[!is.zero]) -1) *
-                                 sigma[!is.zero] / xi[!is.zero]
+                fv[!is.zero,ii] = Threshold + (temp^(-Shape[!is.zero])-1) *
+                                    sigma[!is.zero] / Shape[!is.zero]
                 fv[ is.zero,ii] = Threshold - sigma[is.zero] * log(temp)
             }
             dimnames(fv) = list(dimnames(eta)[[1]],
-                                paste(as.character(.percentiles), "%", sep = ""))
+                                paste(as.character(.percentiles), "%",
+                                      sep = ""))
         } else {
-            fv = Threshold + sigma / (1 - xi)   # This is the mean, E(Y)
-            fv[xi >= 1] = NA  # Mean exists only if xi < 1.
+            fv = Threshold + sigma / (1 - Shape) # This is the mean, E(Y)
+            fv[Shape >= 1] = NA  # Mean exists only if Shape < 1.
         }
         fv
     }, list( .lscale = lscale, .lshape = lshape, .threshold=threshold,
@@ -1166,20 +1201,21 @@ qgpd <- function(p, location = 0, scale = 1, shape = 0) {
         misc$threshold = if (is.Numeric( .threshold)) .threshold else 0
         misc$expected = TRUE
         misc$tolshape0 = .tolshape0
-        if (any(xi < -0.5))
+        if (any(Shape < -0.5))
             warning("some values of the shape parameter are less than -0.5")
     }), list( .lscale = lscale, .lshape = lshape, .threshold=threshold,
               .escale = escale, .eshape = eshape,
               .tolshape0 = tolshape0, .percentiles = percentiles ))),
     loglikelihood = eval(substitute(
         function(mu, y, w, residuals = FALSE, eta, extra = NULL) {
-        sigma = eta2theta(eta[,1], .lscale, earg = .escale )
-        xi    = eta2theta(eta[,2], .lshape, earg = .eshape )
+        sigma = eta2theta(eta[, 1], .lscale, earg = .escale )
+        Shape = eta2theta(eta[, 2], .lshape, earg = .eshape )
         Threshold = extra$threshold
         if (residuals) stop("loglikelihood residuals not ",
                             "implemented yet") else {
-            sum(w * dgpd(x=y, location=Threshold, scale=sigma, shape=xi,
-                         tolshape0 = .tolshape0, giveWarning= .giveWarning,
+            sum(w * dgpd(x = y, location = Threshold, scale = sigma,
+                         shape = Shape, tolshape0 = .tolshape0,
+                         giveWarning = .giveWarning,
                          log = TRUE, oobounds.log = -1.0e04))
         }
     }, list( .tolshape0 = tolshape0, .giveWarning= giveWarning,
@@ -1187,11 +1223,11 @@ qgpd <- function(p, location = 0, scale = 1, shape = 0) {
              .lscale = lscale, .lshape = lshape ))),
     vfamily = c("gpd", "vextremes"),
     deriv = eval(substitute(expression({
-        sigma = eta2theta(eta[,1], .lscale, earg = .escale )
-        xi = eta2theta(eta[,2], .lshape, earg = .eshape )
+        sigma = eta2theta(eta[, 1], .lscale, earg = .escale )
+        Shape = eta2theta(eta[, 2], .lshape, earg = .eshape )
         Threshold = extra$threshold
         ystar = y - Threshold  # Operate on ystar
-        A = 1 + xi*ystar/sigma
+        A = 1 + Shape*ystar/sigma
         mytolerance = .Machine$double.eps
         bad <- (A <= mytolerance)
         if (any(bad) && any(w[bad] != 0)) {
@@ -1199,33 +1235,34 @@ qgpd <- function(p, location = 0, scale = 1, shape = 0) {
                 "observations violating boundary constraints\n")
             flush.console()
         }
-        if (any(is.zero <- (abs(xi) < .tolshape0))) {
+        if (any(is.zero <- (abs(Shape) < .tolshape0))) {
         }
         igpd = !is.zero &  !bad
         iexp =  is.zero &  !bad
-        dl.dxi = dl.dsigma = rep(0, len = length(y))
-        dl.dsigma[igpd] = ((1 + xi[igpd]) * ystar[igpd] / (sigma[igpd] + 
-                          xi[igpd]*ystar[igpd]) - 1) / sigma[igpd]
-        dl.dxi[igpd] = log(A[igpd])/xi[igpd]^2 - (1 + 1/xi[igpd]) *
-                       ystar[igpd] / (A[igpd] * sigma[igpd])
-        dl.dxi[iexp] = ystar[iexp] *
+        dl.dShape = dl.dsigma = rep(0, len = length(y))
+        dl.dsigma[igpd] = ((1 + Shape[igpd]) * ystar[igpd] / (sigma[igpd] +
+                          Shape[igpd]*ystar[igpd]) - 1) / sigma[igpd]
+        dl.dShape[igpd] = log(A[igpd])/Shape[igpd]^2 - (1 + 1/Shape[igpd]) *
+                          ystar[igpd] / (A[igpd] * sigma[igpd])
+        dl.dShape[iexp] = ystar[iexp] *
                        (0.5*ystar[iexp]/sigma[iexp] - 1) / sigma[iexp]
         dsigma.deta = dtheta.deta(sigma, .lscale, earg = .escale )
-        dxi.deta = dtheta.deta(xi, .lshape, earg = .eshape )
-        w * cbind(dl.dsigma * dsigma.deta, dl.dxi * dxi.deta)
-    }), list( .tolshape0 = tolshape0, .lscale = lscale,
-              .escale = escale, .eshape = eshape,
-              .lshape = lshape ))),
+        dShape.deta = dtheta.deta(Shape, .lshape, earg = .eshape )
+        c(w) * cbind(dl.dsigma * dsigma.deta,
+                     dl.dShape * dShape.deta)
+    }), list( .tolshape0 = tolshape0,
+              .lscale = lscale, .escale = escale,
+              .lshape = lshape, .eshape = eshape ))),
     weight = eval(substitute(expression({
         n <- length(w) # needed! 
         wz = matrix(as.numeric(NA), n, 3)
-        wz[,iam(1,1,M)] = 1 / ((1+2*xi) * sigma^2)
-        wz[,iam(2,2,M)] = 2 / ((1+2*xi) * (1+xi))
-        wz[,iam(1,2,M)] = 1 / ((1+2*xi) * (1+xi) * sigma)  # Positive!!!
-        wz[,iam(1,1,M)] = w * wz[,iam(1,1,M)] * dsigma.deta^2
-        wz[,iam(2,2,M)] = w * wz[,iam(2,2,M)] * dxi.deta^2
-        wz[,iam(1,2,M)] = w * wz[,iam(1,2,M)] * dsigma.deta * dxi.deta
-        wz
+        wz[, iam(1, 1, M)] = 1 / ((1+2*Shape) * sigma^2)
+        wz[, iam(2, 2, M)] = 2 / ((1+2*Shape) * (1+Shape))
+        wz[, iam(1, 2, M)] = 1 / ((1+2*Shape) * (1+Shape) * sigma) # > 0 !
+        wz[, iam(1, 1, M)] = wz[, iam(1, 1, M)] * dsigma.deta^2
+        wz[, iam(2, 2, M)] = wz[, iam(2, 2, M)] * dShape.deta^2
+        wz[, iam(1, 2, M)] = wz[, iam(1, 2, M)] * dsigma.deta * dShape.deta
+        c(w) * wz
     }), list( .lscale = lscale ))))
 }
 
@@ -1233,37 +1270,60 @@ qgpd <- function(p, location = 0, scale = 1, shape = 0) {
 
 
 
+
+
+
+
 meplot.default <- function(y, main = "Mean Excess Plot",
-    xlab="Threshold", ylab="Mean Excess", lty=c(2,1:2), 
-    conf=0.95, col=c("blue","black","blue"), type = "l", ...) {
-    if (!is.Numeric(y)) stop("bad input for argument 'y'")
+    xlab = "Threshold", ylab = "Mean Excess", lty = c(2, 1:2), 
+    conf = 0.95, col = c("blue", "black", "blue"), type = "l", ...) {
+
+
+    if (!is.Numeric(y))
+      stop("bad input for argument 'y'")
+
     n = length(y)
     sy = sort(y)
     dsy = rev(sy)  # decreasing sequence
-    me = rev(cumsum(dsy))/(n:1) - sy
+    me = rev(cumsum(dsy)) / (n:1) - sy
     me2 = rev(cumsum(dsy^2))
-    var = (me2 - (n:1)*(me+sy)^2) / (n:1)
+    var = (me2 - (n:1) * (me+sy)^2) / (n:1)
     ci = qnorm((1+conf)/2) * sqrt(abs(var)) / sqrt(n:1)
-    mymat = cbind(me-ci, me, me+ci)
-    sy = sy - sqrt(.Machine$double.eps)
-    matplot(sy, mymat, main=main, xlab=xlab, ylab=ylab, 
-            lty=lty, col=col, type=type, ...)
-    invisible(list(threshold=sy, meanExcess=me))
+
+    ci[length(ci)] = NA
+
+    mymat = cbind(me - ci, me, me + ci)
+    sy = sy - sqrt( .Machine$double.eps )
+
+    matplot(sy, mymat, main = main,
+            xlab = xlab, ylab = ylab, 
+            lty = lty, col = col, type = type, ...)
+    invisible(list(threshold = sy, meanExcess = me,
+                   plusminus = ci))
 }
 
+
+
 meplot.vlm <- function(object, ...) {
-    if (!length(y <- object at y)) stop("y slot is empty")
+    if (!length(y <- object at y))
+      stop("y slot is empty")
     ans = meplot(as.numeric(y), ...) 
     invisible(ans)
 }
 
+
+
 if (!isGeneric("meplot"))
-    setGeneric("meplot", function(object, ...) standardGeneric("meplot"))
+    setGeneric("meplot",
+         function(object, ...)
+         standardGeneric("meplot"))
+
 
 setMethod("meplot", "numeric",
          function(object, ...)
          meplot.default(y=object, ...))
 
+
 setMethod("meplot", "vlm",
          function(object, ...)
          meplot.vlm(object, ...))
@@ -1271,28 +1331,40 @@ setMethod("meplot", "vlm",
 
 
 guplot.default <- function(y, main = "Gumbel Plot",
-    xlab="Reduced data", ylab="Observed data", type = "p", ...) {
-    if (!is.Numeric(y)) stop("bad input for argument 'y'")
+    xlab = "Reduced data", ylab = "Observed data", type = "p", ...) {
+
+    if (!is.Numeric(y))
+      stop("bad input for argument 'y'")
+
     n = length(y)
     sy = sort(y)
     x = -log(-log(((1:n) - 0.5) / n))
-    plot(x, sy, main=main, xlab=xlab, ylab=ylab, type=type, ...)
-    invisible(list(x=x, y=sy))
+    plot(x, sy, main = main, xlab = xlab, ylab = ylab,
+         type = type, ...)
+    invisible(list(x = x, y = sy))
 }
 
+
+
 guplot.vlm <- function(object, ...) {
-    if (!length(y <- object at y)) stop("y slot is empty")
+    if (!length(y <- object at y))
+      stop("y slot is empty")
     ans = guplot(as.numeric(y), ...) 
     invisible(ans)
 }
 
+
+
 if (!isGeneric("guplot"))
-    setGeneric("guplot", function(object, ...) standardGeneric("guplot"))
+    setGeneric("guplot", function(object, ...)
+    standardGeneric("guplot"))
+
 
 setMethod("guplot", "numeric",
          function(object, ...)
          guplot.default(y=object, ...))
 
+
 setMethod("guplot", "vlm",
          function(object, ...)
          guplot.vlm(object, ...))
@@ -1302,12 +1374,13 @@ setMethod("guplot", "vlm",
 
 
 
+
  egumbel <- function(llocation = "identity",
                     lscale = "loge",
                     elocation = list(),
                     escale = list(),
                     iscale = NULL,
-                    R=NA, percentiles=c(95,99),
+                    R=NA, percentiles = c(95,99),
                     mpv = FALSE, zero = NULL)
 {
     if (mode(llocation) != "character" && mode(llocation) != "name")
@@ -1363,24 +1436,25 @@ setMethod("guplot", "vlm",
               .elocation=elocation, .escale = escale,
               .R=R, .mpv=mpv, .percentiles = percentiles ))),
     inverse = eval(substitute( function(eta, extra = NULL) {
-        loc = eta2theta(eta[,1], .llocation, earg = .elocation)
-        sigma = eta2theta(eta[,2], .lscale, earg = .escale )
+        loc = eta2theta(eta[, 1], .llocation, earg = .elocation)
+        sigma = eta2theta(eta[, 2], .lscale, earg = .escale )
         EulerM = -digamma(1)
         Percentiles = extra$percentiles
         mpv = extra$mpv
-        lp = length(Percentiles)  # may be 0
-        if (!lp) return(loc + sigma * EulerM)
-        mu = matrix(as.numeric(NA), nrow(eta), lp + mpv)
+        LP = length(Percentiles)  # may be 0
+        if (!LP) return(loc + sigma * EulerM)
+        mu = matrix(as.numeric(NA), nrow(eta), LP + mpv)
         Rvec = extra$R
-        if (1 <= lp)
-        for(ii in 1:lp) {
+        if (1 <= LP)
+        for(ii in 1:LP) {
             ci = if (is.Numeric(Rvec)) Rvec * (1 - Percentiles[ii] / 100) else
                 -log( Percentiles[ii] / 100)
             mu[,ii] = loc - sigma * log(ci)
         }
         if (mpv)
             mu[,ncol(mu)] = loc - sigma * log(log(2))
-        dmn2 = if (lp>=1) paste(as.character(Percentiles), "%", sep = "") else NULL
+        dmn2 = if (LP >= 1) paste(as.character(Percentiles), "%",
+                                  sep = "") else NULL
         if (mpv)
             dmn2 = c(dmn2, "MPV")
         dimnames(mu) = list(dimnames(eta)[[1]], dmn2)
@@ -1399,8 +1473,8 @@ setMethod("guplot", "vlm",
               .R=R, .percentiles = percentiles ))),
     loglikelihood = eval(substitute(
             function(mu,y,w,residuals= FALSE,eta,extra = NULL) {
-        loc = eta2theta(eta[,1], .llocation, earg = .elocation)
-        sc  = eta2theta(eta[,2], .lscale, earg = .escale )
+        loc = eta2theta(eta[, 1], .llocation, earg = .elocation)
+        sc  = eta2theta(eta[, 2], .lscale, earg = .escale )
         if (residuals) stop("loglikelihood residuals not ",
                             "implemented yet") else {
              sum(w * dgumbel(x=y, location = loc, scale=sc, log = TRUE))
@@ -1409,15 +1483,16 @@ setMethod("guplot", "vlm",
              .elocation=elocation, .escale = escale ))),
     vfamily = "egumbel",
     deriv = eval(substitute(expression({
-        loc = eta2theta(eta[,1], .llocation, earg = .elocation)
-        sc = eta2theta(eta[,2], .lscale, earg = .escale )
+        loc = eta2theta(eta[, 1], .llocation, earg = .elocation)
+        sc = eta2theta(eta[, 2], .lscale, earg = .escale )
         zedd = (y-loc) / sc
         temp2 = -expm1(-zedd)
         dl.dloc = temp2 / sc
         dl.dsc = -1/sc + temp2 * zedd / sc
         dloc.deta = dtheta.deta(loc, .llocation, earg = .elocation)
         dsc.deta = dtheta.deta(sc, .lscale, earg = .escale )
-        w * cbind(dl.dloc * dloc.deta, dl.dsc * dsc.deta)
+        c(w) * cbind(dl.dloc * dloc.deta,
+                     dl.dsc * dsc.deta)
     }), list( .llocation = llocation, .lscale = lscale,
               .elocation=elocation, .escale = escale ))),
     weight=expression({
@@ -1426,10 +1501,10 @@ setMethod("guplot", "vlm",
         ed2l.dloc2 = 1 / sc^2
         ed2l.dscloc = -(1 + digamma1) / sc^2 
         wz = matrix(as.numeric(NA), n, dimm(M = 2))
-        wz[,iam(1,1,M)] = ed2l.dloc2 * dloc.deta^2
-        wz[,iam(2,2,M)] = ed2l.dsc2 * dsc.deta^2
-        wz[,iam(1,2,M)] = ed2l.dscloc * dloc.deta * dsc.deta
-        w * wz
+        wz[, iam(1, 1, M)] = ed2l.dloc2 * dloc.deta^2
+        wz[, iam(2, 2, M)] = ed2l.dsc2 * dsc.deta^2
+        wz[, iam(1, 2, M)] = ed2l.dscloc * dloc.deta * dsc.deta
+        c(w) * wz
     }))
 }
 
@@ -1440,7 +1515,7 @@ setMethod("guplot", "vlm",
                     lscale = "loge",
                     elocation = list(),
                     escale = list(), iscale = NULL,
-                    mean = TRUE, percentiles = NULL, zero=2)
+                    mean = TRUE, percentiles = NULL, zero = 2)
 {
     if (mode(llocation) != "character" && mode(llocation) != "name")
         llocation = as.character(substitute(llocation))
@@ -1496,15 +1571,15 @@ setMethod("guplot", "vlm",
               .llocation = llocation,
               .elocation = elocation, .escale = escale ))), 
     inverse = eval(substitute( function(eta, extra = NULL) {
-        loc  = eta2theta(eta[,1], .llocation)
-        sc   = eta2theta(eta[,2], .lscale)
+        loc  = eta2theta(eta[, 1], .llocation)
+        sc   = eta2theta(eta[, 2], .lscale)
         EulerM = -digamma(1)
         if (.mean) loc + sc * EulerM else {
-            lp = length(.percentiles)  # 0 if NULL
-            mu = matrix(as.numeric(NA), nrow(eta), lp)
-            for(ii in 1:lp) {
+            LP = length(.percentiles)  # 0 if NULL
+            mu = matrix(as.numeric(NA), nrow(eta), LP)
+            for(ii in 1:LP) {
                 ci = -log( .percentiles[ii] / 100)
-                mu[,ii] = loc - sc * log(ci)
+                mu[, ii] = loc - sc * log(ci)
             }
             dmn2 = paste(as.character(.percentiles), "%", sep = "")
             dimnames(mu) <- list(dimnames(eta)[[1]], dmn2)
@@ -1525,8 +1600,8 @@ setMethod("guplot", "vlm",
               .percentiles = percentiles ))),
     loglikelihood = eval(substitute(
             function(mu,y,w,residuals= FALSE,eta,extra = NULL) {
-        loc = eta2theta(eta[,1], .llocation, earg = .elocation )
-        sc  = eta2theta(eta[,2], .lscale, earg = .escale )
+        loc = eta2theta(eta[, 1], .llocation, earg = .elocation )
+        sc  = eta2theta(eta[, 2], .lscale, earg = .escale )
         zedd = (y-loc) / sc
 
         cenL = extra$leftcensored
@@ -1548,8 +1623,8 @@ setMethod("guplot", "vlm",
         cenU = extra$rightcensored
         cen0 = !cenL & !cenU   # uncensored obsns
 
-        loc = eta2theta(eta[,1], .llocation, earg = .elocation )
-        sc  = eta2theta(eta[,2], .lscale, earg = .escale )
+        loc = eta2theta(eta[, 1], .llocation, earg = .elocation )
+        sc  = eta2theta(eta[, 2], .lscale, earg = .escale )
         zedd = (y-loc) / sc
         temp2 = -expm1(-zedd)
         dl.dloc = temp2 / sc
@@ -1569,7 +1644,8 @@ setMethod("guplot", "vlm",
             dl.dloc[cenU] = -dFy.dloc[cenU] / (1-Fy[cenU])
             dl.dsc[cenU] = -dFy.dsc[cenU] / (1-Fy[cenU])
         }
-        w * cbind(dl.dloc * dloc.deta, dl.dsc * dsc.deta)
+        c(w) * cbind(dl.dloc * dloc.deta,
+                     dl.dsc * dsc.deta)
     }), list( .lscale = lscale,
               .llocation = llocation,
               .elocation = elocation, .escale = escale ))),
@@ -1582,326 +1658,533 @@ setMethod("guplot", "vlm",
         ed2l.dloc2 = 1 / sc^2
         ed2l.dlocsc = -(1 + digamma1) / sc^2 
         wz = matrix(as.numeric(NA), n, dimm(M = 2))
-        wz[,iam(1,1,M)] = A2 * ed2l.dloc2 * dloc.deta^2
-        wz[,iam(2,2,M)] = A2 * ed2l.dsc2 * dsc.deta^2
-        wz[,iam(1,2,M)] = A2 * ed2l.dlocsc * dloc.deta * dsc.deta
+        wz[, iam(1, 1, M)] = A2 * ed2l.dloc2 * dloc.deta^2
+        wz[, iam(2, 2, M)] = A2 * ed2l.dsc2 * dsc.deta^2
+        wz[, iam(1, 2, M)] = A2 * ed2l.dlocsc * dloc.deta * dsc.deta
         d2l.dloc2 = -ezedd / sc^2
         d2l.dsc2 = (2 - zedd) * zedd * ezedd / sc^2
         d2l.dlocsc = (1 - zedd) * ezedd / sc^2
-        wz[,iam(1,1,M)]=wz[,iam(1,1,M)]-A1^2 * d2l.dloc2 * dloc.deta^2
-        wz[,iam(2,2,M)]=wz[,iam(2,2,M)]-A1^2 * d2l.dsc2 * dsc.deta^2
-        wz[,iam(1,2,M)]=wz[,iam(1,2,M)]-A1^2 * d2l.dlocsc * dloc.deta * dsc.deta
+        wz[, iam(1, 1, M)] = wz[, iam(1, 1, M)]-A1^2 * d2l.dloc2 * dloc.deta^2
+        wz[, iam(2, 2, M)] = wz[, iam(2, 2, M)]-A1^2 * d2l.dsc2 * dsc.deta^2
+        wz[, iam(1, 2, M)] = wz[, iam(1, 2, M)]-A1^2 * d2l.dlocsc *
+                            dloc.deta * dsc.deta
         d2Fy.dloc2 = dFy.dloc * dl.dloc + Fy * d2l.dloc2
         d2Fy.dsc2 = dFy.dsc * dl.dsc + Fy * d2l.dsc2
         d2Fy.dlocsc = dFy.dsc * dl.dloc + Fy * d2l.dlocsc
         d2l.dloc2 = -((1-Fy) * d2Fy.dloc2 - dFy.dloc^2) / (1-Fy)^2
         d2l.dsc2 = -((1-Fy) * d2Fy.dsc2 - dFy.dsc^2) / (1-Fy)^2
-        d2l.dlocsc =-((1-Fy) * d2Fy.dlocsc - dFy.dloc * dFy.dsc) / (1-Fy)^2
-        wz[,iam(1,1,M)]=wz[,iam(1,1,M)]-A3^2 * d2l.dloc2 * dloc.deta^2
-        wz[,iam(2,2,M)]=wz[,iam(2,2,M)]-A3^2 * d2l.dsc2 * dsc.deta^2
-        wz[,iam(1,2,M)]=wz[,iam(1,2,M)]-A3^2 * d2l.dlocsc * dloc.deta * dsc.deta
-        w * wz
+        d2l.dlocsc  = -((1-Fy) * d2Fy.dlocsc - dFy.dloc * dFy.dsc) / (1-Fy)^2
+        wz[, iam(1, 1, M)] = wz[, iam(1, 1, M)]-A3^2 * d2l.dloc2 * dloc.deta^2
+        wz[, iam(2, 2, M)] = wz[, iam(2, 2, M)]-A3^2 * d2l.dsc2 * dsc.deta^2
+        wz[, iam(1, 2, M)] = wz[, iam(1, 2, M)]-A3^2 * d2l.dlocsc *
+                            dloc.deta * dsc.deta
+        c(w) * wz
     }))
 }
 
 
 
 dfrechet <- function(x, location = 0, scale = 1, shape, log = FALSE) {
-    if (!is.logical(log.arg <- log))
-        stop("bad input for argument 'log'")
-    rm(log)
-
-    L = max(length(x), length(scale), length(shape))
-    x = rep(x, len = L); scale = rep(scale, len = L); shape = rep(shape, len = L);
-    logdensity = rep(log(0), len = L)
-    xok = (x > location)
-    rzedd = scale / (x - location)
-    logdensity[xok] = log(shape[xok]) - (rzedd[xok]^shape[xok]) +
-                      (shape[xok]+1) * log(rzedd[xok]) - log(scale[xok])
-    logdensity[shape <= 0] = NaN
-    logdensity[scale <= 0] = NaN
-    if (log.arg) logdensity else exp(logdensity)
+  if (!is.logical(log.arg <- log))
+    stop("bad input for argument 'log'")
+  rm(log)
+
+  L = max(length(x), length(scale), length(shape), length(location))
+  x = rep(x, len = L); scale = rep(scale, len = L);
+  shape = rep(shape, len = L); location = rep(location, len = L);
+
+  logdensity = rep(log(0), len = L)
+  xok = (x > location)
+  rzedd = scale / (x - location)
+  logdensity[xok] = log(shape[xok]) - (rzedd[xok]^shape[xok]) +
+                    (shape[xok]+1) * log(rzedd[xok]) - log(scale[xok])
+  logdensity[shape <= 0] = NaN
+  logdensity[scale <= 0] = NaN
+
+  if (log.arg) logdensity else exp(logdensity)
 }
 
+
 pfrechet <- function(q, location = 0, scale = 1, shape) {
-    if (!is.Numeric(scale, posit = TRUE)) stop("scale must be positive")
-    if (!is.Numeric(shape, posit = TRUE)) stop("shape must be positive")
-    rzedd = scale / (q - location)
-    ans = exp(-(rzedd^shape))
-    ans[q <= location] = 0
-    ans
+  if (!is.Numeric(scale, posit = TRUE))
+    stop("scale must be positive")
+  if (!is.Numeric(shape, posit = TRUE))
+    stop("shape must be positive")
+  rzedd = scale / (q - location)
+  ans = exp(-(rzedd^shape))
+  ans[q <= location] = 0
+  ans
 }
 
+
 qfrechet <- function(p, location = 0, scale = 1, shape) {
-    if (!is.Numeric(p, posit = TRUE) || any(p >= 1)) stop("0 < p < 1 is required")
-    if (!is.Numeric(scale, posit = TRUE)) stop("scale must be positive")
-    if (!is.Numeric(shape, posit = TRUE)) stop("shape must be positive")
-    location + scale * (-log(p))^(-1/shape)
+  if (!is.Numeric(p, posit = TRUE) || any(p >= 1))
+    stop("0 < p < 1 is required")
+  if (!is.Numeric(scale, posit = TRUE))
+    stop("scale must be positive")
+  if (!is.Numeric(shape, posit = TRUE))
+    stop("shape must be positive")
+  location + scale * (-log(p))^(-1/shape)
 }
 
+
 rfrechet <- function(n, location = 0, scale = 1, shape) {
-    if (!is.Numeric(n, posit = TRUE, allow = 1, integ = TRUE)) 
-        stop("bad input for argument 'n'")
-    if (!is.Numeric(scale, posit = TRUE)) stop("scale must be positive")
-    if (!is.Numeric(shape, posit = TRUE)) stop("shape must be positive")
-    location + scale * (-log(runif(n)))^(-1/shape)
+  if (!is.Numeric(scale, posit = TRUE))
+    stop("scale must be positive")
+  if (!is.Numeric(shape, posit = TRUE))
+    stop("shape must be positive")
+
+  location + scale * (-log(runif(n)))^(-1/shape)
 }
 
+
+
+
+
+
+
+
 frechet2.control <- function(save.weight = TRUE, ...)
 {
     list(save.weight = save.weight)
 }
 
+
+
  frechet2 <- function(location = 0,
-                     lscale = "loge",
-                     lshape = "loglog",
-                     escale = list(),
-                     eshape = list(),
-                     iscale = NULL, ishape=3,
-                     zero = NULL)
+                      lscale = "loge",
+                      lshape = "logoff",
+                      escale = list(),
+                      eshape = list(offset = -2),
+                      iscale = NULL, ishape = NULL,
+                      nsimEIM = 250,
+                      zero = NULL)
 {
-    if (!is.Numeric(location))
-        stop("bad input for argument 'location'")
-    if (mode(lscale) != "character" && mode(lscale) != "name")
-        lscale <- as.character(substitute(lscale))
-    if (mode(lshape) != "character" && mode(lshape) != "name")
-        lshape <- as.character(substitute(lshape))
-    if (!is.list(escale)) escale = list()
-    if (!is.list(eshape)) eshape = list()
 
-    new("vglmff",
-    blurb = c("2-parameter Frechet Distribution\n",
+  if (!is.Numeric(location))
+    stop("bad input for argument 'location'")
+
+  if (mode(lscale) != "character" && mode(lscale) != "name")
+    lscale <- as.character(substitute(lscale))
+  if (mode(lshape) != "character" && mode(lshape) != "name")
+    lshape <- as.character(substitute(lshape))
+
+  if (!is.list(escale)) escale = list()
+  if (!is.list(eshape)) eshape = list()
+
+  stopifnot(nsimEIM > 10, length(nsimEIM) == 1, nsimEIM == round(nsimEIM))
+
+
+  new("vglmff",
+  blurb = c("2-parameter Frechet distribution\n",
             "Links:    ",
             namesof("scale", link = lscale, earg = escale ), ", ",
             namesof("shape", link = lshape, earg = eshape )),
-    constraints=eval(substitute(expression({
-        constraints <- cm.zero.vgam(constraints, x, .zero, M)
-    }), list( .zero = zero ))),
-    initialize = eval(substitute(expression({
-        predictors.names =
-        c(namesof("scale", .lscale, earg = .escale, short = TRUE),
-          namesof("shape", .lshape, earg = .eshape, short = TRUE))
-        extra$location = rep( .location, len = n) # stored here
-        if (!length(etastart)) {
-            # Initial values for limiting case as xi --> 0, r_i == 1
-            locinit = extra$location
-            if (any(y <= locinit))
-                stop("initial values for 'location' are out of range")
-            shape.init = if (length( .ishape)) rep( .ishape, len = n) else {
-                rep(3.0, len = n)   # variance exists if shape>2
-            }
-            Scale.init = if (length( .iscale)) rep( .iscale, len = n) else {
-                if (all(shape.init > 1))
-                abs( (y-locinit+0.001) / (gamma(1-1/shape.init)) ) else
-                     rep( 1.0, len = n)
-            }
-            etastart = cbind(theta2eta(Scale.init, .lscale, earg = .escale ), 
-                             theta2eta(shape.init, .lshape, earg = .escale ))
-        }
-    }), list( .lscale = lscale, .lshape = lshape,
-              .escale = escale, .eshape = eshape,
-              .location = location, .iscale = iscale, .ishape = ishape ))),
-    inverse = eval(substitute(function(eta, extra = NULL) {
-        loc = extra$location
-        Scale = eta2theta(eta[,1], .lscale, earg = .escale )
-        shape = eta2theta(eta[,2], .lshape, earg = .eshape )
-        ans = rep(as.numeric(NA), len = length(shape))
-        ok = shape > 1
-        ans[ok] = loc[ok] + Scale[ok] * gamma(1 - 1/shape[ok])
-        ans
-    }, list( .lscale = lscale, .lshape = lshape,
-             .escale = escale, .eshape = eshape ))),
-    last = eval(substitute(expression({
-        misc$links <- c("scale" = .lscale, "shape" = .lshape)
-        misc$expected = FALSE
-        misc$BFGS = TRUE
-    }), list( .lscale = lscale, .lshape = lshape,
-              .escale = escale, .eshape = eshape ))),
-    loglikelihood = eval(substitute(
-        function(mu, y, w, residuals = FALSE, eta, extra = NULL) {
-        loc = extra$location
-        Scale = eta2theta(eta[,1], .lscale, earg = .escale )
-        shape = eta2theta(eta[,2], .lshape, earg = .eshape )
-        rzedd = Scale / (y-loc)
-        if (residuals) stop("loglikelihood residuals not ",
-                            "implemented yet") else
-            sum(w * dfrechet(x=y, location = loc, scale=Scale, shape=shape,
-                             log = TRUE))
-    }, list( .lscale = lscale, .lshape = lshape,
-             .escale = escale, .eshape = eshape ))),
-    vfamily = c("frechet2", "vextremes"),
-    deriv = eval(substitute(expression({
-        loc = extra$location
-        Scale = eta2theta(eta[,1], .lscale, earg = .escale )
-        shape = eta2theta(eta[,2], .lshape, earg = .eshape )
-        rzedd = Scale / (y-loc)   # reciprocial of zedd
-        dl.dloc = (shape+1)/(y-loc) - (shape / (y-loc)) * (rzedd)^shape
-        dl.dScale = shape * (1-rzedd^shape) / Scale
-        dl.dshape = 1/shape + log(rzedd) * (1 -  rzedd^shape)
-        if (iter == 1) {
-            etanew = eta
+  constraints=eval(substitute(expression({
+    constraints <- cm.zero.vgam(constraints, x, .zero, M)
+  }), list( .zero = zero ))),
+  initialize = eval(substitute(expression({
+    if (ncol(cbind(y)) != 1)
+      stop("response must be a vector or a one-column matrix")
+
+    predictors.names =
+      c(namesof("scale", .lscale, earg = .escale, short = TRUE),
+        namesof("shape", .lshape, earg = .eshape, short = TRUE))
+
+    extra$location = rep( .location, len = n) # stored here
+
+    if (!length(etastart)) {
+      locinit = extra$location
+      if (any(y <= locinit))
+        stop("initial values for 'location' are out of range")
+
+
+      frech.aux = function(shapeval, y, x, w, extraargs) {
+        myprobs = c(0.25, 0.5, 0.75)
+        myobsns = quantile(y, probs = myprobs)
+        myquant = (-log(myprobs))^(-1/shapeval)
+        myfit = lsfit(x = myquant, y = myobsns, intercept = TRUE)
+        sum(myfit$resid^2)
+      } 
+
+      shape.grid = c(100, 70, 40, 20, 12, 8, 4, 2, 1.5)
+      shape.grid = c(1 / shape.grid, 1, shape.grid)
+      try.this = getMaxMin(shape.grid, objfun = frech.aux,
+                           y = y,  x = x, w = w, maximize = FALSE,
+                           abs.arg = TRUE)
+
+      shape.init = if (length( .ishape )) rep( .ishape, len = n) else {
+        rep(try.this, len = n)   # variance exists if shape > 2
+      }
+
+
+        myprobs = c(0.25, 0.5, 0.75)
+        myobsns = quantile(y, probs = myprobs)
+        myquant = (-log(myprobs))^(-1/shape.init[1])
+        myfit = lsfit(x = myquant, y = myobsns)
+
+      Scale.init = if (length( .iscale)) rep( .iscale, len = n) else {
+        if (all(shape.init > 1)) {
+          myfit$coef[2]
         } else {
-            derivold = derivnew
-            etaold = etanew
-            etanew = eta
+          rep( 1.0, len = n)
         }
-        derivnew = w *
-        cbind(dl.dScale * dtheta.deta(Scale, .lscale, earg = .escale ),
-              dl.dshape * dtheta.deta(shape, .lshape, earg = .eshape ))
-        derivnew
-    }), list( .lscale = lscale, .lshape = lshape,
-              .escale = escale, .eshape = eshape ))),
-    weight = eval(substitute(expression({
-        if (iter == 1) {
-            wznew = cbind(matrix(w, n, M), matrix(0, n, dimm(M)-M))
-        } else {
-            wzold = wznew
-            wznew = qnupdate(w=w, wzold=wzold, dderiv=(derivold - derivnew),
-                             deta=etanew-etaold, M = M,
-                             trace=trace)  # weights incorporated in args
-        }
-        wznew
-    }), list( .lscale = lscale, .lshape = lshape ))))
+      }
+
+      etastart = cbind(theta2eta(Scale.init, .lscale, earg = .escale ), 
+                       theta2eta(shape.init, .lshape, earg = .escale ))
+      }
+  }), list( .lscale = lscale, .lshape = lshape,
+            .escale = escale, .eshape = eshape,
+            .iscale = iscale, .ishape = ishape,
+            .location = location ))),
+  inverse = eval(substitute(function(eta, extra = NULL) {
+    loc = extra$location
+    Scale = eta2theta(eta[, 1], .lscale, earg = .escale )
+    shape = eta2theta(eta[, 2], .lshape, earg = .eshape )
+
+    ans = rep(as.numeric(NA), len = length(shape))
+    ok = shape > 1
+    ans[ok] = loc[ok] + Scale[ok] * gamma(1 - 1/shape[ok])
+    ans
+  }, list( .lscale = lscale, .lshape = lshape,
+           .escale = escale, .eshape = eshape ))),
+  last = eval(substitute(expression({
+    misc$links <-   c("scale" = .lscale, "shape" = .lshape)
+
+    misc$earg <- list("scale" = .escale, "shape" = .eshape)
+
+    misc$nsimEIM = .nsimEIM
+  }), list( .lscale = lscale, .lshape = lshape,
+            .escale = escale, .eshape = eshape,
+            .nsimEIM = nsimEIM ))),
+  loglikelihood = eval(substitute(
+    function(mu, y, w, residuals = FALSE, eta, extra = NULL) {
+    loctn = extra$location
+    Scale = eta2theta(eta[, 1], .lscale, earg = .escale )
+    shape = eta2theta(eta[, 2], .lshape, earg = .eshape )
+    if (residuals) stop("loglikelihood residuals not ",
+                        "implemented yet") else
+        sum(w * dfrechet(x = y, location = loctn, scale = Scale,
+                         shape = shape, log = TRUE))
+  }, list( .lscale = lscale, .lshape = lshape,
+           .escale = escale, .eshape = eshape ))),
+  vfamily = c("frechet2", "vextremes"),
+  deriv = eval(substitute(expression({
+    loctn = extra$location
+    Scale = eta2theta(eta[, 1], .lscale, earg = .escale )
+    shape = eta2theta(eta[, 2], .lshape, earg = .eshape )
+
+    rzedd = Scale / (y - loctn)   # reciprocial of zedd
+    dl.dloctn = (shape + 1) / (y - loctn) -
+                (shape / (y - loctn)) * (rzedd)^shape
+    dl.dScale = shape * (1 - rzedd^shape) / Scale
+    dl.dshape = 1 / shape + log(rzedd) * (1 -  rzedd^shape)
+
+    dthetas.detas <- cbind(
+      dScale.deta <- dtheta.deta(Scale, .lscale, earg = .escale ),
+      dShape.deta <- dtheta.deta(shape, .lshape, earg = .eshape ))
+
+    c(w) * cbind(dl.dScale,
+                 dl.dshape) * dthetas.detas
+  }), list( .lscale = lscale, .lshape = lshape,
+            .escale = escale, .eshape = eshape ))),
+  weight = eval(substitute(expression({
+
+    run.varcov = 0
+    ind1 = iam(NA, NA, M = M, both = TRUE, diag = TRUE)
+
+    if (length( .nsimEIM )) {
+      for(ii in 1:( .nsimEIM )) {
+          ysim = rfrechet(n, loc = loctn, scale = Scale, shape = shape)
+
+          rzedd = Scale / (ysim - loctn)   # reciprocial of zedd
+          dl.dloctn = (shape + 1) / (ysim - loctn) -
+                      (shape / (ysim - loctn)) * (rzedd)^shape
+          dl.dScale = shape * (1 - rzedd^shape) / Scale
+          dl.dshape = 1 / shape + log(rzedd) * (1 -  rzedd^shape)
+
+          rm(ysim)
+          temp3 = cbind(dl.dScale, dl.dshape)
+          run.varcov = run.varcov +
+                       temp3[, ind1$row.index] *
+                       temp3[, ind1$col.index]
+      }
+      run.varcov = run.varcov / .nsimEIM
+
+      wz = if (intercept.only)
+          matrix(colMeans(run.varcov),
+                 n, ncol(run.varcov), byrow = TRUE) else run.varcov
+
+      wz = c(w) * wz * dthetas.detas[, ind1$row] *
+                       dthetas.detas[, ind1$col]
+    } else {
+      stop("argument 'nsimEIM' must be numeric")
+    }
+
+    wz
+  }), list( .nsimEIM = nsimEIM ))))
 }
 
 
 
+
+
 frechet3.control <- function(save.weight = TRUE, ...)
 {
     list(save.weight = save.weight)
 }
 
 
+
+
+if (FALSE)
  frechet3 <- function(anchor = NULL,
                      ldifference = "loge",
                      lscale = "loge",
-                     lshape = "loglog",
+                     lshape = "logoff",
                      edifference = list(),
                      escale = list(),
-                     eshape = list(),
-                     ilocation = NULL, iscale = NULL, ishape=3, zero = NULL,
-                     effpos = .Machine$double.eps^0.75)
+                     eshape = list(offset = -2),
+                     ilocation = NULL, iscale = NULL, ishape = NULL,
+                     nsimEIM = 250,
+                     zero = 1)
 {
-    if (mode(ldifference) != "character" && mode(ldifference) != "name")
-        ldifference <- as.character(substitute(ldifference))
-    if (mode(lscale) != "character" && mode(lscale) != "name")
-        lscale <- as.character(substitute(lscale))
-    if (mode(lshape) != "character" && mode(lshape) != "name")
-        lshape <- as.character(substitute(lshape))
-    if (!is.Numeric(ishape, allo=1, posi = TRUE)) stop("bad input for argument 'ishape'")
-    if (!is.Numeric(effpos, allo=1)|| effpos<0) stop("bad input for argument 'effpos'")
-    if (!is.list(edifference)) edifference = list()
-    if (!is.list(escale)) escale = list()
-    if (!is.list(eshape)) eshape = list()
+  ediffr = edifference
+  ldiffr = ldifference
 
-    new("vglmff",
-    blurb = c("3-parameter Frechet Distribution\n",
+  if (mode(ldiffr) != "character" && mode(ldiffr) != "name")
+    ldiffr <- as.character(substitute(ldiffr))
+  if (mode(lscale) != "character" && mode(lscale) != "name")
+    lscale <- as.character(substitute(lscale))
+  if (mode(lshape) != "character" && mode(lshape) != "name")
+    lshape <- as.character(substitute(lshape))
+
+
+  if (!is.list(ediffr)) ediffr = list()
+  if (!is.list(escale)) escale = list()
+  if (!is.list(eshape)) eshape = list()
+
+  stopifnot(nsimEIM > 10, length(nsimEIM) == 1, nsimEIM == round(nsimEIM))
+
+
+  new("vglmff",
+  blurb = c("3-parameter Frechet distribution\n",
             "Links:    ",
-            namesof("difference", link = ldifference, earg = edifference), ", ", 
-            namesof("scale", link = lscale, earg = escale), ", ",
-            namesof("shape", link = lshape, earg = eshape)),
-    constraints=eval(substitute(expression({
-        constraints <- cm.zero.vgam(constraints, x, .zero, M)
-    }), list( .zero = zero ))),
-    initialize = eval(substitute(expression({
-        predictors.names =
-        c(namesof("difference", .ldifference, earg = .edifference, short = TRUE),
-          namesof("scale",  .lscale, earg = .escale,  short = TRUE),
-          namesof("shape",  .lshape, earg = .eshape,  short = TRUE))
-        anchorpt = if (is.Numeric( .anchor, allow = 1)) .anchor else min(y)
-        if (min(y) < anchorpt) stop("anchor point is too large")
-        extra$LHSanchor = anchorpt
-        if (!length(etastart)) {
-            locinit = if (length( .ilocation)) rep( .ilocation, len = n) else
-                      rep(anchorpt - 0.01*diff(range(y)), len = n)
-            if (any(y <= locinit))
-                stop("initial values for 'location' are out of range")
-            if (any(anchorpt <= locinit))
-                stop("require anchor point > initial location parameter value")
-            shape.init = if (length( .ishape)) rep( .ishape, len = n) else {
-                rep(3.0, len = n)   # variance exists if shape>2
-            }
-            Scale.init = if (length( .iscale)) rep( .iscale, len = n) else {
-                if (all(shape.init > 1))
-                abs( (y-locinit+0.001) / (gamma(1-1/shape.init)) ) else
-                     rep( 1.0, len = n)
-            }
-            etastart = cbind(theta2eta(anchorpt - locinit, .ldifference),
-                             theta2eta(Scale.init, .lscale), 
-                             theta2eta(shape.init, .lshape))
-        }
-    }), list( .ldifference = ldifference, .lscale = lscale, .lshape = lshape, 
-              .edifference = edifference, .escale = escale, .eshape = eshape, 
-              .anchor=anchor,
-              .ilocation = ilocation, .iscale = iscale, .ishape = ishape ))),
-    inverse = eval(substitute(function(eta, extra = NULL) {
-        loc = extra$LHSanchor - eta2theta(eta[,1], .ldifference, earg = .edifference)
-        Scale = eta2theta(eta[,2], .lscale, earg = .escale )
-        shape = eta2theta(eta[,3], .lshape, earg = .eshape )
-        ans = rep(as.numeric(NA), len = length(shape))
-        ok = shape > 1
-        ans[ok] = loc[ok] + Scale[ok] * gamma(1 - 1/shape[ok])
-        ans
-    }, list( .ldifference = ldifference, .lscale = lscale, .lshape = lshape,
-             .edifference = edifference, .escale = escale, .eshape = eshape ))), 
-    last = eval(substitute(expression({
-        misc$links <- c("difference" = .ldifference, "scale" = .lscale,
-                        "shape" = .lshape)
-        misc$expected = FALSE
-        misc$BFGS = TRUE
-    }), list( .ldifference = ldifference, .lscale = lscale, .lshape = lshape,
-              .edifference = edifference, .escale = escale, .eshape = eshape ))),  
-    loglikelihood = eval(substitute(
-        function(mu, y, w, residuals = FALSE, eta, extra = NULL) {
-        loc = extra$LHSanchor -
-              eta2theta(eta[,1], .ldifference, earg = .edifference)
-        Scale = eta2theta(eta[,2], .lscale, earg = .escale )
-        shape = eta2theta(eta[,3], .lshape, earg = .eshape )
-        if (residuals) stop("loglikelihood residuals not ",
-                            "implemented yet") else {
-            sum(w * dfrechet(x=y, location = loc, scale=Scale, shape=shape,
-                             log = TRUE))
-        }
-    }, list( .ldifference = ldifference, .lscale = lscale, .lshape = lshape,
-             .edifference = edifference, .escale = escale, .eshape = eshape ))),
-    vfamily = c("frechet3", "vextremes"),
-    deriv = eval(substitute(expression({
-        difference = eta2theta(eta[,1], .ldifference, earg = .edifference )
-        Scale      = eta2theta(eta[,2], .lscale, earg = .escale )
-        shape      = eta2theta(eta[,3], .lshape, earg = .eshape )
-        loc = extra$LHSanchor - difference
-        extra$location = loc   # Store the location parameter estimate here
-        rzedd = Scale / (y-loc)   # reciprocial of zedd
-        dl.dloc = (shape+1)/(y-loc) - (shape / (y-loc)) * (rzedd)^shape
-        dl.ddiff = -dl.dloc
-        dl.dScale = shape * (1-rzedd^shape) / Scale
-        dl.dshape = 1/shape + log(rzedd) * (1 -  rzedd^shape)
-        if (iter == 1) {
-            etanew = eta
+            namesof("difference", link = ldiffr, earg = ediffr), ", ", 
+            namesof("scale",      link = lscale, earg = escale), ", ",
+            namesof("shape",      link = lshape, earg = eshape)),
+  constraints=eval(substitute(expression({
+    constraints <- cm.zero.vgam(constraints, x, .zero, M)
+  }), list( .zero = zero ))),
+  initialize = eval(substitute(expression({
+    if (ncol(cbind(y)) != 1)
+      stop("response must be a vector or a one-column matrix")
+
+    predictors.names =
+    c(namesof("difference", .ldiffr, earg = .ediffr, short = TRUE),
+      namesof("scale",      .lscale, earg = .escale, short = TRUE),
+      namesof("shape",      .lshape, earg = .eshape, short = TRUE))
+
+    anchorpt = if (is.Numeric( .anchor, allow = 1)) .anchor else min(y)
+    if (min(y) < anchorpt)
+      stop("anchor point is too large")
+    extra$LHSanchor = anchorpt
+
+    if (!length(etastart)) {
+
+
+      frech.aux = function(shapeval, y, x, w, extraargs) {
+        myprobs = c(0.25, 0.5, 0.75)
+        myobsns = quantile(y, probs = myprobs)
+        myquant = (-log(myprobs))^(-1/shapeval)
+        myfit = lsfit(x = myquant, y = myobsns, intercept = TRUE)
+        sum(myfit$resid^2)
+      } 
+
+      shape.grid = c(100, 70, 40, 20, 12, 8, 4, 2, 1.5)
+      shape.grid = c(1 / shape.grid, 1, shape.grid)
+      try.this = getMaxMin(shape.grid, objfun = frech.aux,
+                           y = y,  x = x, w = w, maximize = FALSE,
+                           abs.arg = TRUE)
+ print("try.this")
+ print( try.this )
+
+      shape.init = if (length( .ishape )) rep( .ishape, len = n) else {
+        rep(try.this, len = n)   # variance exists if shape > 2
+      }
+
+
+
+
+        myprobs = c(0.25, 0.5, 0.75)
+        myobsns = quantile(y, probs = myprobs)
+        myquant = (-log(myprobs))^(-1/shape.init[1])
+        myfit = lsfit(x = myquant, y = myobsns)
+ print("myfit$coef")
+ print( myfit$coef )
+ plot(myobsns ~ myquant)
+
+
+      Scale.init = if (length( .iscale)) rep( .iscale, len = n) else {
+        if (all(shape.init > 1)) {
+          myfit$coef[2]
         } else {
-            derivold = derivnew
-            etaold = etanew
-            etanew = eta
+          rep( 1.0, len = n)
         }
-        derivnew = w *
-        cbind(dl.ddiff  * dtheta.deta(difference, .ldifference,
-                                      earg = .edifference ),
-              dl.dScale * dtheta.deta(Scale, .lscale, earg = .escale ),
-              dl.dshape * dtheta.deta(shape, .lshape, earg = .eshape ))
-        derivnew
-    }), list( .ldifference = ldifference, .lscale = lscale, .lshape = lshape,
-              .edifference = edifference, .escale = escale, .eshape = eshape ))),
-    weight = eval(substitute(expression({
-        if (iter == 1) {
-            wznew = cbind(matrix(w, n, M), matrix(0, n, dimm(M)-M))
+      }
+
+
+      locinit = if (length( .ilocation)) rep( .ilocation, len = n) else {
+        if (myfit$coef[1] < min(y)) {
+ print("using myfit$coef[1] for initial location")
+ print(       myfit$coef[1] )
+ print(       min(y)  )
+ print(       anchorpt   )
+          rep(myfit$coef[1], len = n)
         } else {
-            wzold = wznew
-            wznew = qnupdate(w=w, wzold=wzold, dderiv=(derivold - derivnew),
-                             deta=etanew-etaold, M = M, effpos = .effpos,
-                             trace=trace)  # weights incorporated in args
+ print("using heuristic initial location")
+          rep(anchorpt - 0.01 * diff(range(y)), len = n)
         }
-        wznew
-    }), list( .effpos = effpos ))))
+      }
+      if (any(y <= locinit))
+        stop("initial values for 'location' are out of range")
+      if (any(anchorpt <= locinit))
+        stop("require anchor point > initial location parameter value")
+
+
+
+
+      etastart = cbind(theta2eta(anchorpt - locinit, .ldiffr),
+                       theta2eta(Scale.init, .lscale), 
+                       theta2eta(shape.init, .lshape))
+ print("head(etastart)")
+ print( head(etastart) )
+ print("summary(etastart)")
+ print( summary(etastart) )
+      }
+  }), list( .ldiffr = ldiffr, .lscale = lscale, .lshape = lshape, 
+            .ediffr = ediffr, .escale = escale, .eshape = eshape, 
+            .iscale = iscale, .ishape = ishape,
+            .ilocation = ilocation, .anchor = anchor ))),
+  inverse = eval(substitute(function(eta, extra = NULL) {
+    loctn = extra$LHSanchor -
+            eta2theta(eta[, 1], .ldiffr, earg = .ediffr)
+    Scale = eta2theta(eta[, 2], .lscale, earg = .escale )
+    shape = eta2theta(eta[, 3], .lshape, earg = .eshape )
+    ans = rep(as.numeric(NA), len = length(shape))
+    okay = shape > 1
+    ans[okay] = loctn[okay] + Scale[okay] * gamma(1 - 1/shape[okay])
+    ans
+  }, list( .ldiffr = ldiffr, .lscale = lscale, .lshape = lshape,
+           .ediffr = ediffr, .escale = escale, .eshape = eshape ))), 
+  last = eval(substitute(expression({
+    misc$links <- c("difference" = .ldiffr,
+                    "scale"      = .lscale,
+                    "shape"      = .lshape)
+
+    misc$earg <- list("difference" = .ediffr,
+                      "scale"      = .escale,
+                      "shape"      = .eshape)
+
+    misc$nsimEIM = .nsimEIM
+
+    extra$location = loctn   # Store the location parameter estimate here
+
+  }), list( .ldiffr = ldiffr, .lscale = lscale, .lshape = lshape,
+            .ediffr = ediffr, .escale = escale, .eshape = eshape,
+            .nsimEIM = nsimEIM ))),  
+  loglikelihood = eval(substitute(
+    function(mu, y, w, residuals = FALSE, eta, extra = NULL) {
+    loctn = extra$LHSanchor -
+            eta2theta(eta[, 1], .ldiffr, earg = .ediffr)
+    Scale = eta2theta(eta[, 2], .lscale, earg = .escale )
+    shape = eta2theta(eta[, 3], .lshape, earg = .eshape )
+    if (residuals) stop("loglikelihood residuals not ",
+                        "implemented yet") else {
+        sum(w * dfrechet(x = y, location = loctn, scale = Scale,
+                         shape = shape, log = TRUE))
+    }
+  }, list( .ldiffr = ldiffr, .lscale = lscale, .lshape = lshape,
+           .ediffr = ediffr, .escale = escale, .eshape = eshape ))),
+  vfamily = c("frechet3", "vextremes"),
+  deriv = eval(substitute(expression({
+ print("summary(eta) in @deriv ,,,,,,,,,,,,,,")
+ print( summary(eta) )
+    Difrc      = eta2theta(eta[, 1], .ldiffr, earg = .ediffr )
+    Scale      = eta2theta(eta[, 2], .lscale, earg = .escale )
+    shape      = eta2theta(eta[, 3], .lshape, earg = .eshape )
+
+    loctn = extra$LHSanchor - Difrc
+    rzedd = Scale / (y - loctn)   # reciprocial of zedd
+
+    dl.dloct = (shape + 1) / (y - loctn) -
+               (shape / (y - loctn)) * (rzedd)^shape
+    dl.ddifff = -dl.dloct
+    dl.dScale = shape * (1 - rzedd^shape) / Scale
+    dl.dshape = 1 / shape + log(rzedd) * (1 -  rzedd^shape)
+
+    dthetas.detas <- cbind(
+      ddifff.deta <- dtheta.deta(Difrc, .ldiffr, earg = .ediffr ),
+      dScale.deta <- dtheta.deta(Scale, .lscale, earg = .escale ),
+      dShape.deta <- dtheta.deta(shape, .lshape, earg = .eshape ))
+
+    ans =
+    c(w) * cbind(dl.ddifff,
+                 dl.dScale,
+                 dl.dshape) * dthetas.detas
+
+ print("head(ans)")
+ print( head(ans) )
+ print("summary(ans)")
+ print( summary(ans) )
+
+    ans
+  }), list( .ldiffr = ldiffr, .lscale = lscale, .lshape = lshape,
+            .ediffr = ediffr, .escale = escale, .eshape = eshape ))),
+  weight = eval(substitute(expression({
+
+    run.varcov = 0
+    ind1 = iam(NA, NA, M = M, both = TRUE, diag = TRUE)
+
+    if (length( .nsimEIM )) {
+      for(ii in 1:( .nsimEIM )) {
+          ysim = rfrechet(n, loc = loctn, scale = Scale, shape = shape)
+
+          rzedd = Scale / (ysim - loctn)   # reciprocial of zedd
+
+          dl.dloct = (shape + 1) / (ysim - loctn) -
+                     (shape / (ysim - loctn)) * (rzedd)^shape
+          dl.ddifff = -dl.dloct
+
+          dl.dScale = shape * (1 - rzedd^shape) / Scale
+          dl.dshape = 1 / shape + log(rzedd) * (1 -  rzedd^shape)
+
+          rm(ysim)
+          temp3 = cbind(dl.ddifff, dl.dScale, dl.dshape)
+          run.varcov = run.varcov +
+                       temp3[, ind1$row.index] *
+                       temp3[, ind1$col.index]
+      }
+      run.varcov = run.varcov / .nsimEIM
+
+      wz = if (intercept.only)
+          matrix(colMeans(run.varcov),
+                 n, ncol(run.varcov), byrow = TRUE) else run.varcov
+
+      wz = c(w) * wz * dthetas.detas[, ind1$row] *
+                       dthetas.detas[, ind1$col]
+    } else {
+      stop("argument 'nsimEIM' must be numeric")
+    }
+
+ print("head(wz)")
+ print( head(wz) )
+ print("summary(wz) ,,,,,,,,,,,,,,,,,,")
+ print( summary(wz) )
+
+    wz
+  }), list( .nsimEIM = nsimEIM ))))
 }
 
 
@@ -1911,16 +2194,16 @@ recnormal1.control <- function(save.weight = TRUE, ...)
 }
 
  recnormal1 <- function(lmean = "identity", lsd = "loge",
-                       imean = NULL, isd = NULL, method.init = 1, zero = NULL)
+                       imean = NULL, isd = NULL, imethod = 1, zero = NULL)
 {
 
     if (mode(lmean) != "character" && mode(lmean) != "name")
         lmean = as.character(substitute(lmean))
     if (mode(lsd) != "character" && mode(lsd) != "name")
         lsd = as.character(substitute(lsd))
-    if (!is.Numeric(method.init, allow = 1, integ = TRUE, positi = TRUE) ||
-       method.init > 3.5)
-        stop("argument 'method.init' must be 1 or 2 or 3")
+    if (!is.Numeric(imethod, allow = 1, integ = TRUE, positi = TRUE) ||
+       imethod > 3.5)
+        stop("argument 'imethod' must be 1 or 2 or 3")
 
     new("vglmff",
     blurb = c("Upper record values from a univariate normal distribution\n\n",
@@ -1945,17 +2228,17 @@ recnormal1.control <- function(save.weight = TRUE, ...)
             mean.init = if (length( .imean)) rep( .imean, len = n) else {
                 if (.lmean == "loge") pmax(1/1024, min(y)) else min(y)}
             sd.init = if (length( .isd)) rep( .isd, len = n) else {
-                if (.method.init == 1)  1*(sd(y)) else
-                if (.method.init == 2)  5*(sd(y)) else
+                if (.imethod == 1)  1*(sd(y)) else
+                if (.imethod == 2)  5*(sd(y)) else
                                       .5*(sd(y))
                 }
             etastart = cbind(theta2eta(rep(mean.init, len = n), .lmean),
                              theta2eta(rep(sd.init,   len = n), .lsd))
         }
     }), list( .lmean = lmean, .lsd = lsd, .imean = imean, .isd = isd,
-             .method.init = method.init ))),
+             .imethod = imethod ))),
     inverse = eval(substitute(function(eta, extra = NULL) {
-        eta2theta(eta[,1], .lmean)
+        eta2theta(eta[, 1], .lmean)
     }, list( .lmean = lmean ))),
     last = eval(substitute(expression({
         misc$link = c("mu" = .lmean, "sd" = .lsd)
@@ -1963,7 +2246,7 @@ recnormal1.control <- function(save.weight = TRUE, ...)
     }), list( .lmean = lmean, .lsd = lsd ))),
     loglikelihood = eval(substitute(
     function(mu,y,w,residuals= FALSE,eta, extra = NULL) {
-        sd = eta2theta(eta[,2], .lsd)
+        sd = eta2theta(eta[, 2], .lsd)
         if (residuals) stop("loglikelihood residuals not ",
                             "implemented yet") else {
             zedd = (y - mu) / sd
@@ -1975,8 +2258,8 @@ recnormal1.control <- function(save.weight = TRUE, ...)
     vfamily = c("recnormal1"),
     deriv = eval(substitute(expression({
         NN = nrow(eta)
-        mymu = eta2theta(eta[,1], .lmean)
-        sd = eta2theta(eta[,2], .lsd)
+        mymu = eta2theta(eta[, 1], .lmean)
+        sd = eta2theta(eta[, 2], .lsd)
         zedd = (y - mymu) / sd
         temp200 = dnorm(zedd) / (1-pnorm(zedd))
         dl.dmu = (zedd - temp200) / sd
@@ -1992,7 +2275,8 @@ recnormal1.control <- function(save.weight = TRUE, ...)
             etaold = etanew
             etanew = eta
         }
-        derivnew = w * cbind(dl.dmu * dmu.deta, dl.dsd * dsd.deta)
+        derivnew = c(w) * cbind(dl.dmu * dmu.deta,
+                                dl.dsd * dsd.deta)
         derivnew
     }), list( .lmean = lmean, .lsd = lsd ))),
     weight=expression({
@@ -2000,7 +2284,7 @@ recnormal1.control <- function(save.weight = TRUE, ...)
             wznew = cbind(matrix(w, n, M), matrix(0, n, dimm(M)-M))
         } else {
             wzold = wznew
-            wznew = qnupdate(w=w, wzold=wzold, dderiv=(derivold - derivnew),
+            wznew = qnupdate(w=w, wzold = wzold, dderiv=(derivold - derivnew),
                              deta=etanew-etaold, M = M,
                              trace=trace)  # weights incorporated in args
         }
@@ -2015,14 +2299,14 @@ recexp1.control <- function(save.weight = TRUE, ...)
     list(save.weight = save.weight)
 }
 
- recexp1 <- function(lrate = "loge", irate = NULL, method.init = 1)
+ recexp1 <- function(lrate = "loge", irate = NULL, imethod = 1)
 {
 
     if (mode(lrate) != "character" && mode(lrate) != "name")
         lrate = as.character(substitute(lrate))
-    if (!is.Numeric(method.init, allow = 1, integ = TRUE, positi = TRUE) ||
-       method.init > 3.5)
-        stop("argument 'method.init' must be 1 or 2 or 3")
+    if (!is.Numeric(imethod, allow = 1, integ = TRUE, positi = TRUE) ||
+       imethod > 3.5)
+        stop("argument 'imethod' must be 1 or 2 or 3")
 
     new("vglmff",
     blurb = c("Upper record values from a ",
@@ -2042,12 +2326,12 @@ recexp1.control <- function(save.weight = TRUE, ...)
         if (!length(etastart)) {
             rate.init = if (length( .irate)) rep( .irate, len = n) else {
                 init.rate =
-                    if (.method.init == 1) length(y) / y[length(y),1] else
-                    if (.method.init == 2) 1/mean(y) else 1/median(y)
+                    if (.imethod == 1) length(y) / y[length(y), 1] else
+                    if (.imethod == 2) 1/mean(y) else 1/median(y)
                 if (.lrate == "loge") pmax(1/1024, init.rate) else init.rate}
             etastart = cbind(theta2eta(rep(rate.init, len = n), .lrate))
         }
-    }), list( .lrate = lrate, .irate = irate, .method.init = method.init ))),
+    }), list( .lrate = lrate, .irate = irate, .imethod = imethod ))),
     inverse = eval(substitute(function(eta, extra = NULL) {
         eta2theta(eta, .lrate)
     }, list( .lrate = lrate ))),
@@ -2062,7 +2346,7 @@ recexp1.control <- function(save.weight = TRUE, ...)
                             "implemented yet") else {
             NN = length(eta)
             y = cbind(y)
-            sum(w * log(rate)) - w[NN] * rate[NN] * y[NN,1]
+            sum(w * log(rate)) - w[NN] * rate[NN] * y[NN, 1]
         }
     }, list( .lrate = lrate ))),
     vfamily = c("recexp1"),
@@ -2070,14 +2354,14 @@ recexp1.control <- function(save.weight = TRUE, ...)
         NN = length(eta)
         rate = c(eta2theta(eta, .lrate))
         dl.drate = 1 / rate 
-        dl.drate[NN] = 1/ rate[NN] - y[NN,1]
+        dl.drate[NN] = 1/ rate[NN] - y[NN, 1]
         drate.deta = dtheta.deta(rate, .lrate)
-        w * cbind(dl.drate * drate.deta)
+        c(w) * cbind(dl.drate * drate.deta)
     }), list( .lrate = lrate ))),
     weight=expression({
-        ed2l.drate2 = -1 / rate^2
-        wz = -w * drate.deta^2 * ed2l.drate2
-        wz
+        ed2l.drate2 = 1 / rate^2
+        wz = drate.deta^2 * ed2l.drate2
+        c(w) * wz
     }))
 }
 
@@ -2091,7 +2375,7 @@ recexp1.control <- function(save.weight = TRUE, ...)
 
  poissonp <- function(ostatistic, dimension = 2,
                      link = "loge", earg = list(),
-                     idensity = NULL, method.init = 1) {
+                     idensity = NULL, imethod = 1) {
     if (!is.Numeric(ostatistic, posit = TRUE, allow = 1, integ = TRUE))
         stop("argument 'ostatistic' must be a single positive integer")
     if (!is.Numeric(dimension, posit = TRUE, allow = 1, integ = TRUE) ||
@@ -2100,9 +2384,9 @@ recexp1.control <- function(save.weight = TRUE, ...)
     if (mode(link) != "character" && mode(link) != "name")
         link = as.character(substitute(link))
     if (!is.list(earg)) earg = list()
-    if (!is.Numeric(method.init, allow = 1, posit = TRUE, integer = TRUE) ||
-       method.init > 2.5)
-        stop("argument 'method.init' must be 1 or 2")
+    if (!is.Numeric(imethod, allow = 1, posit = TRUE, integer = TRUE) ||
+       imethod > 2.5)
+        stop("argument 'imethod' must be 1 or 2")
     if (length(idensity) && !is.Numeric(idensity, posit = TRUE))
         stop("bad input for argument 'idensity'")
 
@@ -2122,7 +2406,7 @@ recexp1.control <- function(save.weight = TRUE, ...)
             stop("response must contain positive values only")
         predictors.names = namesof("density", .link, earg = .earg, tag = FALSE) 
         if (!length(etastart)) {
-            use.this = if ( .method.init == 1) median(y) + 1/8 else
+            use.this = if ( .imethod == 1) median(y) + 1/8 else
                        weighted.mean(y,w)
             if ( .dimension == 2) {
                 myratio = exp(lgamma( .ostatistic +0.5) - lgamma( .ostatistic ))
@@ -2139,7 +2423,7 @@ recexp1.control <- function(save.weight = TRUE, ...)
             }
         }
     }), list( .link = link, .earg = earg, .ostatistic = ostatistic,
-              .dimension = dimension, .method.init = method.init,
+              .dimension = dimension, .imethod = imethod,
               .idensity = idensity ))),
     inverse = eval(substitute(function(eta, extra = NULL) {
         density = eta2theta(eta, .link, earg = .earg)
@@ -2189,7 +2473,7 @@ recexp1.control <- function(save.weight = TRUE, ...)
     weight = eval(substitute(expression({
         ed2l.ddensity2 = .ostatistic / density^2
         wz = ddensity.deta^2 * ed2l.ddensity2
-        w * wz
+        c(w) * wz
     }), list( .link = link, .earg = earg, .ostatistic = ostatistic,
               .dimension = dimension ))))
 }
diff --git a/R/family.functions.R b/R/family.functions.R
index 0c76de7..919107b 100644
--- a/R/family.functions.R
+++ b/R/family.functions.R
@@ -177,11 +177,14 @@ rss.vgam <- function(z, wz, M)
 
     if (M == 1)
         return(sum(c(wz) * c(z^2)))
-    wz.z <- mux22(t(wz), z, M, as.mat = TRUE) # else mux2(wz, z)
+
+    wz.z <- mux22(t(wz), z, M = M, as.matrix = TRUE) # else mux2(wz, z)
     ans <- sum(wz.z * z)
     ans
 }
 
+
+
 wweighted.mean <- function(y, w = NULL, matrix.arg = TRUE)
 {
     if (!matrix.arg)
diff --git a/R/family.genetic.R b/R/family.genetic.R
index 9b73f24..8fcd87b 100644
--- a/R/family.genetic.R
+++ b/R/family.genetic.R
@@ -101,7 +101,7 @@
         dl2 = rowSums(y * dP2 / mu)
         dl3 = rowSums(y * dP3 / mu)
         dPP.deta = dtheta.deta(cbind(p1, p2, f), link = .link, earg = .earg)
-        w * cbind(dPP.deta[,1] * dl1,
+        c(w) * cbind(dPP.deta[,1] * dl1,
                   dPP.deta[,2] * dl2, 
                   dPP.deta[,3] * dl3)
     }), list( .link = link, .earg = earg ))),
@@ -116,7 +116,7 @@
                                      dPP[, , i2, drop = TRUE] / mu) *
                                      dPP.deta[, i1] * dPP.deta[, i2]
         }
-        w * wz
+        c(w) * wz
     }), list( .link = link, .earg = earg ))))
 }
 
@@ -197,7 +197,7 @@
         dl1 = rowSums(y * dP1 / mu)
         dl2 = rowSums(y * dP2 / mu)
         dPP.deta = dtheta.deta(pA, link = .link, earg = .earg)
-        w * cbind(dPP.deta * dl1,
+        c(w) * cbind(dPP.deta * dl1,
                   dl2)
     }), list( .link = link, .earg = earg ))),
     weight = eval(substitute(expression({
@@ -212,7 +212,7 @@
                                      dPP[,,i2,drop = TRUE] / mu) *
                                      dPP.deta[,i1] * dPP.deta[,i2]
         }
-        w * wz
+        c(w) * wz
     }), list( .link = link, .earg = earg ))))
 }
 
@@ -279,11 +279,11 @@
                     -0.5*(1-pp))
         dl1 = rowSums(y * dP1 / mu)
         dPP.deta = dtheta.deta(pp, link = .link, earg = .earg)
-        w * dPP.deta * dl1
+        c(w) * dPP.deta * dl1
         }), list( .link = link, .earg = earg ) )),
     weight = eval(substitute(expression({
         wz = rowSums(dP1 * dP1 / mu) * dPP.deta^2
-        w * wz
+        c(w) * wz
     }), list( .link = link, .earg = earg ) )))
 }
 
@@ -363,7 +363,7 @@
         dl.dp2 = (2*y[,3]+y[,2]+y[,5])/p2 - (2*y[,6]+y[,4]+y[,5])/(1-p1-p2)
         dp1.deta = dtheta.deta(p1, link = .link, earg = .earg)
         dp2.deta = dtheta.deta(p2, link = .link, earg = .earg)
-        w * cbind(dl.dp1 * dp1.deta,
+        c(w) * cbind(dl.dp1 * dp1.deta,
                   dl.dp2 * dp2.deta)
     }), list( .link = link, .earg = earg ))),
     weight = eval(substitute(expression({
@@ -375,7 +375,7 @@
         wz[,iam(1,1,M)] = dp1.deta^2 * ed2l.dp12
         wz[,iam(2,2,M)] = dp2.deta^2 * ed2l.dp22
         wz[,iam(1,2,M)] = ed2l.dp1dp2 * dp1.deta * dp2.deta
-        w * wz
+        c(w) * wz
     }), list( .link = link, .earg = earg ))))
 }
 
@@ -469,7 +469,7 @@
         dl2 = rowSums(y * dP2 / mu)
         dl3 = rowSums(y * dP3 / mu)
         dPP.deta = dtheta.deta(cbind(mS, ms, nS), link = .link, earg = .earg)
-        w * dPP.deta * cbind(dl1, dl2, dl3)
+        c(w) * dPP.deta * cbind(dl1, dl2, dl3)
     }), list( .link = link, .earg = earg ))),
     weight = eval(substitute(expression({
         dPP = array(c(dP1,dP2,dP3), c(n,6,3))
@@ -481,7 +481,7 @@
                                      dPP[,,i2,drop = TRUE] / mu) *
                                      dPP.deta[,i1] * dPP.deta[,i2]
         }
-        w * wz
+        c(w) * wz
     }), list( .link = link, .earg = earg ))))
 }
 
@@ -523,7 +523,7 @@
                  c(sqrt(mustart[,4]))
             pA = if (is.Numeric( .ipA )) rep( .ipA , len = n) else
                 c(1 - sqrt(mustart[,2] + mustart[,4]))
-            pB = 1 - pA - pO
+            pB = abs(1 - pA - pO)
             etastart = cbind(theta2eta(pA, .link, earg = .earg),
                              theta2eta(pB, .link, earg = .earg))
         }
@@ -531,7 +531,7 @@
     inverse = eval(substitute(function(eta, extra = NULL) {
         pA = eta2theta(eta[,1], link = .link, earg = .earg)
         pB = eta2theta(eta[,2], link = .link, earg = .earg)
-        pO = 1 - pA - pB
+        pO = abs(1 - pA - pB)
         cbind(A  = pA*(pA+2*pO),
               B  = pB*(pB+2*pO),
               AB = 2*pA*pB,
@@ -548,7 +548,7 @@
          index = (p2 >= 0) & (p2 <= 1)
          pA = p1
          pA[index] = p2[index]
-         pB = abs(1-pA-pO)
+         pB = abs(1 - pA - pO)
          cbind(theta2eta(pA, .link, earg = .earg),
                theta2eta(pB, .link, earg = .earg))
     }, list( .link = link, .earg = earg ))),
@@ -562,7 +562,7 @@
     deriv = eval(substitute(expression({
         ppp = eta2theta(eta[,1], link = .link, earg = .earg)
         qqq = eta2theta(eta[,2], link = .link, earg = .earg)
-        rrr = 1-ppp-qqq
+        rrr = abs(1 - ppp - qqq)
 
 
         pbar = 2*rrr+ppp
@@ -577,7 +577,7 @@
         dp.deta = dtheta.deta(ppp, link = .link, earg = .earg)
         dq.deta = dtheta.deta(qqq, link = .link, earg = .earg)
 
-        w * cbind(dl.dp * dp.deta,
+        c(w) * cbind(dl.dp * dp.deta,
                   dl.dq * dq.deta)
     }), list( .link = link, .earg = earg ))),
     weight = eval(substitute(expression({
@@ -588,7 +588,7 @@
         wz[,iam(1,1,M)] = dp.deta^2 * ed2l.dp2
         wz[,iam(2,2,M)] = dq.deta^2 * ed2l.dq2
         wz[,iam(1,2,M)] = ed2l.dpdq * dp.deta * dq.deta
-        w * wz
+        c(w) * wz
     }), list( .link = link, .earg = earg ))))
 }
 
@@ -658,9 +658,9 @@
         dl.dp * dp.deta
     }), list( .link = link, .earg = earg ))),
     weight = eval(substitute(expression({
-        ed2l.dp2 = 4 * w * p2 * (1/(2+p2) + 2/(1-p2) + 1/p2)
+        ed2l.dp2 = 4 * p2 * (1/(2+p2) + 2/(1-p2) + 1/p2)
         wz = cbind((dp.deta^2) * ed2l.dp2)
-        wz
+        c(w) * wz
     }), list( .link = link, .earg = earg ))))
 }
 
@@ -718,10 +718,10 @@
         },
     vfamily = c("AA.Aa.aa", "vgenetic"),
     deriv = eval(substitute(expression({
-        pA = eta2theta(eta, link = .link, earg = .earg)
-        nAA = w*y[,1]
-        nAa = w*y[,2]
-        naa = w*y[,3]
+        pA  = eta2theta(eta, link = .link, earg = .earg)
+        nAA = w * y[,1]
+        nAa = w * y[,2]
+        naa = w * y[,3]
         dl.dpA = (2*nAA+nAa)/pA - (nAa+2*naa)/(1-pA)
         dpA.deta = dtheta.deta(pA, link = .link, earg = .earg)
         dl.dpA * dpA.deta
diff --git a/R/family.glmgam.R b/R/family.glmgam.R
index 63baeea..a0fb87c 100644
--- a/R/family.glmgam.R
+++ b/R/family.glmgam.R
@@ -26,7 +26,7 @@
     if (!is.list(earg)) earg = list()
 
     new("vglmff",
-    blurb = if (mv) c("Multivariate Binomial model\n\n", 
+    blurb = if (mv) c("Multivariate binomial model\n\n", 
            "Link:     ", namesof("mu[,j]", link, earg = earg), "\n",
            "Variance: mu[,j]*(1-mu[,j])") else
            c("Binomial model\n\n", 
@@ -131,8 +131,8 @@
                 nrow.mu = if (is.matrix(mu)) nrow(mu) else length(mu)
                 for(ii in 1:M)
                     dpar[ii] = sum(temp87[,ii]) / (nrow.mu - ncol(x))
-                if (is.matrix(y) && length(dimnames(y)[[2]]) == length(dpar))
-                    names(dpar) = dimnames(y)[[2]]
+              if (is.matrix(y) && length(dimnames(y)[[2]]) == length(dpar))
+                  names(dpar) = dimnames(y)[[2]]
             } else 
                 dpar = sum(temp87) / (length(mu) - ncol(x))
         }
@@ -140,7 +140,7 @@
         misc$dispersion <- dpar
         misc$default.dispersion <- 1
         misc$estimated.dispersion <- .estimated.dispersion
-        misc$link = rep( .link, length=M)
+        misc$link = rep( .link, length = M)
         names(misc$link) = if (M > 1) dn2 else "mu"
 
         misc$earg = vector("list", M)
@@ -150,11 +150,13 @@
         misc$expected = TRUE
     }), list( .dispersion = dispersion,
               .estimated.dispersion = estimated.dispersion,
-              .onedpar = onedpar, .link = link, .mv = mv, .earg = earg ))),
+              .onedpar = onedpar, .mv = mv,
+              .link = link, .earg = earg ))),
     link = eval(substitute(function(mu, extra = NULL)
         theta2eta(mu, .link, earg = .earg )
     , list( .link = link, .earg = earg ))),
-    loglikelihood = function(mu, y, w, residuals = FALSE, eta, extra = NULL) {
+    loglikelihood =
+      function(mu, y, w, residuals = FALSE, eta, extra = NULL) {
         if (residuals) w * (y / mu - (1-y) / (1-mu)) else {
 
           ycounts = if (is.numeric(extra$orig.w)) y * w / extra$orig.w else
@@ -166,7 +168,7 @@
           smallno = 1.0e6 * .Machine$double.eps
           smallno = sqrt(.Machine$double.eps)
           if (max(abs(ycounts - round(ycounts))) > smallno)
-              warning("converting 'ycounts' to integer in @loglikelihood")
+            warning("converting 'ycounts' to integer in @loglikelihood")
           ycounts = round(ycounts)
 
           sum((if (is.numeric(extra$orig.w)) extra$orig.w else 1) *
@@ -199,10 +201,10 @@
             cbind(w * dtheta.deta(mu, link = .link, earg = .earg)^2 / tmp100)
         }
         for(ii in 1:M) {
-            index200 = !is.finite(tmp200[,ii]) |
-                       (abs(tmp200[,ii]) < .Machine$double.eps)
-            if (any(index200)) { # Diagonal 0's are bad
-                tmp200[index200,ii] = .Machine$double.eps
+            index500 = !is.finite(tmp200[, ii]) |
+                       (abs(tmp200[, ii]) < .Machine$double.eps)
+            if (any(index500)) { # Diagonal 0's are bad
+                tmp200[index500, ii] = .Machine$double.eps
             }
         }
         tmp200
@@ -263,7 +265,7 @@
         misc$dispersion <- dpar
         misc$default.dispersion <- 0
         misc$estimated.dispersion <- .estimated.dispersion
-        misc$link = rep( .link, length=M)
+        misc$link = rep( .link, length = M)
         names(misc$link) = if (M > 1) paste("mu", 1:M, sep = "") else "mu"
 
         misc$earg = vector("list", M)
@@ -331,7 +333,7 @@
         misc$dispersion <- dpar
         misc$default.dispersion <- 0
         misc$estimated.dispersion <- .estimated.dispersion
-        misc$link = rep( .link, length=M)
+        misc$link = rep( .link, length = M)
         names(misc$link) = if (M > 1) paste("mu", 1:M, sep = "") else "mu"
     }), list( .dispersion = dispersion,
               .estimated.dispersion = estimated.dispersion,
@@ -373,17 +375,23 @@ dinv.gaussian = function(x, mu, lambda, log = FALSE) {
 
 
 pinv.gaussian = function(q, mu, lambda) {
-    if (any(mu  <= 0)) stop("mu must be positive")
-    if (any(lambda  <= 0)) stop("lambda must be positive")
-    ans = q
-    mu = rep(mu, len = length(q))
-    lambda = rep(lambda, len = length(q))
-    ans[q <= 0] = 0
-    bb = q > 0
-    ans[bb] = pnorm(sqrt(lambda[bb]/q[bb])*(q[bb]/mu[bb]-1)) +
-              exp(2*lambda[bb]/mu[bb]) *
-              pnorm(-sqrt(lambda[bb]/q[bb])*(q[bb]/mu[bb]+1))
-    ans
+  if (any(mu  <= 0))
+    stop("mu must be positive")
+  if (any(lambda  <= 0))
+    stop("lambda must be positive")
+
+  LLL = max(length(q), length(mu), length(lambda))
+  q      = rep(q,      len = LLL)
+  mu     = rep(mu,     len = LLL)
+  lambda = rep(lambda, len = LLL)
+  ans = q
+
+  ans[q <= 0] = 0
+  bb = q > 0
+  ans[bb] = pnorm( sqrt(lambda[bb]/q[bb]) * (q[bb]/mu[bb] - 1)) +
+            exp(2*lambda[bb]/mu[bb]) *
+            pnorm(-sqrt(lambda[bb]/q[bb]) * (q[bb]/mu[bb] + 1))
+  ans
 }
 
 
@@ -391,7 +399,9 @@ rinv.gaussian = function(n, mu, lambda) {
     use.n = if ((length.n <- length(n)) > 1) length.n else
             if (!is.Numeric(n, integ=TRUE, allow = 1, posit = TRUE))
                 stop("bad input for argument 'n'") else n
+
     mu = rep(mu, len = use.n); lambda = rep(lambda, len = use.n)
+
     u = runif(use.n)
     Z = rnorm(use.n)^2 # rchisq(use.n, df = 1)
     phi = lambda / mu
@@ -414,7 +424,7 @@ rinv.gaussian = function(n, mu, lambda) {
 
  inv.gaussianff = function(lmu = "loge", llambda = "loge",
                            emu = list(), elambda = list(),
-                           method.init = 1,
+                           imethod = 1,
                            ilambda = 1,
                            shrinkage.init = 0.99,
                            zero = NULL)
@@ -429,9 +439,9 @@ rinv.gaussian = function(n, mu, lambda) {
     if (!is.list(emu)) emu = list()
     if (!is.list(elambda)) elambda = list()
 
-    if (!is.Numeric(method.init, allow = 1, integ = TRUE, posit = TRUE) ||
-       method.init > 3)
-        stop("argument 'method.init' must be 1 or 2 or 3")
+    if (!is.Numeric(imethod, allow = 1, integ = TRUE, posit = TRUE) ||
+       imethod > 3)
+        stop("argument 'imethod' must be 1 or 2 or 3")
     if (!is.Numeric(shrinkage.init, allow = 1) || shrinkage.init < 0 ||
        shrinkage.init > 1) stop("bad input for argument 'shrinkage.init'")
 
@@ -459,9 +469,9 @@ rinv.gaussian = function(n, mu, lambda) {
 
         if (!length(etastart)) {
           init.mu =
-                if ( .method.init == 3) {
+                if ( .imethod == 3) {
                   0 * y + 1.1 * median(y) + 1/8
-                } else if ( .method.init == 2) {
+                } else if ( .imethod == 2) {
                   use.this = weighted.mean(y, w)
                   (1 - .sinit) * y  + .sinit * use.this
                 } else {
@@ -478,19 +488,19 @@ rinv.gaussian = function(n, mu, lambda) {
     }), list( .lmu = lmu, .llambda = llambda,
               .emu = emu, .elambda = elambda,
               .sinit = shrinkage.init,
-              .method.init = method.init, .ilambda = ilambda ))),
+              .imethod = imethod, .ilambda = ilambda ))),
     inverse = eval(substitute(function(eta, extra = NULL) {
         eta2theta(eta[,1], link = .lmu, earg = .emu)
     }, list( .lmu = lmu, .emu = emu, .elambda = elambda ))),
     last = eval(substitute(expression({
         misc$link =    c(mu = .lmu, lambda = .llambda)
         misc$earg = list(mu = .emu, lambda = .elambda)
-        misc$method.init = .method.init
+        misc$imethod = .imethod
         misc$shrinkage.init = .sinit 
     }), list( .lmu = lmu, .llambda = llambda,
               .emu = emu, .elambda = elambda,
               .sinit = shrinkage.init,
-              .method.init = method.init ))),
+              .imethod = imethod ))),
     loglikelihood = eval(substitute(
              function(mu, y, w, residuals = FALSE, eta, extra = NULL) {
       lambda <- eta2theta(eta[,2], link = .llambda, earg = .elambda)
@@ -510,8 +520,8 @@ rinv.gaussian = function(n, mu, lambda) {
 
         dl.dmu = lambda * (y - mymu) / mymu^3
         dl.dlambda <- 0.5 / lambda - (y-mymu)^2 / (2 * mymu^2 * y)
-        w * cbind(dl.dmu * dmu.deta,
-                  dl.dlambda * dlambda.deta)
+        c(w) * cbind(dl.dmu * dmu.deta,
+                     dl.dlambda * dlambda.deta)
     }), list( .lmu = lmu, .llambda = llambda,
               .emu = emu, .elambda = elambda ))),
     weight = eval(substitute(expression({
@@ -519,7 +529,7 @@ rinv.gaussian = function(n, mu, lambda) {
         d2l.dlambda2 = 0.5 / (lambda^2)
         wz <- cbind(dmu.deta^2 * d2l.dmu2,
                     dlambda.deta^2 * d2l.dlambda2)
-        w * wz
+        c(w) * wz
     }), list( .lmu = lmu, .llambda = llambda,
               .emu = emu, .elambda = elambda ))))
 }
@@ -529,7 +539,7 @@ rinv.gaussian = function(n, mu, lambda) {
 
  poissonff <- function(link = "loge", earg = list(),
                       dispersion = 1, onedpar = FALSE,
-                      imu=NULL, method.init = 1,
+                      imu = NULL, imethod = 1,
                       parallel = FALSE, zero = NULL)
 {
 
@@ -537,9 +547,9 @@ rinv.gaussian = function(n, mu, lambda) {
     if (mode(link )!= "character" && mode(link )!= "name")
         link <- as.character(substitute(link))
     if (!is.list(earg)) earg = list()
-    if (!is.Numeric(method.init, allow = 1, integ=TRUE, posit = TRUE) ||
-       method.init > 3)
-        stop("argument 'method.init' must be 1 or 2 or 3")
+    if (!is.Numeric(imethod, allow = 1, integ=TRUE, posit = TRUE) ||
+       imethod > 3)
+        stop("argument 'imethod' must be 1 or 2 or 3")
     if (length(imu) && !is.Numeric(imu, posit = TRUE))
         stop("bad input for argument 'imu'")
 
@@ -579,9 +589,9 @@ rinv.gaussian = function(n, mu, lambda) {
         if (!length(etastart)) {
             mu.init = pmax(y, 1/8)
             for(iii in 1:ncol(y)) {
-                if ( .method.init == 2) {
+                if ( .imethod == 2) {
                     mu.init[,iii] = weighted.mean(y[,iii], w) + 1/8
-                } else if ( .method.init == 3) {
+                } else if ( .imethod == 3) {
                     mu.init[,iii] = median(y[,iii]) + 1/8
                 }
             }
@@ -590,7 +600,7 @@ rinv.gaussian = function(n, mu, lambda) {
             etastart <- theta2eta(mu.init, link = .link, earg = .earg)
         }
     }), list( .link = link, .estimated.dispersion = estimated.dispersion,
-              .method.init=method.init, .imu=imu, .earg = earg ))),
+              .imethod = imethod, .imu = imu, .earg = earg ))),
     inverse = eval(substitute(function(eta, extra = NULL) {
         mu = eta2theta(eta, link = .link, earg = .earg)
         mu
@@ -617,14 +627,14 @@ rinv.gaussian = function(n, mu, lambda) {
         misc$default.dispersion <- 1
         misc$estimated.dispersion <- .estimated.dispersion
         misc$expected = TRUE
-        misc$link = rep( .link, length=M)
+        misc$link = rep( .link, length = M)
         names(misc$link) = if (M > 1) dn2 else "mu"
-        misc$method.init = .method.init
+        misc$imethod = .imethod
 
         misc$earg = vector("list", M)
         names(misc$earg) = names(misc$link)
         for(ii in 1:M) misc$earg[[ii]] = .earg
-    }), list( .dispersion = dispersion, .method.init=method.init,
+    }), list( .dispersion = dispersion, .imethod=imethod,
               .estimated.dispersion = estimated.dispersion,
               .onedpar = onedpar, .link = link, .earg = earg ))),
     link = eval(substitute( function(mu, extra = NULL) {
@@ -756,7 +766,7 @@ poissonqn.control <- function(save.weight=TRUE, ...)
         misc$default.dispersion <- 1
         misc$estimated.dispersion <- .estimated.dispersion
         misc$expected = FALSE
-        misc$link = rep( .link, length=M)
+        misc$link = rep( .link, length = M)
         names(misc$link) = if (M > 1) dn2 else "mu"
 
         misc$earg = vector("list", M)
@@ -908,8 +918,8 @@ poissonqn.control <- function(save.weight=TRUE, ...)
         dlambda.deta = dtheta.deta(theta = lambda, link = .lmean, earg = .emean)
         dDisper.deta = dtheta.deta(theta = Disper, link = .ldispersion,
                                    earg = .edispersion)
-        w * cbind(dl.dlambda * dlambda.deta,
-                  dl.dDisper * dDisper.deta)
+        c(w) * cbind(dl.dlambda * dlambda.deta,
+                     dl.dDisper * dDisper.deta)
     }), list( .lmean = lmean, .emean = emean,
               .ldispersion = ldispersion, .edispersion = edispersion ))),
     weight = eval(substitute(expression({
@@ -917,7 +927,7 @@ poissonqn.control <- function(save.weight=TRUE, ...)
         usethis.lambda = pmax(lambda, .Machine$double.eps / 10000)
         wz[,iam(1,1,M)] = (Disper / usethis.lambda) * dlambda.deta^2
         wz[,iam(2,2,M)] = (0.5 / Disper^2) * dDisper.deta^2
-        w * wz
+        c(w) * wz
     }), list( .lmean = lmean, .emean = emean,
               .ldispersion = ldispersion, .edispersion = edispersion ))))
 }
@@ -1150,7 +1160,7 @@ poissonqn.control <- function(save.weight=TRUE, ...)
         mu[cbind(1:extra$n, extra$index9)]
     }, list( .link = link, .earg = earg  ))),
     last = eval(substitute(expression({
-        misc$link = rep( .link, length=M)
+        misc$link = rep( .link, length = M)
         names(misc$link) = if (M > 1) paste("mu(matched set ",
             1:M, ")", sep = "") else "mu"
         misc$earg = vector("list", M)
@@ -1337,3 +1347,225 @@ mypool = function(x, index) {
 
 
 
+
+
+
+
+
+ augbinomial = function(link = "logit", earg = list(),
+                        mv = FALSE,
+                        parallel = TRUE)
+
+{
+ print("hi 20110222")
+
+    if (!is.logical(parallel) ||
+        length(parallel) != 1 ||
+        !parallel)
+      warning("Argument 'parallel' should be assigned 'TRUE' only")
+
+    if (mode(link )!= "character" && mode(link )!= "name")
+        link <- as.character(substitute(link))
+    if (!is.list(earg)) earg = list()
+
+    new("vglmff",
+    blurb = if (mv) c("Augmented multivariate binomial model\n\n", 
+           "Link:     ",
+           namesof("mu.1[,j]", link, earg = earg), ", ",
+           namesof("mu.2[,j]", link, earg = earg),
+           "\n",
+           "Variance: mu[,j]*(1-mu[,j])") else
+           c("Augmented binomial model\n\n", 
+           "Link:     ",
+           namesof("mu.1[,j]", link, earg = earg), ", ",
+           namesof("mu.2[,j]", link, earg = earg),
+           "\n",
+           "Variance: mu*(1-mu)"),
+    deviance = function(mu, y, w, residuals = FALSE, eta, extra = NULL) {
+        Deviance.categorical.data.vgam(mu=cbind(mu, 1-mu), y=cbind(y, 1-y),
+                                       w=w, residuals = residuals,
+                                       eta=eta, extra=extra)
+    },
+    infos = eval(substitute(function(...) {
+      list(Musual = 2,
+           parallel = .parallel)
+    }, list( .parallel = parallel ))),
+    initialize = eval(substitute(expression({
+
+        Musual = 2
+
+        if ( .mv ) {
+            y = as.matrix(y)
+            M = Musual * ncol(y)
+            if (!all(y == 0 | y == 1))
+                stop("response must contain 0's and 1's only")
+            dn2 = if (is.matrix(y)) dimnames(y)[[2]] else NULL
+            dn2 = if (length(dn2)) {
+                paste("E[", dn2, "]", sep = "") 
+            } else {
+                paste("mu", 1:M, sep = "") 
+            }
+            predictors.names =
+              c(namesof(if (M > 1) dn2 else
+                        "mu.1", .link, earg = .earg, short = TRUE),
+                namesof(if (M > 1) dn2 else
+                        "mu.2", .link, earg = .earg, short = TRUE))
+            NOS = M / Musual
+            predictors.names =
+            predictors.names[interleave.VGAM(Musual * NOS, M = Musual)]
+
+
+            if (!length(mustart) && !length(etastart))
+              mustart = (0.5 + w * y) / (1 + w)
+        } else {
+
+            dn2 = c("mu1.", "mu2.")
+            M = Musual
+
+
+
+            if (!all(w == 1))
+              extra$orig.w = w
+
+
+            NCOL = function (x) if (is.array(x) && length(dim(x)) > 1 ||
+                              is.data.frame(x)) ncol(x) else as.integer(1)
+            if (NCOL(y) == 1) {
+                if (is.factor(y)) y = (y != levels(y)[1])
+                nvec = rep(1, n)
+                y[w == 0] <- 0
+                if (!all(y == 0 || y == 1))
+                    stop("response values 'y' must be 0 or 1")
+                if (!length(mustart) && !length(etastart))
+                  mustart = (0.5 + w * y) / (1 + w)
+
+
+                no.successes = y
+                if (min(y) < 0)
+                    stop("Negative data not allowed!")
+                if (any(abs(no.successes - round(no.successes)) > 1.0e-8))
+                    stop("Number of successes must be integer-valued")
+            } else if (NCOL(y) == 2) {
+                if (min(y) < 0)
+                    stop("Negative data not allowed!")
+                if (any(abs(y - round(y)) > 1.0e-8))
+                    stop("Count data must be integer-valued")
+                y = round(y)
+                nvec = y[,1] + y[,2]
+                y = ifelse(nvec > 0, y[,1] / nvec, 0)
+                w = w * nvec
+                if (!length(mustart) && !length(etastart))
+                  mustart = (0.5 + nvec * y) / (1 + nvec)
+            } else {
+                stop("for the binomialff family, response 'y' must be a ",
+                     "vector of 0 and 1's\n",
+                     "or a factor (first level = fail, ",
+                                   "other levels = success),\n",
+                     "or a 2-column matrix where col 1 is the no. of ",
+                     "successes and col 2 is the no. of failures")
+            }
+            predictors.names =
+              c(namesof("mu.1", .link, earg = .earg, short = TRUE),
+                namesof("mu.2", .link, earg = .earg, short = TRUE))
+        }
+ print("head(etastart) b 20110221")
+ print( head(etastart)          )
+    }), list( .link = link, .mv = mv, .earg = earg ))),
+    inverse = eval(substitute(function(eta, extra = NULL) {
+        Mdiv2  =  ncol(eta) / 2
+        index1 =  2*(1:Mdiv2) - 1
+        mu =  eta2theta(eta[, index1],
+                        link = .link, earg = .earg)
+        mu
+    }, list( .link = link, .earg = earg  ))),
+    last = eval(substitute(expression({
+        misc$mv = .mv
+        misc$link = rep( .link, length = M)
+        names(misc$link) = if (M > 1) dn2 else "mu"
+
+        misc$earg = vector("list", M)
+        names(misc$earg) = names(misc$link)
+        for(ii in 1:M) misc$earg[[ii]] = .earg
+
+        misc$parallel = .parallel
+        misc$expected = TRUE
+    }), list( .link = link, .mv = mv, .earg = earg,
+              .parallel = parallel ))),
+    link = eval(substitute(function(mu, extra = NULL) {
+        usualanswer = theta2eta(mu, .link, earg = .earg )
+        kronecker(usualanswer, matrix(1, 1, 2))
+    }, list( .link = link, .earg = earg ))),
+    loglikelihood =
+      function(mu, y, w, residuals = FALSE, eta, extra = NULL) {
+        if (residuals) w * (y / mu - (1-y) / (1-mu)) else {
+
+          ycounts = if (is.numeric(extra$orig.w)) y * w / extra$orig.w else
+                    y * w # Convert proportions to counts
+          nvec = if (is.numeric(extra$orig.w)) round(w / extra$orig.w) else
+                    round(w)
+
+          smallno = 1.0e6 * .Machine$double.eps
+          smallno = sqrt(.Machine$double.eps)
+          if (max(abs(ycounts - round(ycounts))) > smallno)
+              warning("converting 'ycounts' to integer in @loglikelihood")
+          ycounts = round(ycounts)
+
+          sum((if (is.numeric(extra$orig.w)) extra$orig.w else 1) *
+              dbinom(x = ycounts, size = nvec, prob = mu,
+                           log = TRUE))
+        }
+    },
+    vfamily = c("augbinomial", "vcategorical"),
+    deriv = eval(substitute(expression({
+      Musual = 2
+      Mdiv2 =  M / 2
+
+      NOS = M / Musual
+
+      Konst1 = 1  # Works with this
+      deriv1 = Konst1 * w *
+        if ( .link == "logit") {
+            y * (1 - mu)
+        } else  {
+            stop("this is not programmed in yet")
+            dtheta.deta(mu, link = .link, earg = .earg ) *
+            (y / mu - 1.0) / (1.0 - mu)
+        }
+      deriv2 = Konst1 * w *
+        if ( .link == "logit") {
+           -(1 - y) * mu
+        } else  {
+            stop("this is not programmed in yet")
+            dtheta.deta(mu, link = .link, earg = .earg ) *
+            (y / mu - 1.0) / (1.0 - mu)
+        }
+
+      myderiv = (cbind(deriv1,
+                       deriv2))[, interleave.VGAM(Musual * NOS, M = Musual)]
+      myderiv
+    }), list( .link = link, .earg = earg ))),
+    weight = eval(substitute(expression({
+        tmp100 = mu * (1.0 - mu)
+
+        tmp200 = if ( .link == "logit") {
+          cbind(w * tmp100)
+        } else {
+          cbind(w * dtheta.deta(mu, link = .link, earg = .earg)^2 / tmp100)
+        }
+
+        wk_wt1 = (Konst1^2) * tmp200 * (1 - mu)
+        wk_wt2 = (Konst1^2) * tmp200 *      mu
+
+
+
+
+        my_wk_wt = cbind(wk_wt1, wk_wt2)
+        my_wk_wt = my_wk_wt[, interleave.VGAM(Musual * NOS, M = Musual)]
+        my_wk_wt
+    }), list( .link = link, .earg = earg ))))
+}
+
+
+
+
+
diff --git a/R/family.loglin.R b/R/family.loglin.R
index 512e4bf..6f8ad2c 100644
--- a/R/family.loglin.R
+++ b/R/family.loglin.R
@@ -76,9 +76,9 @@ loglinb2 <- function(exchangeable = FALSE, zero = NULL)
         du0.du1 <- -(exp(u1) + exp(u1 + u2 + u12)) / denom 
         du0.du2 <- -(exp(u2) + exp(u1 + u2 + u12)) / denom 
         du0.du12 <- -exp(u1 + u2 + u12) / denom 
-        w * cbind(du0.du1 + y[,1], 
-                  du0.du2 + y[,2],
-                  du0.du12 + y[,1]*y[,2]) 
+        c(w) * cbind(du0.du1  + y[,1], 
+                     du0.du2  + y[,2],
+                     du0.du12 + y[,1] * y[,2]) 
     }),
     weight = expression({
         d2u0.du1.2 <- -(exp(u1) + exp(u1 + u2 + u12)) * (1+exp(u2)) / denom^2 
@@ -95,7 +95,7 @@ loglinb2 <- function(exchangeable = FALSE, zero = NULL)
         wz[,iam(1,2,M)] <- -d2u0.du1u2
         wz[,iam(1,3,M)] <- -d2u0.du1u3
         wz[,iam(2,3,M)] <- -d2u0.du2u3
-        w * wz
+        c(w) * wz
     }))
 }
 
@@ -195,12 +195,12 @@ loglinb3 <- function(exchangeable = FALSE, zero = NULL)
     deriv = expression({
         eval(extra$my.expression)
         eval(extra$deriv.expression)
-        w * cbind(-A1/denom + y[,1], 
-                  -A2/denom + y[,2],
-                  -A3/denom + y[,3],
-                  -A12/denom + y[,1]*y[,2],
-                  -A13/denom + y[,1]*y[,3],
-                  -A23/denom + y[,2]*y[,3])
+        c(w) * cbind(-A1/denom + y[,1], 
+                     -A2/denom + y[,2],
+                     -A3/denom + y[,3],
+                     -A12/denom + y[,1]*y[,2],
+                     -A13/denom + y[,1]*y[,3],
+                     -A23/denom + y[,2]*y[,3])
     }),
     weight = expression({
         u0 <- -log(denom)
@@ -230,8 +230,8 @@ loglinb3 <- function(exchangeable = FALSE, zero = NULL)
         wz[,iam(3,4,M)] <- (allterms - expu0 * A3 * A12)
         wz[,iam(3,5,M)] <- A13 * (1 - expu0 * A3)
         wz[,iam(3,6,M)] <- A23 * (1 - expu0 * A3)
-        wz <- w * expu0 * wz 
-        wz
+        wz <- expu0 * wz 
+        c(w) * wz
     }))
 }
 
diff --git a/R/family.mixture.R b/R/family.mixture.R
index b1e1aa1..d454847 100644
--- a/R/family.mixture.R
+++ b/R/family.mixture.R
@@ -163,11 +163,11 @@ mix2normal1 = function(lphi="logit",
         dl.dmu2 = (1-phi) * df2.dmu2 / pdf
         dl.dsd1 = phi * df1.dsd1 / pdf
         dl.dsd2 = (1-phi) * df2.dsd2 / pdf
-        w * cbind(dl.dphi * dphi.deta,
-                  dl.dmu1 * dmu1.deta,
-                  dl.dsd1 * dsd1.deta,
-                  dl.dmu2 * dmu2.deta,
-                  dl.dsd2 * dsd2.deta)
+        c(w) * cbind(dl.dphi * dphi.deta,
+                     dl.dmu1 * dmu1.deta,
+                     dl.dsd1 * dsd1.deta,
+                     dl.dmu2 * dmu2.deta,
+                     dl.dsd2 * dsd2.deta)
     }), list(.lphi=lphi, .lmu=lmu, .lsd=lsd,
              .ephi=ephi, .emu1=emu1, .emu2=emu2, .esd1=esd1, .esd2=esd2,
              .nsimEIM=nsimEIM ))),
@@ -195,10 +195,14 @@ mix2normal1 = function(lphi="logit",
         wz = if (intercept.only)
             matrix(colMeans(run.mean), n, dimm(M), byrow=TRUE) else run.mean
 
-        dtheta.detas = cbind(dphi.deta,dmu1.deta,dsd1.deta,dmu2.deta,dsd2.deta)
+        dtheta.detas = cbind(dphi.deta,
+                             dmu1.deta,
+                             dsd1.deta,
+                             dmu2.deta,
+                             dsd2.deta)
         index0 = iam(NA, NA, M=M, both=TRUE, diag=TRUE)
         wz = wz * dtheta.detas[,index0$row] * dtheta.detas[,index0$col]
-        w * wz
+        c(w) * wz
     }), list(.lphi=lphi, .lmu=lmu, .nsimEIM=nsimEIM ))))
 }
 
@@ -305,9 +309,9 @@ mix2poisson = function(lphi="logit", llambda="loge",
         dl.dphi = (f1-f2) / pdf
         dl.dlambda1 = phi * df1.dlambda1 / pdf
         dl.dlambda2 = (1-phi) * df2.dlambda2 / pdf
-        w * cbind(dl.dphi * dphi.deta,
-                  dl.dlambda1 * dlambda1.deta,
-                  dl.dlambda2 * dlambda2.deta)
+        c(w) * cbind(dl.dphi * dphi.deta,
+                     dl.dlambda1 * dlambda1.deta,
+                     dl.dlambda2 * dlambda2.deta)
     }), list(.lphi=lphi, .llambda=llambda,
              .ephi=ephi, .el1=el1, .el2=el2, .nsimEIM=nsimEIM ))),
     weight = eval(substitute(expression({
@@ -352,7 +356,7 @@ mix2poisson = function(lphi="logit", llambda="loge",
         dtheta.detas = cbind(dphi.deta, dlambda1.deta, dlambda2.deta)
         index0 = iam(NA, NA, M=M, both=TRUE, diag=TRUE)
         wz = wz * dtheta.detas[,index0$row] * dtheta.detas[,index0$col]
-        w * wz
+        c(w) * wz
     }), list(.lphi=lphi, .llambda=llambda,
              .ephi=ephi, .el1=el1, .el2=el2, .nsimEIM=nsimEIM ))))
 }
@@ -460,9 +464,9 @@ mix2exp = function(lphi="logit", llambda="loge",
         dl.dphi = (f1-f2) / pdf
         dl.dlambda1 = phi * df1.dlambda1 / pdf
         dl.dlambda2 = (1-phi) * df2.dlambda2 / pdf
-        w * cbind(dl.dphi * dphi.deta,
-                  dl.dlambda1 * dlambda1.deta,
-                  dl.dlambda2 * dlambda2.deta)
+        c(w) * cbind(dl.dphi * dphi.deta,
+                     dl.dlambda1 * dlambda1.deta,
+                     dl.dlambda2 * dlambda2.deta)
     }), list(.lphi=lphi, .llambda=llambda,
              .ephi=ephi, .el1=el1, .el2=el2 ))),
     weight = eval(substitute(expression({
@@ -504,7 +508,7 @@ mix2exp = function(lphi="logit", llambda="loge",
         dtheta.detas = cbind(dphi.deta, dlambda1.deta, dlambda2.deta)
         index0 = iam(NA, NA, M=M, both=TRUE, diag=TRUE)
         wz = wz * dtheta.detas[,index0$row] * dtheta.detas[,index0$col]
-        w * wz
+        c(w) * wz
     }), list(.lphi=lphi, .llambda=llambda,
              .ephi=ephi, .el1=el1, .el2=el2, .nsimEIM=nsimEIM ))))
 }
diff --git a/R/family.nonlinear.R b/R/family.nonlinear.R
index 6f7ec3c..f503c7f 100644
--- a/R/family.nonlinear.R
+++ b/R/family.nonlinear.R
@@ -83,7 +83,7 @@ micmen.control <- function(save.weight = TRUE, ...)
 
 micmen <- function(rpar = 0.001, divisor = 10,
                    init1 = NULL, init2 = NULL,
-                   method.init = 1,
+                   imethod = 1,
                    oim = TRUE,
                    link1 = "identity", link2 = "identity",
                    firstDeriv = c("nsimEIM", "rpar"),
@@ -100,10 +100,10 @@ micmen <- function(rpar = 0.001, divisor = 10,
 
   firstDeriv <- match.arg(firstDeriv, c("nsimEIM", "rpar"))[1]
 
-  if (!is.Numeric(method.init, allow = 1, integ = TRUE, posit = TRUE))
-    stop("argument 'method.init' must be integer")
-  if (method.init > 3)
-    stop("argument 'method.init' must be 1, 2, or 3")
+  if (!is.Numeric(imethod, allow = 1, integ = TRUE, posit = TRUE))
+    stop("argument 'imethod' must be integer")
+  if (imethod > 3)
+    stop("argument 'imethod' must be 1, 2, or 3")
   if (!is.Numeric(prob.x, allow = 2))
     stop("argument 'prob.x' must be numeric and of length two")
   if (!is.logical(oim) || length(oim) != 1)
@@ -111,9 +111,9 @@ micmen <- function(rpar = 0.001, divisor = 10,
 
     stopifnot(nsimEIM > 10, length(nsimEIM)==1, nsimEIM==round(nsimEIM))
 
-  if (!is.Numeric(method.init, allow = 1, integ = TRUE, posit = TRUE) ||
-     method.init > 3)
-      stop("'method.init' must be 1 or 2 or 3")
+  if (!is.Numeric(imethod, allow = 1, integ = TRUE, posit = TRUE) ||
+     imethod > 3)
+      stop("'imethod' must be 1 or 2 or 3")
 
 
   estimated.dispersion <- (dispersion == 0)
@@ -163,14 +163,14 @@ micmen <- function(rpar = 0.001, divisor = 10,
         stop("cannot handle 'mustart' or 'coefstart'")
 
       if (!length(etastart)) {
-        if ( .method.init == 3 ) {
+        if ( .imethod == 3 ) {
           index0 <- (1:n)[Xm2 <= quantile(Xm2, prob = .prob.x[2] )]
           init1 <- median(y[index0])
           init2 <- median(init1 * Xm2 / y - Xm2)
         }
-        if ( .method.init == 1 || .method.init == 2) {
+        if ( .imethod == 1 || .imethod == 2) {
           mysubset <- subset_lohi(Xm2, y, prob.x = .prob.x,
-                    type = ifelse( .method.init == 1, "median", "wtmean"),
+                    type = ifelse( .imethod == 1, "median", "wtmean"),
                     wtvec = w)
 
           mat.x <- with(mysubset, cbind(c(x1bar, x2bar), -c(y1bar, y2bar)))
@@ -196,7 +196,7 @@ micmen <- function(rpar = 0.001, divisor = 10,
 
   }), list( .init1 = init1, .link1 = link1, .earg1 = earg1,
             .init2 = init2, .link2 = link2, .earg2 = earg2,
-            .method.init = method.init,
+            .imethod = imethod,
             .prob.x = prob.x ))),
   inverse = eval(substitute(function(eta, extra = NULL) {
       theta1 <- eta2theta(eta[,1], .link1, earg = .earg1)
@@ -219,7 +219,7 @@ micmen <- function(rpar = 0.001, divisor = 10,
     misc$dispersion <- dpar
     misc$default.dispersion <- 0
     misc$estimated.dispersion <- .estimated.dispersion
-    misc$method.init <- .method.init
+    misc$imethod <- .imethod
     misc$nsimEIM <- .nsimEIM
     misc$firstDeriv <- .firstDeriv
     misc$oim <- .oim
@@ -228,7 +228,7 @@ micmen <- function(rpar = 0.001, divisor = 10,
   }), list( .link1 = link1, .earg1 = earg1,
             .link2 = link2, .earg2 = earg2,
             .dispersion = dispersion,
-            .method.init = method.init,
+            .imethod = imethod,
             .firstDeriv = firstDeriv,
             .oim = oim, .rpar = rpar,
             .nsimEIM = nsimEIM,
@@ -325,7 +325,7 @@ micmen <- function(rpar = 0.001, divisor = 10,
 
     }
 
-    w * wz
+    c(w) * wz
   }), list( .link1 = link1, .link2 = link2,
             .firstDeriv = firstDeriv,
             .nsimEIM = nsimEIM, .oim = oim ))))
@@ -350,7 +350,7 @@ skira.control <- function(save.weight = TRUE, ...)
            link1 = "identity", link2 = "identity",
            earg1 = list(),
            earg2 = list(),
-           method.init = 1,
+           imethod = 1,
            oim = TRUE,
            prob.x = c(0.15, 0.85),
            smallno = 1.0e-3,
@@ -370,10 +370,10 @@ skira.control <- function(save.weight = TRUE, ...)
   if (mode(link2) != "character" && mode(link2) != "name")
     link2 <- as.character(substitute(link2))
 
-  if (!is.Numeric(method.init, allow = 1, integ = TRUE, posit = TRUE))
-    stop("argument 'method.init' must be integer")
-  if (method.init > 5)
-    stop("argument 'method.init' must be 1, 2, 3, 4 or 5")
+  if (!is.Numeric(imethod, allow = 1, integ = TRUE, posit = TRUE))
+    stop("argument 'imethod' must be integer")
+  if (imethod > 5)
+    stop("argument 'imethod' must be 1, 2, 3, 4 or 5")
   if (!is.list(earg1))
     earg1 = list()
   if (!is.list(earg2))
@@ -422,10 +422,10 @@ skira.control <- function(save.weight = TRUE, ...)
 
         min.q <- quantile(Xm2, probs = .prob.x[1] )
         max.q <- quantile(Xm2, probs = .prob.x[2] )
-      if ( .method.init == 3 || .method.init == 2 ) {
+      if ( .imethod == 3 || .imethod == 2 ) {
 
         mysubset <- subset_lohi(Xm2, y, prob.x = .prob.x,
-                  type = ifelse( .method.init == 2, "median", "wtmean"),
+                  type = ifelse( .imethod == 2, "median", "wtmean"),
                   wtvec = w)
 
         mat.x <- with(mysubset, cbind(c(1, 1),
@@ -433,7 +433,7 @@ skira.control <- function(save.weight = TRUE, ...)
         theta.temp <- solve(mat.x, c(1, 1))
         init1 <- theta.temp[1]
         init2 <- theta.temp[2]
-    } else if ( .method.init == 1 ) {
+    } else if ( .imethod == 1 ) {
         yy <- as.vector(  y[(Xm2 > min.q) & (Xm2 < max.q)])
         xx <- as.vector(Xm2[(Xm2 > min.q) & (Xm2 < max.q)])
         ww <- as.vector(  w[(Xm2 > min.q) & (Xm2 < max.q)])
@@ -447,9 +447,9 @@ skira.control <- function(save.weight = TRUE, ...)
         mylm.wfit <- lm.wfit(x = cbind(1, xx), y = 1 / yy, w = wt.temp)
         init1 <- mylm.wfit$coef[1]
         init2 <- mylm.wfit$coef[2]
-    } else if (( .method.init == 4) || ( .method.init == 5)) {
+    } else if (( .imethod == 4) || ( .imethod == 5)) {
 
-      tempfit <- if ( .method.init == 4 ) {
+      tempfit <- if ( .imethod == 4 ) {
         fitted(loess(y ~ Xm2))
       } else {
         fitted(smooth.spline(Xm2, y, w = w, df = 2.0))
@@ -465,7 +465,7 @@ skira.control <- function(save.weight = TRUE, ...)
       init1 <- theta.temp[1]
       init2 <- theta.temp[2]
     } else {
-      stop("argument 'method.init' unmatched")
+      stop("argument 'imethod' unmatched")
     }
 
     mu <- 1 / (init1 + init2 * Xm2)
@@ -474,7 +474,7 @@ skira.control <- function(save.weight = TRUE, ...)
 
  matplot(Xm2, cbind(y, mu), col = c("blue", "green"),
          main = "Initial values in green")
- if ( .method.init == 1 ) {
+ if ( .imethod == 1 ) {
  points(Xm2, 1 / (init1 + init2 * Xm2), col = "green")
  } else {
  with(mysubset,
@@ -494,7 +494,7 @@ skira.control <- function(save.weight = TRUE, ...)
             .init2 = init2, .link2 = link2, .earg2 = earg2,
             .smallno = smallno, .prob.x = prob.x,
             .nsimEIM = nsimEIM,
-            .method.init = method.init ))),
+            .imethod = imethod ))),
   inverse = eval(substitute(function(eta, extra = NULL) {
     theta1 <- eta2theta(eta[, 1], .link1, earg = .earg1)
     theta2 <- eta2theta(eta[, 2], .link2, earg = .earg2)
@@ -515,14 +515,14 @@ skira.control <- function(save.weight = TRUE, ...)
     misc$dispersion <- dpar
     misc$default.dispersion <- 0
     misc$estimated.dispersion <- .estimated.dispersion
-    misc$method.init <- .method.init
+    misc$imethod <- .imethod
     misc$nsimEIM <- .nsimEIM
     misc$firstDeriv <- .firstDeriv
     misc$oim <- .oim
   }), list( .link1 = link1, .earg1 = earg1,
             .link2 = link2, .earg2 = earg2,
             .dispersion = dispersion, .rpar = rpar,
-            .method.init = method.init, .nsimEIM = nsimEIM,
+            .imethod = imethod, .nsimEIM = nsimEIM,
             .firstDeriv = firstDeriv, .oim = oim,
             .estimated.dispersion = estimated.dispersion ))),
   summary.dispersion = FALSE,
@@ -603,7 +603,7 @@ skira.control <- function(save.weight = TRUE, ...)
     }
 
 
-      w * wz
+      c(w) * wz
   }), list( .link1 = link1, .link2 = link2,
             .firstDeriv = firstDeriv,
             .nsimEIM = nsimEIM, .oim = oim ))))
diff --git a/R/family.normal.R b/R/family.normal.R
index 25e1f67..d91a39c 100644
--- a/R/family.normal.R
+++ b/R/family.normal.R
@@ -10,13 +10,15 @@
 
 
 VGAM.weights.function = function(w, M, n) {
+
+
     ncolw = ncol(as.matrix(w))
     if (ncolw == 1) {
         wz = matrix(w, nrow=n, ncol=M) # w_i * diag(M)
     } else if (ncolw == M) {
         wz = as.matrix(w)
     } else if (ncolw < M && M > 1) {
-        stop("ambiguous input for weights")
+        stop("ambiguous input for 'weights'")
     } else if (ncolw > M*(M+1)/2) {
         stop("too many columns")
     } else {
@@ -32,8 +34,12 @@ VGAM.weights.function = function(w, M, n) {
 
 
 
- gaussianff = function(dispersion=0, parallel = FALSE, zero = NULL)
+
+
+
+ gaussianff = function(dispersion = 0, parallel = FALSE, zero = NULL)
 {
+
     if (!is.Numeric(dispersion, allow = 1) || dispersion < 0)
         stop("bad input for argument 'dispersion'")
     estimated.dispersion = dispersion == 0
@@ -42,22 +48,22 @@ VGAM.weights.function = function(w, M, n) {
     blurb = c("Vector linear/additive model\n",
             "Links:    identity for Y1,...,YM"),
     constraints = eval(substitute(expression({
-        constraints = cm.vgam(matrix(1,M,1), x, .parallel, constraints)
+        constraints = cm.vgam(matrix(1, M, 1), x, .parallel, constraints)
         constraints = cm.zero.vgam(constraints, x, .zero, M)
     }), list( .parallel = parallel, .zero = zero ))),
     deviance = function(mu, y, w, residuals = FALSE, eta, extra = NULL) {
         M = if (is.matrix(y)) ncol(y) else 1
         n = if (is.matrix(y)) nrow(y) else length(y)
-        wz = VGAM.weights.function(w=w, M=M, n=n)
+        wz = VGAM.weights.function(w = w, M = M, n = n)
         if (residuals) {
             if (M > 1) {
-                U <- vchol(wz, M=M, n=n) 
-                temp = mux22(U, y-mu, M=M, upper = TRUE, as.matrix = TRUE)
+                U <- vchol(wz, M = M, n = n) 
+                temp = mux22(U, y-mu, M = M, upper = TRUE, as.matrix = TRUE)
                 dimnames(temp) = dimnames(y)
                 temp
             } else (y-mu) * sqrt(wz)
         } else
-            rss.vgam(y-mu, wz=wz, M=M)
+            rss.vgam(y-mu, wz = wz, M = M)
     },
     initialize = eval(substitute(expression({
         if (is.R())
@@ -81,9 +87,9 @@ VGAM.weights.function = function(w, M, n) {
             dimnames(fit$fitted.values) = dy
         dpar = .dispersion
         if (!dpar) {
-                wz = VGAM.weights.function(w=w, M=M, n=n)
-                temp = rss.vgam(y-mu, wz=wz, M=M)
-                dpar = temp / (length(y) -
+                wz = VGAM.weights.function(w = w, M = M, n = n)
+                temp5 = rss.vgam(y-mu, wz = wz, M = M)
+                dpar = temp5 / (length(y) -
                 (if(is.numeric(ncol(X_vlm_save))) ncol(X_vlm_save) else 0))
         }
         misc$dispersion = dpar
@@ -99,20 +105,48 @@ VGAM.weights.function = function(w, M, n) {
             while (exists("CQO.FastAlgorithm"))
                 remove("CQO.FastAlgorithm")
         }
-    }), list( .dispersion=dispersion,
-              .estimated.dispersion=estimated.dispersion ))),
-    loglikelihood = function(mu,y,w,residuals = FALSE, eta, extra = NULL) {
+    }), list( .dispersion = dispersion,
+              .estimated.dispersion = estimated.dispersion ))),
+    loglikelihood =
+      function(mu, y, w, residuals = FALSE, eta, extra = NULL) {
         M = if (is.matrix(y)) ncol(y) else 1
         n = if (is.matrix(y)) nrow(y) else length(y)
-        wz = VGAM.weights.function(w=w, M=M, n=n)
-        temp = rss.vgam(y-mu, wz=wz, M=M)
-        -0.5 * temp
+        wz = VGAM.weights.function(w = w, M = M, n = n)
+        temp1 = rss.vgam(y-mu, wz = wz, M = M)
+
+
+
+        if (M == 1 || ncol(wz) == M) {
+          -0.5 * temp1 + 0.5 * sum(log(wz)) - n * (M / 2) * log(2*pi)
+        } else {
+          if (all(wz[1, ] == apply(wz, 2, min)) &&
+              all(wz[1, ] == apply(wz, 2, max))) {
+            onewz = m2adefault(wz[1, , drop = FALSE], M = M)
+            onewz = onewz[,,1]  # M x M
+
+            logdet <- sum(log(eigen(onewz, symmetric = TRUE,
+                                    only.values = TRUE)$values))
+            logretval <- -0.5 * temp1 + 0.5 * n * logdet -
+                         n * (M / 2) * log(2*pi)
+            logretval
+          } else {
+            logretval = -0.5 * temp1 - n * (M / 2) * log(2*pi)
+            for (ii in 1:n) {
+              onewz = m2adefault(wz[ii, , drop = FALSE], M = M)
+              onewz = onewz[,,1]  # M x M
+              logdet <- sum(log(eigen(onewz, symmetric = TRUE,
+                                      only.values = TRUE)$values))
+              logretval = logretval + 0.5 * logdet
+            }
+            logretval
+          }
+        }
     },
     link = function(mu, extra = NULL) mu,
     vfamily = "gaussianff",
     deriv=expression({
-        wz = VGAM.weights.function(w=w, M=M, n=n)
-        mux22(cc=t(wz), xmat=y-mu, M=M, as.mat = TRUE)
+        wz = VGAM.weights.function(w = w, M = M, n = n)
+        mux22(cc=t(wz), xmat=y-mu, M = M, as.matrix = TRUE)
     }),
     weight= expression({
         wz
@@ -125,41 +159,46 @@ VGAM.weights.function = function(w, M, n) {
 
 
 
-dposnorm = function(x, mean = 0, sd = 1, log = FALSE) {
-    log.arg = log
-    rm(log)
-    if (!is.logical(log.arg) || length(log.arg)!=1)
-        stop("bad input for argument 'log'")
-    L = max(length(x), length(mean), length(sd))
-    x = rep(x, len=L); mean = rep(mean, len=L); sd = rep(sd, len=L);
 
-    if (log.arg) {
-        ifelse(x < 0, log(0), dnorm(x, m=mean, sd = sd, log = TRUE) -
-               pnorm(mean/sd, log = TRUE))
-    } else {
-        ifelse(x < 0, 0, dnorm(x=x, me=mean, sd = sd) / pnorm(mean/sd))
-    }
+
+
+dposnorm = function(x, mean = 0, sd = 1, log = FALSE) {
+  log.arg = log
+  rm(log)
+  if (!is.logical(log.arg) || length(log.arg)!=1)
+    stop("bad input for argument 'log'")
+  L = max(length(x), length(mean), length(sd))
+  x = rep(x, len = L); mean = rep(mean, len = L); sd = rep(sd, len = L);
+
+  if (log.arg) {
+    ifelse(x < 0, log(0), dnorm(x, m=mean, sd = sd, log = TRUE) -
+           pnorm(mean/sd, log = TRUE))
+  } else {
+    ifelse(x < 0, 0, dnorm(x = x, me=mean, sd = sd) / pnorm(mean/sd))
+  }
 }
 
 pposnorm = function(q, mean = 0, sd = 1) {
-    L = max(length(q), length(mean), length(sd))
-    q = rep(q, len=L); mean = rep(mean, len=L); sd = rep(sd, len=L);
-    ifelse(q < 0, 0, (pnorm(q, mean = mean, sd = sd) -
-                      pnorm(0, mean = mean, sd = sd)) / pnorm(q = mean/sd))
+  L = max(length(q), length(mean), length(sd))
+  q = rep(q, len = L); mean = rep(mean, len = L); sd = rep(sd, len = L);
+  ifelse(q < 0, 0, (pnorm(q, mean = mean, sd = sd) -
+                    pnorm(0, mean = mean, sd = sd)) / pnorm(q = mean/sd))
 }
 
 qposnorm = function(p, mean = 0, sd = 1) {
-    if (!is.Numeric(p, posit = TRUE) || max(p) >= 1)
-        stop("bad input for argument 'p'")
-    qnorm(p=p+(1-p)*pnorm(0, mean = mean, sd = sd), mean = mean, sd = sd)
+  if (!is.Numeric(p, posit = TRUE) || max(p) >= 1)
+      stop("bad input for argument 'p'")
+  qnorm(p = p + (1-p) * pnorm(0, mean = mean, sd = sd),
+        mean = mean, sd = sd)
 }
 
 rposnorm = function(n, mean = 0, sd = 1) {
-    if (!is.Numeric(n, integ = TRUE, posit = TRUE))
-        stop("bad input for argument 'n'")
-    mean = rep(mean, length=n)
-    sd = rep(sd, length=n)
-    qnorm(p=runif(n, min=pnorm(0, m=mean, sd = sd)), m=mean, sd = sd)
+  if (!is.Numeric(n, integ = TRUE, posit = TRUE))
+      stop("bad input for argument 'n'")
+  mean = rep(mean, length = n)
+  sd = rep(sd, length = n)
+  qnorm(p = runif(n, min = pnorm(0, m = mean, sd = sd)),
+        m = mean, sd = sd)
 }
 
 
@@ -174,7 +213,7 @@ rposnorm = function(n, mean = 0, sd = 1) {
  posnormal1 = function(lmean = "identity", lsd = "loge",
                        emean = list(), esd = list(),
                        imean = NULL, isd = NULL,
-                       nsimEIM=100, zero = NULL)
+                       nsimEIM = 100, zero = NULL)
 {
  warning("this VGAM family function is not working properly yet")
 
@@ -182,15 +221,18 @@ rposnorm = function(n, mean = 0, sd = 1) {
         lmean = as.character(substitute(lmean))
     if (mode(lsd) != "character" && mode(lsd) != "name")
         lsd = as.character(substitute(lsd))
+
     if (length(zero) && !is.Numeric(zero, integer = TRUE, posit = TRUE))
         stop("bad input for argument 'zero'")
     if (length(isd) && !is.Numeric(isd, posit = TRUE))
         stop("bad input for argument 'isd'")
+
     if (!is.list(emean)) emean = list()
     if (!is.list(esd)) esd = list()
+
     if (length(nsimEIM))
-        if (!is.Numeric(nsimEIM, allow = 1, integ = TRUE) || nsimEIM <= 10)
-            stop("'nsimEIM' should be an integer greater than 10")
+      if (!is.Numeric(nsimEIM, allow = 1, integ = TRUE) || nsimEIM <= 10)
+        stop("argument 'nsimEIM' should be an integer greater than 10")
 
     new("vglmff",
     blurb = c("Positive (univariate) normal distribution\n\n",
@@ -209,10 +251,10 @@ rposnorm = function(n, mean = 0, sd = 1) {
             c(namesof("mean", .lmean, earg = .emean, tag = FALSE),
               namesof("sd",   .lsd,   earg = .esd,   tag = FALSE))
         if (!length(etastart)) {
-            init.me = if (length( .imean)) rep( .imean, len=n) else NULL
-            init.sd = if (length( .isd  )) rep( .isd  , len=n) else NULL
-            if (!length(init.me)) init.me = rep(quantile(y, probs=0.40), len=n)
-            if (!length(init.sd)) init.sd = rep(sd(y)*1.2, len=n)
+            init.me = if (length( .imean)) rep( .imean, len = n) else NULL
+            init.sd = if (length( .isd  )) rep( .isd  , len = n) else NULL
+            if (!length(init.me)) init.me = rep(quantile(y, probs=0.40), len = n)
+            if (!length(init.sd)) init.sd = rep(sd(y)*1.2, len = n)
             etastart = cbind(theta2eta(init.me, .lmean, earg = .emean),
                              theta2eta(init.sd, .lsd,   earg = .esd))
         }
@@ -231,7 +273,7 @@ rposnorm = function(n, mean = 0, sd = 1) {
     }), list( .lmean = lmean, .lsd = lsd, .emean = emean, .esd = esd,
               .nsimEIM = nsimEIM ))),
     loglikelihood=eval(substitute(
-        function(mu,y,w,residuals = FALSE, eta, extra = NULL) {
+        function(mu, y, w, residuals = FALSE, eta, extra = NULL) {
         mymu = eta2theta(eta[,1], .lmean, earg = .emean)
         mysd = eta2theta(eta[,2], .lsd,   earg = .esd)
         if (residuals) stop("loglikelihood residuals ",
@@ -256,7 +298,7 @@ rposnorm = function(n, mean = 0, sd = 1) {
     }), list( .lmean = lmean, .lsd = lsd, .emean = emean, .esd = esd ))),
     weight = eval(substitute(expression({
         run.varcov = 0
-        ind1 = iam(NA, NA, M=M, both = TRUE, diag = TRUE)
+        ind1 = iam(NA, NA, M = M, both = TRUE, diag = TRUE)
         if (length( .nsimEIM )) {
             for(ii in 1:( .nsimEIM )) {
                 ysim <- rposnorm(n, m=mymu, sd = mysd)
@@ -287,7 +329,7 @@ rposnorm = function(n, mean = 0, sd = 1) {
             wz[,iam(1,1,M)] = ed2l.dmu2  * dmu.deta^2
             wz[,iam(2,2,M)] = ed2l.dsd2  * dsd.deta^2
             wz[,iam(1,2,M)] = ed2l.dmusd * dsd.deta * dmu.deta
-            wz = w * wz
+            wz = c(w) * wz
         }
         wz
     }), list( .lmean = lmean, .lsd = lsd, .emean = emean, .esd = esd,
@@ -304,15 +346,15 @@ dbetanorm = function(x, shape1, shape2, mean = 0, sd = 1, log = FALSE) {
         stop("bad input for argument 'log'")
     ans =
     if (is.R() && log.arg) {
-        dnorm(x=x, mean = mean, sd = sd, log = TRUE) +
+        dnorm(x = x, mean = mean, sd = sd, log = TRUE) +
         (shape1-1) * pnorm(q = x, mean = mean, sd = sd, log = TRUE) +
         (shape2-1) * pnorm(q = x, mean = mean, sd = sd, log = TRUE,
                            lower = FALSE) -
         lbeta(shape1, shape2)
     } else {
-        dnorm(x=x, mean = mean, sd = sd) *
-        pnorm(q=x, mean = mean, sd = sd)^(shape1-1) *
-        pnorm(q=x, mean = mean, sd = sd,
+        dnorm(x = x, mean = mean, sd = sd) *
+        pnorm(q = x, mean = mean, sd = sd)^(shape1-1) *
+        pnorm(q = x, mean = mean, sd = sd,
               lower = FALSE)^(shape2-1) / beta(shape1, shape2)
     }
     if (!is.R() && log.arg) ans = log(ans)
@@ -322,7 +364,7 @@ dbetanorm = function(x, shape1, shape2, mean = 0, sd = 1, log = FALSE) {
 
 pbetanorm = function(q, shape1, shape2, mean = 0, sd = 1,
     lower.tail = TRUE, log.p = FALSE) {
-    pbeta(q=pnorm(q=q, mean = mean, sd = sd),
+    pbeta(q=pnorm(q = q, mean = mean, sd = sd),
                   shape1=shape1, shape2=shape2,
                   lower.tail = lower.tail, log.p = log.p)
 }
@@ -345,7 +387,7 @@ rbetanorm = function(n, shape1, shape2, mean = 0, sd = 1) {
 
 
 
-dtikuv = function(x, d, mean = 0, sigma=1, log = FALSE) {
+dtikuv = function(x, d, mean = 0, sigma = 1, log = FALSE) {
     if (!is.logical(log.arg <- log))
         stop("bad input for argument 'log'")
     rm(log)
@@ -353,14 +395,14 @@ dtikuv = function(x, d, mean = 0, sigma=1, log = FALSE) {
     if (!is.Numeric(d, allow = 1) || max(d) >= 2)
         stop("bad input for argument 'd'")
     L = max(length(x), length(mean), length(sigma))
-    x = rep(x, len=L); mean = rep(mean, len=L); sigma = rep(sigma, len=L);
+    x = rep(x, len = L); mean = rep(mean, len = L); sigma = rep(sigma, len = L);
     hh = 2 - d
     KK = 1 / (1 + 1/hh + 0.75/hh^2)
     if (log.arg) {
-        dnorm(x=x, mean = mean, sd = sigma, log = TRUE) + log(KK) +
+        dnorm(x = x, mean = mean, sd = sigma, log = TRUE) + log(KK) +
         2 * log1p(((x-mean)/sigma)^2 / (2*hh))
     } else {
-        dnorm(x=x, mean = mean, sd = sigma) * KK *
+        dnorm(x = x, mean = mean, sd = sigma) * KK *
         (1 + ((x-mean)/sigma)^2 / (2*hh))^2
     }
 }
@@ -370,7 +412,7 @@ ptikuv = function(q, d, mean = 0, sigma=1) {
     if (!is.Numeric(d, allow = 1) || max(d) >= 2)
         stop("bad input for argument 'd'")
     L = max(length(q), length(mean), length(sigma))
-    q = rep(q, len=L); mean = rep(mean, len=L); sigma = rep(sigma, len=L);
+    q = rep(q, len = L); mean = rep(mean, len = L); sigma = rep(sigma, len = L);
     zedd1 = 0.5 * ((q - mean) / sigma)^2
     ans = q*0 + 0.5
     hh = 2 - d
@@ -389,7 +431,7 @@ ptikuv = function(q, d, mean = 0, sigma=1) {
 }
 
 
-qtikuv = function(p, d, mean = 0, sigma=1, ...) {
+qtikuv = function(p, d, mean = 0, sigma = 1, ...) {
     if (!is.Numeric(p, posit = TRUE) || max(p) >= 1)
         stop("bad input for argument 'p'")
     if (!is.Numeric(d, allow = 1) || max(d) >= 2)
@@ -399,25 +441,25 @@ qtikuv = function(p, d, mean = 0, sigma=1, ...) {
     if (!is.Numeric(sigma))
         stop("bad input for argument 'sigma'")
     L = max(length(p), length(mean), length(sigma))
-    p = rep(p, len=L); mean = rep(mean, len=L); sigma = rep(sigma, len=L);
-    ans = rep(0.0, len=L)
-    myfun = function(x, d, mean = 0, sigma=1, p)
-        ptikuv(q=x, d=d, mean = mean, sigma=sigma) - p
+    p = rep(p, len = L); mean = rep(mean, len = L); sigma = rep(sigma, len = L);
+    ans = rep(0.0, len = L)
+    myfun = function(x, d, mean = 0, sigma = 1, p)
+        ptikuv(q = x, d=d, mean = mean, sigma=sigma) - p
     for(i in 1:L) {
         Lower = ifelse(p[i] <= 0.5, mean[i] - 3 * sigma[i], mean[i])
-        while (ptikuv(q=Lower, d=d, mean = mean[i], sigma=sigma[i]) > p[i])
+        while (ptikuv(q = Lower, d=d, mean = mean[i], sigma=sigma[i]) > p[i])
             Lower = Lower - sigma[i]
         Upper = ifelse(p[i] >= 0.5, mean[i] + 3 * sigma[i], mean[i])
-        while (ptikuv(q=Upper, d=d, mean = mean[i], sigma=sigma[i]) < p[i])
+        while (ptikuv(q = Upper, d=d, mean = mean[i], sigma=sigma[i]) < p[i])
             Upper = Upper + sigma[i]
-        ans[i] = uniroot(f=myfun, lower=Lower, upper=Upper, d=d, p=p[i],
+        ans[i] = uniroot(f=myfun, lower = Lower, upper = Upper, d=d, p=p[i],
                          mean = mean[i], sigma=sigma[i], ...)$root
     }
     ans
 }
 
 
-rtikuv = function(n, d, mean = 0, sigma=1, Smallno=1.0e-6) {
+rtikuv = function(n, d, mean = 0, sigma = 1, Smallno=1.0e-6) {
     if (!is.Numeric(n, posit = TRUE, integ = TRUE))
         stop("bad input for argument 'n'")
     if (!is.Numeric(d, allow = 1) || max(d) >= 2)
@@ -430,7 +472,7 @@ rtikuv = function(n, d, mean = 0, sigma=1, Smallno=1.0e-6) {
         Smallno > 0.01 ||
         Smallno < 2 * .Machine$double.eps)
         stop("bad input for argument 'Smallno'")
-    ans = rep(0.0, len=n)
+    ans = rep(0.0, len = n)
 
     ptr1 = 1; ptr2 = 0
     hh = 2 - d
@@ -441,12 +483,12 @@ rtikuv = function(n, d, mean = 0, sigma=1, Smallno=1.0e-6) {
                   KK / (sqrt(2 * pi) * sigma))
     while (ptr2 < n) {
         Lower = mean - 5 * sigma
-        while (ptikuv(q=Lower, d=d, mean = mean, sigma=sigma) > Smallno)
+        while (ptikuv(q = Lower, d=d, mean = mean, sigma=sigma) > Smallno)
             Lower = Lower - sigma
         Upper = mean + 5 * sigma
-        while (ptikuv(q=Upper, d=d, mean = mean, sigma=sigma) < 1-Smallno)
+        while (ptikuv(q = Upper, d=d, mean = mean, sigma=sigma) < 1-Smallno)
             Upper = Upper + sigma
-        x = runif(2*n, min=Lower, max=Upper)
+        x = runif(2*n, min = Lower, max = Upper)
         index = runif(2*n, max=ymax) < dtikuv(x,d=d,m=mean,s=sigma)
         sindex = sum(index)
         if (sindex) {
@@ -495,13 +537,13 @@ rtikuv = function(n, d, mean = 0, sigma=1, Smallno=1.0e-6) {
             c(namesof("mean",   .lmean, earg = .emean,  tag = FALSE),
               namesof("sigma", .lsigma, earg = .esigma, tag = FALSE))
         if (!length(etastart)) {
-            sigma.init = if (length(.isigma)) rep(.isigma, length=n) else {
+            sigma.init = if (length(.isigma)) rep(.isigma, length = n) else {
                 hh = 2 - .d
                 KK = 1 / (1 + 1/hh + 0.75/hh^2)
                 K2 = 1 + 3/hh + 15/(4*hh^2)
-                rep(sqrt(var(y) / (KK*K2)), len=n)
+                rep(sqrt(var(y) / (KK*K2)), len = n)
             }
-            mean.init = rep(weighted.mean(y, w), len=n) 
+            mean.init = rep(weighted.mean(y, w), len = n) 
             etastart = cbind(theta2eta(mean.init,  .lmean,  earg = .emean),
                              theta2eta(sigma.init, .lsigma, earg = .esigma))
         }
@@ -519,7 +561,7 @@ rtikuv = function(n, d, mean = 0, sigma=1, Smallno=1.0e-6) {
     }), list( .lmean = lmean, .lsigma=lsigma, .d=d,
              .emean = emean, .esigma=esigma ))),
     loglikelihood=eval(substitute(
-        function(mu,y,w,residuals = FALSE, eta, extra = NULL) {
+        function(mu, y, w, residuals = FALSE, eta, extra = NULL) {
         mymu = eta2theta(eta[,1], .lmean, earg = .emean)
         sigma = eta2theta(eta[,2], .lsigma, earg = .esigma)
         if (residuals) stop("loglikelihood residuals ",
@@ -539,8 +581,8 @@ rtikuv = function(n, d, mean = 0, sigma=1, Smallno=1.0e-6) {
         gzedd = zedd / (1 + 0.5*zedd^2 / hh)
         dl.dmu = zedd / sigma - 2 * gzedd / (hh*sigma)
         dl.dsigma = (zedd^2 - 1 - 2 * zedd * gzedd / hh) / sigma
-        w * cbind(dl.dmu    * dmu.deta,
-                  dl.dsigma * dsigma.deta)
+        c(w) * cbind(dl.dmu    * dmu.deta,
+                     dl.dsigma * dsigma.deta)
     }), list( .lmean = lmean, .lsigma=lsigma, .d=d,
              .emean = emean, .esigma=esigma ))),
     weight = eval(substitute(expression({
@@ -552,36 +594,37 @@ rtikuv = function(n, d, mean = 0, sigma=1, Smallno=1.0e-6) {
         wz = matrix(as.numeric(NA), n, M)  # diagonal matrix
         wz[,iam(1,1,M)] = ed2l.dmymu2 * dmu.deta^2
         wz[,iam(2,2,M)] = ed2l.dnu2 * dsigma.deta^2
-        w * wz
+        c(w) * wz
     }), list( .lmean = lmean, .lsigma=lsigma,
              .emean = emean, .esigma=esigma ))))
 }
 
 
 
-dfnorm = function(x, mean = 0, sd = 1, a1=1, a2=1) {
+dfnorm = function(x, mean = 0, sd = 1, a1 = 1, a2=1) {
     if (!is.Numeric(a1, posit = TRUE) || !is.Numeric(a2, posit = TRUE))
         stop("bad input for arguments 'a1' and 'a2'")
     if (any(a1 <= 0 | a2 <= 0))
         stop("arguments 'a1' and 'a2' must have positive values only")
-    ans = dnorm(x=x/(a1*sd) - mean/sd)/(a1*sd) +
-          dnorm(x=x/(a2*sd) + mean/sd)/(a2*sd)
+    ans = dnorm(x = x/(a1*sd) - mean/sd)/(a1*sd) +
+          dnorm(x = x/(a2*sd) + mean/sd)/(a2*sd)
     ans[x < 0] = 0
     ans[a1 <= 0 | a2 <= 0 | is.na(a1) | is.na(a2)] = NA
     ans
 }
 
-pfnorm = function(q, mean = 0, sd = 1, a1=1, a2=1) {
+pfnorm = function(q, mean = 0, sd = 1, a1 = 1, a2=1) {
     if (!is.Numeric(a1, posit = TRUE) || !is.Numeric(a2, posit = TRUE))
         stop("bad input for arguments 'a1' and 'a2'")
     if (any(a1 <= 0 | a2 <= 0))
         stop("arguments 'a1' and 'a2' must have positive values only")
     L = max(length(q), length(mean), length(sd))
-    q = rep(q, len=L); mean = rep(mean, len=L); sd = rep(sd, len=L);
-    ifelse(q < 0, 0, pnorm(q=q/(a1*sd) - mean/sd) - pnorm(q=-q/(a2*sd) - mean/sd))
+    q = rep(q, len = L); mean = rep(mean, len = L); sd = rep(sd, len = L);
+    ifelse(q < 0, 0,
+           pnorm(q = q/(a1*sd) - mean/sd) - pnorm(q=-q/(a2*sd) - mean/sd))
 }
 
-qfnorm = function(p, mean = 0, sd = 1, a1=1, a2=1, ...) {
+qfnorm = function(p, mean = 0, sd = 1, a1 = 1, a2 = 1, ...) {
     if (!is.Numeric(p, posit = TRUE) || max(p) >= 1)
         stop("bad input for argument 'p'")
     if (!is.Numeric(a1, posit = TRUE) || !is.Numeric(a2, posit = TRUE))
@@ -590,27 +633,27 @@ qfnorm = function(p, mean = 0, sd = 1, a1=1, a2=1, ...) {
         stop("arguments 'a1' and 'a2' must have positive values only")
 
     L = max(length(p), length(mean), length(sd), length(a1), length(a2))
-    p = rep(p, len=L); mean = rep(mean, len=L); sd = rep(sd, len=L);
-    a1 = rep(a1, len=L); a2 = rep(a2, len=L);
-    ans = rep(0.0, len=L)
-    myfun = function(x, mean = 0, sd = 1, a1=1, a2=2, p)
-        pfnorm(q=x, mean = mean, sd = sd, a1 = a1, a2 = a2) - p
+    p = rep(p, len = L); mean = rep(mean, len = L); sd = rep(sd, len = L);
+    a1 = rep(a1, len = L); a2 = rep(a2, len = L);
+    ans = rep(0.0, len = L)
+    myfun = function(x, mean = 0, sd = 1, a1 = 1, a2=2, p)
+        pfnorm(q = x, mean = mean, sd = sd, a1 = a1, a2 = a2) - p
     for(i in 1:L) {
         mytheta = mean[i]/sd[i]
         EY = sd[i] * ((a1[i]+a2[i]) * (mytheta * pnorm(mytheta) + dnorm(mytheta)) -
              a2[i] * mytheta)
         Upper = 2 * EY
-        while (pfnorm(q=Upper, mean = mean[i], sd = sd[i],
+        while (pfnorm(q = Upper, mean = mean[i], sd = sd[i],
                       a1 = a1[i], a2 = a2[i]) < p[i])
             Upper = Upper + sd[i]
-        ans[i] = uniroot(f=myfun, lower=0, upper=Upper, mean = mean[i],
+        ans[i] = uniroot(f=myfun, lower = 0, upper = Upper, mean = mean[i],
                          sd = sd[i], a1 = a1[i], a2 = a2[i],
                          p=p[i], ...)$root
     }
     ans
 }
 
-rfnorm = function(n, mean = 0, sd = 1, a1=1, a2=1) {
+rfnorm = function(n, mean = 0, sd = 1, a1 = 1, a2=1) {
     if (!is.Numeric(n, integ = TRUE, posit = TRUE))
         stop("bad input for argument 'n'")
     if (!is.Numeric(a1, posit = TRUE) || !is.Numeric(a2, posit = TRUE))
@@ -622,19 +665,22 @@ rfnorm = function(n, mean = 0, sd = 1, a1=1, a2=1) {
 }
 
 
+
+
  fnormal1 =  function(lmean = "identity", lsd = "loge",
-                      emean = list(), esd = list(),
-                      imean = NULL, isd = NULL, a1=1, a2=1,
-                      nsimEIM=500, method.init = 1, zero = NULL)
+                      emean = list(),     esd = list(),
+                      imean = NULL,       isd = NULL,
+                      a1 = 1, a2 = 1,
+                      nsimEIM = 500, imethod = 1, zero = NULL)
 {
     if (!is.Numeric(a1, posit = TRUE, allow = 1) ||
        !is.Numeric(a2, posit = TRUE, allow = 1))
         stop("bad input for arguments 'a1' and 'a2'")
     if (any(a1 <= 0 | a2 <= 0))
         stop("arguments 'a1' and 'a2' must each be a positive value")
-    if (!is.Numeric(method.init, allow = 1, integ = TRUE, posit = TRUE) ||
-       method.init > 2)
-        stop("'method.init' must be 1 or 2")
+    if (!is.Numeric(imethod, allow = 1, integ = TRUE, posit = TRUE) ||
+       imethod > 2)
+        stop("argument 'imethod' must be 1 or 2")
 
     if (mode(lmean) != "character" && mode(lmean) != "name")
         lmean = as.character(substitute(lmean))
@@ -642,10 +688,12 @@ rfnorm = function(n, mean = 0, sd = 1, a1=1, a2=1) {
         lsd = as.character(substitute(lsd))
     if (length(zero) && !is.Numeric(zero, integer = TRUE, posit = TRUE))
         stop("bad input for argument 'zero'")
+
     if (!is.list(emean)) emean = list()
     if (!is.list(esd)) esd = list()
+
     if (!is.Numeric(nsimEIM, allow = 1, integ = TRUE) || nsimEIM <= 10)
-        stop("'nsimEIM' should be an integer greater than 10")
+        stop("argument 'nsimEIM' should be an integer greater than 10")
     if (length(imean) && !is.Numeric(imean))
         stop("bad input for 'imean'")
     if (length(isd) && !is.Numeric(isd, posit = TRUE))
@@ -664,8 +712,8 @@ rfnorm = function(n, mean = 0, sd = 1, a1=1, a2=1) {
             stop("response must be a vector or a one-column ",
                  "matrix with positive values")
         if (!length(etastart)) {
-            junk = if (is.R()) lm.wfit(x=x, y=y, w=w) else
-                              lm.wfit(x=x, y=y, w=w, method="qr")
+            junk = if (is.R()) lm.wfit(x = x, y=y, w = w) else
+                              lm.wfit(x = x, y=y, w = w, method="qr")
 
 
  if (FALSE) {
@@ -678,24 +726,24 @@ rfnorm = function(n, mean = 0, sd = 1, a1=1, a2=1) {
             Ahat = m1d^2 / m2d
             thetahat = sqrt(max(1/Ahat -1, 0.1))
             mean.init = rep(if(length( .imean)) .imean else
-                thetahat * sqrt((stddev^2 + meany^2) * Ahat), len=n)
+                thetahat * sqrt((stddev^2 + meany^2) * Ahat), len = n)
             sd.init = rep(if(length( .isd)) .isd else
-                sqrt((stddev^2 + meany^2) * Ahat), len=n)
+                sqrt((stddev^2 + meany^2) * Ahat), len = n)
 }
 
 
             stddev = sqrt( sum(w * junk$resid^2) / junk$df.residual )
             meany = weighted.mean(y, w)
             mean.init = rep(if(length( .imean)) .imean else
-                {if( .method.init == 1) median(y) else meany}, len=n)
+                {if( .imethod == 1) median(y) else meany}, len = n)
             sd.init = rep(if(length( .isd)) .isd else
-                {if( .method.init == 1)  stddev else 1.2*sd(y)}, len=n)
+                {if( .imethod == 1)  stddev else 1.2*sd(y)}, len = n)
             etastart = cbind(theta2eta(mean.init, .lmean, earg = .emean),
                              theta2eta(sd.init,   .lsd,   earg = .esd))
         }
     }), list( .lmean = lmean, .lsd = lsd, .emean = emean, .esd = esd,
               .imean = imean, .isd = isd, .a1 = a1, .a2 = a2,
-              .method.init = method.init ))),
+              .imethod = imethod ))),
     inverse = eval(substitute(function(eta, extra = NULL) {
         mymu = eta2theta(eta[,1], .lmean, earg = .emean)
         mysd = eta2theta(eta[,2], .lsd, earg = .esd)
@@ -710,15 +758,15 @@ rfnorm = function(n, mean = 0, sd = 1, a1=1, a2=1) {
         misc$expected = TRUE
         misc$nsimEIM = .nsimEIM
         misc$simEIM = TRUE
-        misc$method.init = .method.init
+        misc$imethod = .imethod
         misc$a1 = .a1
         misc$a2 = .a2
     }), list( .lmean = lmean, .lsd = lsd,
               .emean = emean, .esd = esd,
-              .method.init = method.init, .nsimEIM = nsimEIM,
+              .imethod = imethod, .nsimEIM = nsimEIM,
               .a1 = a1, .a2 = a2 ))),
     loglikelihood=eval(substitute(
-        function(mu,y,w,residuals = FALSE, eta, extra = NULL) {
+        function(mu, y, w, residuals = FALSE, eta, extra = NULL) {
         mymu = eta2theta(eta[,1], .lmean, earg = .emean)
         mysd = eta2theta(eta[,2], .lsd, earg = .esd)
         a1vec = .a1
@@ -756,7 +804,7 @@ rfnorm = function(n, mean = 0, sd = 1, a1=1, a2=1) {
                      name=c("mymu","mysd"), hessian= TRUE)
         run.mean = 0
         for(ii in 1:( .nsimEIM )) {
-            ysim = rfnorm(n=n, mean = mymu, sd = mysd,
+            ysim = rfnorm(n = n, mean = mymu, sd = mysd,
                           a1 = a1vec, a2 = a2vec)
             eval.de3 = eval(de3)
             d2l.dthetas2 =  attr(eval.de3, "hessian")
@@ -774,9 +822,9 @@ rfnorm = function(n, mean = 0, sd = 1, a1=1, a2=1) {
             matrix(colMeans(run.mean), n, dimm(M), byrow = TRUE) else
             run.mean
 
-        index0 = iam(NA, NA, M=M, both = TRUE, diag = TRUE)
+        index0 = iam(NA, NA, M = M, both = TRUE, diag = TRUE)
         wz = wz * dtheta.detas[,index0$row] * dtheta.detas[,index0$col]
-        w * wz
+        c(w) * wz
     }), list( .nsimEIM = nsimEIM, .a1 = a1, .a2 = a2 ))))
 }
 
@@ -791,16 +839,16 @@ lqnorm.control = function(trace = TRUE, ...)
 
 
 lqnorm = function(qpower = 2, link = "identity", earg = list(),
-                  method.init = 1, imu = NULL, shrinkage.init = 0.95)
+                  imethod = 1, imu = NULL, shrinkage.init = 0.95)
 {
     if (mode(link) != "character" && mode(link) != "name")
         link = as.character(substitute(link))
     if (!is.list(earg)) eerg = list()
     if (!is.Numeric(qpower, allow = 1) || qpower <= 1)
         stop("bad input for argument 'qpower'")
-    if (!is.Numeric(method.init, allow = 1, integ = TRUE, posit = TRUE) ||
-        method.init > 3)
-        stop("'method.init' must be 1 or 2 or 3")
+    if (!is.Numeric(imethod, allow = 1, integ = TRUE, posit = TRUE) ||
+        imethod > 3)
+        stop("argument 'imethod' must be 1 or 2 or 3")
     if (!is.Numeric(shrinkage.init, allow = 1) || shrinkage.init < 0 ||
        shrinkage.init > 1) stop("bad input for argument 'shrinkage.init'")
 
@@ -820,14 +868,14 @@ lqnorm = function(qpower = 2, link = "identity", earg = list(),
         if (!length(etastart))  {
             meany = weighted.mean(y, w)
             mean.init = rep(if(length( .imu)) .imu else
-                {if( .method.init == 2) median(y) else 
-                 if ( .method.init == 1) meany else
+                {if( .imethod == 2) median(y) else 
+                 if ( .imethod == 1) meany else
                  .sinit * meany + (1 - .sinit) * y
-                }, len=n)
+                }, len = n)
             etastart = theta2eta(mean.init, link = .link, earg = .earg)
         }
-    }), list( .method.init = method.init, .imu=imu,
-              .sinit=shrinkage.init, .link = link, .earg = earg ))),
+    }), list( .imethod = imethod, .imu = imu,
+              .sinit = shrinkage.init, .link = link, .earg = earg ))),
     inverse = eval(substitute(function(eta, extra = NULL) {
         mu = eta2theta(eta, link = .link, earg = .earg)
         mu
@@ -840,11 +888,11 @@ lqnorm = function(qpower = 2, link = "identity", earg = list(),
         names(misc$link) = predictors.names
         misc$earg = list(mu = .earg)
         misc$qpower = .qpower
-        misc$method.init = .method.init
+        misc$imethod = .imethod
         misc$objectiveFunction = sum( w * (abs(y - mu))^(.qpower) )
     }), list( .qpower = qpower,
               .link = link, .earg = earg,
-              .method.init = method.init ))),
+              .imethod = imethod ))),
     link = eval(substitute(function(mu, extra = NULL) {
         theta2eta(mu, link = .link, earg = .earg)
     }, list( .link = link, .earg = earg ))),
@@ -865,170 +913,533 @@ lqnorm = function(qpower = 2, link = "identity", earg = list(),
 
 
 
- tobit <- function(Lower = 0, Upper = Inf, lmu = "identity",
-                   lsd = "loge", emu = list(), esd=list(),
-                   method.init = 1, zero = 2) {
 
 
-    if (mode(lmu) != "character" && mode(lmu) != "name")
-        lmu = as.character(substitute(lmu))
-    if (mode(lsd) != "character" && mode(lsd) != "name")
-        lsd = as.character(substitute(lsd))
-    if (!is.Numeric(method.init, allow = 1, integer = TRUE, posi = TRUE) ||
-        method.init > 2)
-        stop("'method.init' must be 1 or 2")
-    if (length(Lower) != 1 || length(Upper) != 1 ||
-       !is.numeric(Lower) || !is.numeric(Upper) || Lower >= Upper)
-        stop("Lower and Upper must have length 1 and ",
-             "be numeric with Lower < Upper")
-    if (length(zero) && !is.Numeric(zero, integer = TRUE, posit = TRUE))
-        stop("bad input for argument 'zero'")
-    if (!is.list(emu)) emu = list()
-    if (!is.list(esd)) esd = list()
 
-    new("vglmff",
-    blurb = c("Tobit model\n\n",
-            "Links:    ", namesof("mu", lmu, earg = emu, tag = TRUE), "; ",
-                          namesof("sd", lsd, earg = esd, tag = TRUE), "\n",
-            "Conditional variance: sd^2"),
-    constraints = eval(substitute(expression({
-        constraints = cm.zero.vgam(constraints, x, .zero, M)
-    }), list( .zero = zero ))),
-    initialize = eval(substitute(expression({
-        y = cbind(y)
-        if (ncol(y)!=1)stop("the response must be a vector or a 1-column matrix")
-        extra$censoredL = (y <= .Lower)
-        extra$censoredU = (y >= .Upper)
-        if (min(y) < .Lower) {
-             warning("replacing response values less than the value ",
-                           .Lower, " by ", .Lower)
-             y[y < .Lower] = .Lower
-        }
-        if (max(y) > .Upper) {
-             warning("replacing response values greater than the value ", 
-                            .Upper, " by ", .Upper)
-             y[y > .Upper] = .Upper
-        }
-        predictors.names = c(namesof("mu", .lmu, earg = .emu, tag = FALSE),
-                             namesof("sd", .lsd, earg = .esd, tag = FALSE))
-        if (!length(etastart)) {
-            anyc = extra$censoredL | extra$censoredU
-            i11 = if ( .method.init == 1) anyc else FALSE # can be all data
-            junk = lm.wfit(x=cbind(x[!i11,]), y=y[!i11], w=w[!i11])
-            sd.y.est = sqrt( sum(w[!i11] * junk$resid^2) / junk$df.residual )
-            etastart = cbind(mu=y, rep(theta2eta(sd.y.est, .lsd, earg = .esd),
-                                       length = n))
-            if (any(anyc)) etastart[anyc,1] = x[anyc,, drop = FALSE] %*% junk$coeff
-        }
-   }), list( .Lower=Lower, .Upper=Upper, .lmu = lmu, .lsd=lsd,
-             .emu = emu, .esd = esd, .method.init = method.init ))),
-    inverse = eval(substitute( function(eta, extra = NULL) {
-        eta2theta(eta[,1], .lmu, earg = .emu)
-    }, list( .lmu = lmu, .emu = emu ))),
-    last = eval(substitute(expression({
-        misc$link =    c("mu" = .lmu, "sd" = .lsd)
-        misc$earg = list("mu" = .emu, "sd" = .esd)
-        misc$expected = TRUE
-        misc$Lower = .Lower
-        misc$Upper = .Upper
-    }), list( .lmu = lmu, .lsd=lsd,
-              .emu = emu, .esd = esd,
-              .Lower=Lower, .Upper=Upper ))),
-    loglikelihood = eval(substitute(
-        function(mu, y, w, residuals = FALSE, eta, extra = NULL) {
-        cenL = extra$censoredL
-        cenU = extra$censoredU
-        cen0 = !cenL & !cenU   # uncensored obsns
-        mum = eta2theta(eta[,1], .lmu, earg = .emu)
-        sd = eta2theta(eta[,2], .lsd, earg = .esd)
-        ell1 = -log(sd[cen0]) - 0.5 * ((y[cen0] - mum[cen0])/sd[cen0])^2
-        ell2 = log1p(-pnorm((mum[cenL] - .Lower)/sd[cenL]))
-        ell3 = log1p(-pnorm(( .Upper -  mum[cenU])/sd[cenU]))
-        if (residuals) stop("loglikelihood residuals not ",
-                            "implemented yet") else
-        sum(w[cen0] * ell1) + sum(w[cenL] * ell2) + sum(w[cenU] * ell3)
-    }, list( .lmu = lmu, .lsd=lsd,
-             .emu = emu, .esd = esd,
-             .Lower=Lower, .Upper=Upper ))),
-    vfamily = c("tobit"),
-    deriv = eval(substitute(expression({
-        cenL = extra$censoredL
-        cenU = extra$censoredU
+
+dtobit = function(x, mean = 0, sd = 1,
+                  Lower = 0, Upper = Inf, log = FALSE) {
+
+  log.arg <- log
+  if (!is.logical(log.arg) || length(log.arg) != 1)
+    stop("argument 'log' must be a single logical")
+  rm(log)
+
+  L = max(length(x), length(mean), length(sd), length(Lower),
+          length(Upper))
+  x = rep(x, len = L); mean = rep(mean, len = L); sd = rep(sd, len = L);
+  Lower = rep(Lower, len = L); Upper = rep(Upper, len = L);
+
+  ans = dnorm(x = x, mean = mean, sd = sd, log = log.arg)
+  ans[x <  Lower] = if (log.arg) log(0.0) else 0.0
+  ans[x >  Upper] = if (log.arg) log(0.0) else 0.0
+
+
+  ind3 <- x == Lower
+  ans[ind3] = if (log.arg) {
+                log(exp(ans[ind3]) +
+                    pnorm(q = Lower[ind3], me = mean[ind3], sd = sd[ind3]))
+              } else {
+                ans[ind3] +
+                pnorm(q = Lower[ind3], mean = mean[ind3], sd = sd[ind3])
+              }
+
+  ind4 <- x == Upper
+  ans[ind4] = if (log.arg) {
+                log(exp(ans[ind4]) +
+                    pnorm(q = Upper[ind4], mean = mean[ind4], sd = sd[ind4],
+                          lower.tail = FALSE))
+              } else {
+                ans[ind4] +
+                pnorm(q = Upper[ind4], mean = mean[ind4], sd = sd[ind4],
+                      lower.tail = FALSE)
+              }
+  ans
+}
+
+
+
+ptobit = function(q, mean = 0, sd = 1,
+                  Lower = 0, Upper = Inf,
+                  lower.tail = TRUE, log.p = FALSE) {
+
+  if (!is.logical(lower.tail) || length(lower.tail) != 1)
+    stop("argument 'lower.tail' must be a single logical")
+  if (!is.logical(log.p) || length(log.p) != 1)
+    stop("argument 'log.p' must be a single logical")
+
+  L = max(length(q), length(mean), length(sd), length(Lower),
+          length(Upper))
+  q = rep(q, len = L); mean = rep(mean, len = L); sd = rep(sd, len = L);
+  Lower = rep(Lower, len = L); Upper = rep(Upper, len = L);
+
+  ans = pnorm(q = q, mean = mean, sd = sd, lower.tail = lower.tail)
+  ind1 <- q <  Lower
+  ans[ind1] = if (lower.tail) ifelse(log.p, log(0.0), 0.0) else
+                              ifelse(log.p, log(1.0), 1.0)
+  ind2 <- Upper <= q
+  ans[ind2] = if (lower.tail) ifelse(log.p, log(1.0), 1.0) else
+                              ifelse(log.p, log(0.0), 0.0)
+
+  ans
+}
+
+
+
+
+qtobit = function(p, mean = 0, sd = 1,
+                  Lower = 0, Upper = Inf) {
+
+  L = max(length(p), length(mean), length(sd), length(Lower),
+          length(Upper))
+  p = rep(p, len = L); mean = rep(mean, len = L); sd = rep(sd, len = L);
+  Lower = rep(Lower, len = L); Upper = rep(Upper, len = L);
+
+  ans = qnorm(p = p, mean = mean, sd = sd)
+  pnorm.Lower = ptobit(q = Lower, mean = mean, sd = sd)
+  pnorm.Upper = ptobit(q = Upper, mean = mean, sd = sd)
+
+  ind1 <- p <= pnorm.Lower
+  ans[ind1] = Lower[ind1]
+
+  ind2 <- pnorm.Upper <= p
+  ans[ind2] = Upper[ind2]
+
+  ans
+}
+
+
+
+
+
+
+rtobit = function(n, mean = 0, sd = 1,
+                  Lower = 0, Upper = Inf) {
+
+  use.n = if ((length.n <- length(n)) > 1) length.n else
+          if (!is.Numeric(n, integ = TRUE, allow = 1, posit = TRUE))
+              stop("bad input for argument 'n'") else n
+  L = max(use.n, length(mean), length(sd), length(Lower),
+          length(Upper))
+  mean = rep(mean, len = L); sd = rep(sd, len = L);
+  Lower = rep(Lower, len = L); Upper = rep(Upper, len = L);
+
+  ans = rnorm(n = use.n, mean = mean, sd = sd)
+  cenL <- (ans < Lower)
+  ans[cenL] = Lower[cenL]
+  cenU <- (ans > Upper)
+  ans[cenU] = Upper[cenU]
+
+  attr(ans, "Lower") <- Lower
+  attr(ans, "Upper") <- Upper
+  attr(ans, "cenL") <- cenL
+  attr(ans, "cenU") <- cenU
+  ans
+}
+
+
+
+
+tobit.control <- function(save.weight = TRUE, ...)
+{
+  list(save.weight = save.weight)
+}
+
+
+ tobit <- function(Lower = 0, Upper = Inf,
+                   lmu = "identity",  lsd = "loge",
+                   emu = list(),      esd = list(),
+                   nsimEIM = 250,
+                   imu = NULL,        isd = NULL,
+                   type.fitted = c("uncensored", "censored", "mean.obs"),
+                   imethod = 1, zero = -2) {
+
+
+
+
+
+
+  if (mode(lmu) != "character" && mode(lmu) != "name")
+    lmu = as.character(substitute(lmu))
+  if (mode(lsd) != "character" && mode(lsd) != "name")
+    lsd = as.character(substitute(lsd))
+
+  if (!is.Numeric(imethod, allow = 1, integer = TRUE, posi = TRUE) ||
+    imethod > 2)
+    stop("argument 'imethod' must be 1 or 2")
+  if ( # length(Lower) != 1 || length(Upper) != 1 ||
+    !is.numeric(Lower) || !is.numeric(Upper) ||
+    any(Lower >= Upper))
+    stop("Lower and Upper must ",
+         "be numeric with Lower < Upper")
+  if (length(zero) &&
+    !is.Numeric(zero, integer = TRUE))
+    stop("bad input for argument 'zero'")
+  if (!is.Numeric(nsimEIM, allow = 1, integ = TRUE) ||
+      nsimEIM <= 10)
+      stop("argument 'nsimEIM' should be an integer greater than 10")
+
+  if(mode(type.fitted) != "character" && mode(type.fitted) != "name")
+        type.fitted <- as.character(substitute(type.fitted))
+  type.fitted <- match.arg(type.fitted,
+                           c("uncensored", "censored", "mean.obs"))[1]
+
+  if (!is.list(emu)) emu = list()
+  if (!is.list(esd)) esd = list()
+
+  stdTobit = all( Lower == 0.0) &&
+             all(!is.finite(Upper)) &&
+             all(lmu == "identity")
+
+  new("vglmff",
+  blurb = c("Tobit model\n\n",
+          "Links:    ",
+          namesof("mu", lmu, earg = emu, tag = TRUE), "; ",
+          namesof("sd", lsd, earg = esd, tag = TRUE), "\n",
+          "Mean:                 mu", "\n",
+          "Conditional variance: sd^2"),
+  constraints = eval(substitute(expression({
+
+    dotzero <- .zero
+    Musual <- 2
+    eval(negzero.expression)
+
+  }), list( .zero = zero ))),
+  infos = eval(substitute(function(...) {
+    list(Musual = 2,
+         zero = .zero,
+         nsimEIM = .nsimEIM)
+  }, list( .zero = zero, .nsimEIM = nsimEIM ))),
+  initialize = eval(substitute(expression({
+    Musual = 2
+
+    y = cbind(y)
+    ncoly = ncol(y)
+    M = Musual * ncoly
+
+    Lowmat = matrix( .Lower, nrow = n, ncol = ncoly, byrow = TRUE)
+    Uppmat = matrix( .Upper, nrow = n, ncol = ncoly, byrow = TRUE)
+
+    extra$censoredL = (y <= Lowmat)
+    extra$censoredU = (y >= Uppmat)
+    if (any(y < Lowmat)) {
+      warning("replacing response values less than the value ",
+              .Lower, " by ", .Lower)
+      y[y < Lowmat] = Lowmat[y < Lowmat]
+    }
+    if (any(y > Uppmat)) {
+      warning("replacing response values greater than the value ",
+              .Upper, " by ", .Upper)
+      y[y > Uppmat] = Uppmat[y > Uppmat]
+    }
+
+    temp1.names =
+      if (ncoly == 1) "mu" else paste("mu", 1:ncoly, sep = "")
+    temp2.names =
+      if (ncoly == 1) "sd" else paste("sd", 1:ncoly, sep = "")
+    predictors.names =
+        c(namesof(temp1.names, .lmu, earg = .emu, tag = FALSE),
+          namesof(temp2.names, .lsd, earg = .esd, tag = FALSE))
+    predictors.names = predictors.names[interleave.VGAM(M, M = Musual)]
+
+    if (!length(etastart)) {
+      anyc = cbind(extra$censoredL | extra$censoredU)
+      i11 = if ( .imethod == 1) anyc else FALSE # can be all data
+
+      mu.init =
+      sd.init = matrix(0.0, n, ncoly)
+      for(ii in 1:ncol(y)) {
+        use.i11 = i11[, ii]
+        mylm = lm.wfit(x = cbind(x[!use.i11,]),
+                       y = y[!use.i11, ii], w = w[!use.i11])
+        sd.init[, ii] = sqrt( sum(w[!use.i11] * mylm$resid^2)
+                              / mylm$df.residual ) * 1.5
+        mu.init[!use.i11, ii] = mylm$fitted.values
+        if (any(anyc[, ii]))
+          mu.init[anyc[, ii], ii] = x[anyc[, ii],, drop = FALSE] %*%
+                                    mylm$coeff
+      }
+
+      if (length( .imu ))
+        mu.init = matrix( .imu, n, ncoly, byrow = TRUE)
+      if (length( .isd ))
+        sd.init = matrix( .isd, n, ncoly, byrow = TRUE)
+
+      etastart = cbind(theta2eta(mu.init, .lmu, earg = .emu),
+                       theta2eta(sd.init, .lsd, earg = .esd))
+
+      etastart = etastart[, interleave.VGAM(M, M = Musual), drop = FALSE]
+    }
+ }), list( .Lower = Lower, .Upper = Upper,
+           .lmu = lmu, .lsd = lsd,
+           .emu = emu, .esd = esd,
+           .imu = imu, .isd = isd,
+           .imethod = imethod ))),
+  inverse = eval(substitute( function(eta, extra = NULL) {
+    Musual = 2
+    ncoly = ncol(eta) / Musual
+    mum = eta2theta(eta[,Musual*(1:ncoly)-1, drop=FALSE], .lmu, earg = .emu)
+    if ( .type.fitted == "uncensored")
+      return(mum)
+
+    Lowmat = matrix( .Lower, nrow = nrow(eta), ncol = ncoly, byrow = TRUE)
+    Uppmat = matrix( .Upper, nrow = nrow(eta), ncol = ncoly, byrow = TRUE)
+    if ( .type.fitted == "censored") {
+      mum[mum < Lowmat] <- Lowmat[mum < Lowmat]
+      mum[mum > Uppmat] <- Uppmat[mum > Uppmat]
+      mum
+    } else {
+
+      sdm = eta2theta(eta[,Musual*(1:ncoly)-0, drop=FALSE],.lsd, earg = .esd)
+      zeddL = (Lowmat - mum) / sdm
+      zeddU = (Uppmat - mum) / sdm
+      Phi.L = pnorm(zeddL)
+      phi.L = dnorm(zeddL)
+      Phi.U = pnorm(zeddU)
+      phi.U = dnorm(zeddU)
+      mum * (Phi.U - Phi.L) +
+      sdm * (phi.L - phi.U) +
+      Lowmat *      Phi.L +
+      Uppmat * (1 - Phi.U)
+    }
+  }, list( .lmu = lmu, .lsd = lsd,
+           .emu = emu, .esd = esd,
+           .Lower = Lower, .Upper = Upper,
+           .type.fitted = type.fitted ))),
+  last = eval(substitute(expression({
+
+    temp0303 = c(rep( .lmu, length = ncoly),
+                 rep( .lsd, length = ncoly))
+    names(temp0303) =
+      c(if (ncoly == 1) "mu" else paste("mu", 1:ncoly, sep = ""),
+        if (ncoly == 1) "sd" else paste("sd", 1:ncoly, sep = ""))
+    temp0303 = temp0303[interleave.VGAM(M, M = Musual)]
+    misc$link = temp0303 # Already named
+
+    misc$earg = vector("list", M)
+    names(misc$earg) = names(misc$link)
+    for(ii in 1:ncoly) {
+        misc$earg[[Musual*ii-1]] = .emu
+        misc$earg[[Musual*ii  ]] = .esd
+    }
+
+    misc$expected = TRUE
+    misc$Lower = .Lower
+    misc$Upper = .Upper
+    misc$imethod = .imethod
+    misc$nsimEIM = .nsimEIM
+    misc$Musual = Musual
+    misc$stdTobit = .stdTobit
+
+    if ( .stdTobit ) {
+      save.weight <- control$save.weight <- FALSE
+      fit$weights <- NULL
+    }
+
+
+  }), list( .lmu = lmu, .lsd = lsd,
+            .emu = emu, .esd = esd,
+            .nsimEIM = nsimEIM, .imethod = imethod,
+            .stdTobit = stdTobit,
+            .Lower = Lower, .Upper = Upper ))),
+  loglikelihood = eval(substitute(
+    function(mu, y, w, residuals = FALSE, eta, extra = NULL) {
+    Musual = 2
+    y = cbind(y)
+    ncoly = ncol(y)
+
+    cenL = extra$censoredL
+    cenU = extra$censoredU
+    cen0 = !cenL & !cenU   # uncensored obsns
+    Lowmat = matrix( .Lower, nrow = nrow(eta), ncol = ncoly, byrow = TRUE)
+    Uppmat = matrix( .Upper, nrow = nrow(eta), ncol = ncoly, byrow = TRUE)
+
+
+    mum = eta2theta(eta[,Musual*(1:ncoly)-1, drop=FALSE],.lmu, earg = .emu)
+    sdm = eta2theta(eta[,Musual*(1:ncoly)-0, drop=FALSE],.lsd, earg = .esd)
+
+    ell0 = dnorm(  y[cen0], mean = mum[cen0], sd = sdm[cen0],
+                 log = TRUE)
+    ellL = pnorm(Lowmat[cenL], mean = mum[cenL], sd = sdm[cenL],
+                 log = TRUE, lower.tail = TRUE)
+    ellU = pnorm(Uppmat[cenU], mean = mum[cenU], sd = sdm[cenU],
+                 log = TRUE, lower.tail = FALSE)
+
+    wmat = matrix(w, nrow = nrow(eta), ncol = ncoly)
+    if (residuals) {
+      stop("loglikelihood residuals not ",
+           "implemented yet") 
+    } else {
+      sum(wmat[cen0] * ell0) +
+      sum(wmat[cenL] * ellL) +
+      sum(wmat[cenU] * ellU)
+    }
+  }, list( .lmu = lmu, .lsd = lsd,
+           .emu = emu, .esd = esd,
+           .Lower = Lower, .Upper = Upper ))),
+  vfamily = c("tobit"),
+  deriv = eval(substitute(expression({
+    Musual = 2
+    y = cbind(y)
+    ncoly = ncol(y)
+
+    Lowmat = matrix( .Lower, nrow = n, ncol = ncoly, byrow = TRUE)
+    Uppmat = matrix( .Upper, nrow = n, ncol = ncoly, byrow = TRUE)
+
+    cenL = extra$censoredL
+    cenU = extra$censoredU
+    cen0 = !cenL & !cenU   # uncensored obsns
+
+    mum = eta2theta(eta[, Musual*(1:ncoly)-1, drop = FALSE], .lmu, earg = .emu)
+    sdm = eta2theta(eta[, Musual*(1:ncoly)-0, drop = FALSE], .lsd, earg = .esd)
+
+    zedd = (y - mum) / sdm
+    dl.dmu = zedd / sdm
+    dl.dsd = (zedd^2 - 1) / sdm
+
+    dmu.deta = dtheta.deta(mum, .lmu, earg = .emu)
+    dsd.deta = dtheta.deta(sdm, .lsd, earg = .esd)
+
+    if (any(cenL)) {
+      mumL = Lowmat - mum
+      temp21L = mumL[cenL] / sdm[cenL]
+      PhiL = pnorm(temp21L)
+      phiL = dnorm(temp21L)
+      fred21 = phiL / PhiL
+      dl.dmu[cenL] = -fred21 / sdm[cenL]
+      dl.dsd[cenL] =  fred21 * (-mumL[cenL] / sdm[cenL]^2)
+    }
+    if (any(cenU)) {
+      mumU = Uppmat - mum
+      temp21U = mumU[cenU] / sdm[cenU]
+      PhiU = pnorm(temp21U, lower.tail = FALSE)
+      phiU = dnorm(temp21U)
+      fred21 = -phiU / PhiU
+      dl.dmu[cenU] = -fred21 / sdm[cenU]   # Negated
+      dl.dsd[cenU] =  fred21 * (-mumU[cenU] / sdm[cenU]^2)
+    }
+
+    dthetas.detas = cbind(dmu.deta, dsd.deta)
+    dThetas.detas = dthetas.detas[, interleave.VGAM(M, M = Musual)]
+
+    myderiv = c(w) * cbind(dl.dmu, dl.dsd) * dthetas.detas
+    myderiv[, interleave.VGAM(M, M = Musual)]
+  }), list( .lmu = lmu, .lsd = lsd,
+            .emu = emu, .esd = esd,
+            .Lower = Lower, .Upper = Upper ))),
+  weight = eval(substitute(expression({
+
+    wz = matrix(0.0, n, M + M - 1)  # wz is 'tridiagonal'
+    ind1 = iam(NA, NA, M = Musual, both = TRUE, diag = TRUE)
+
+
+    if (is.numeric( .nsimEIM ) &&
+        ! .stdTobit ) {
+    run.varcov = 0
+
+    for(spp. in 1:ncoly) {
+      run.varcov = 0
+      muvec = mum[, spp.]
+      sdvec = sdm[, spp.]
+
+      for(ii in 1:( .nsimEIM )) {
+        ysim = rtobit(n = n, mean = muvec, sd = sdvec,
+                      Lower = Lowmat[, spp.], Upper = Uppmat[, spp.])
+        cenL = attr(ysim, "cenL")
+        cenU = attr(ysim, "cenU")
         cen0 = !cenL & !cenU   # uncensored obsns
-        mum = eta2theta(eta[,1], .lmu, earg = .emu)
-        sd = eta2theta(eta[,2], .lsd, earg = .esd)
-        dl.dmu = (y-mum) / sd^2
-        dl.dsd = (((y-mum)/sd)^2 - 1) / sd
-        dmu.deta = dtheta.deta(mum, .lmu, earg = .emu)
-        dsd.deta = dtheta.deta(sd, .lsd, earg = .esd)
-        if (any(cenL)) {
-            mumL = mum - .Lower
-            temp21L = mumL[cenL] / sd[cenL]
-            PhiL = pnorm(temp21L)
-            phiL = dnorm(temp21L)
-            fred21 = phiL / (1 - PhiL)
-            dl.dmu[cenL] = -fred21 / sd[cenL]
-            dl.dsd[cenL] = mumL[cenL] * fred21 / sd[cenL]^2
-            rm(fred21)
-        }
-        if (any(cenU)) {
-            mumU = .Upper - mum
-            temp21U = mumU[cenU] / sd[cenU]
-            PhiU = pnorm(temp21U)
-            phiU = dnorm(temp21U)
-            fred21 = phiU / (1 - PhiU)
-            dl.dmu[cenU] = fred21 / sd[cenU]   # Negated
-            dl.dsd[cenU] = mumU[cenU] * fred21 / sd[cenU]^2
-            rm(fred21)
-        }
-        w * cbind(dl.dmu * dmu.deta, dl.dsd * dsd.deta)
-    }), list( .lmu = lmu, .lsd=lsd,
-              .emu = emu, .esd = esd,
-              .Lower=Lower, .Upper=Upper ))),
-    weight = eval(substitute(expression({
-        A1 = 1 - pnorm((mum - .Lower) / sd)   # Lower
-        A3 = 1 - pnorm(( .Upper - mum) / sd)  # Upper
-        A2 = 1 - A1 - A3                      # Middle; uncensored
-        wz = matrix(0, n, 3)
-        wz[,iam(1,1,M)] = A2 * 1 / sd^2  # ed2l.dmu2
-        wz[,iam(2,2,M)] = A2 * 2 / sd^2  # ed2l.dsd2
-        mumL = mum - .Lower
-        temp21L = mumL / sd
+
+        zedd = (ysim - muvec) / sdvec
+        dl.dmu =   zedd / sdvec
+        dl.dsd = (zedd^2 - 1) / sdvec
+      if (any(cenL)) {
+        mumL = Lowmat[, spp.] - muvec
+        temp21L = mumL[cenL] / sdvec[cenL]
         PhiL = pnorm(temp21L)
         phiL = dnorm(temp21L)
-        temp31L = ((1-PhiL) * sd)^2 
-        wz.cenL11 = phiL * (phiL - (1-PhiL)*temp21L) / temp31L
-        wz.cenL22 = mumL * phiL * ((1-PhiL) * (2 - temp21L^2) +
-                    mumL * phiL / sd) / (sd * temp31L)
-        wz.cenL12 = phiL * ((1-PhiL)*(temp21L^2 - 1) - temp21L*phiL) / temp31L
-        wz.cenL11[!is.finite(wz.cenL11)] = 0
-        wz.cenL22[!is.finite(wz.cenL22)] = 0
-        wz.cenL12[!is.finite(wz.cenL12)] = 0
-        wz[,iam(1,1,M)] = wz[,iam(1,1,M)] + A1 * wz.cenL11
-        wz[,iam(2,2,M)] = wz[,iam(2,2,M)] + A1 * wz.cenL22
-        wz[,iam(1,2,M)] = A1 * wz.cenL12
-        mumU = .Upper - mum    # often Inf
-        temp21U = mumU / sd    # often Inf
-        PhiU = pnorm(temp21U)  # often 1
-        phiU = dnorm(temp21U)  # often 0
-        temp31U = ((1-PhiU) * sd)^2  # often 0
-        tmp8 = (1-PhiU)*temp21U
-        wzcenU11 = phiU * (phiU - tmp8) / temp31U
-        tmp9 = (1-PhiU) * (2 - temp21U^2)
-        wzcenU22 = mumU * phiU * (tmp9 + mumU * phiU / sd) / (sd * temp31U)
-        wzcenU12 = -phiU * ((1-PhiU)*(temp21U^2 - 1) - temp21U*phiU) / temp31U
-        wzcenU11[!is.finite(wzcenU11)] = 0  # Needed when .Upper==Inf
-        wzcenU22[!is.finite(wzcenU22)] = 0  # Needed when .Upper==Inf
-        wzcenU12[!is.finite(wzcenU12)] = 0  # Needed when .Upper==Inf
-        wz[,iam(1,1,M)] = wz[,iam(1,1,M)] + A3 * wzcenU11
-        wz[,iam(2,2,M)] = wz[,iam(2,2,M)] + A3 * wzcenU22
-        wz[,iam(1,2,M)] = wz[,iam(1,2,M)] + A3 * wzcenU12
-        wz[,iam(1,1,M)] = w * wz[,iam(1,1,M)] * dmu.deta^2
-        wz[,iam(2,2,M)] = w * wz[,iam(2,2,M)] * dsd.deta^2
-        wz[,iam(1,2,M)] = w * wz[,iam(1,2,M)] * dmu.deta * dsd.deta
-        wz
-    }), list( .lmu = lmu, .Lower=Lower, .Upper=Upper, .lsd=lsd ))))
-}
+        fred21 = phiL / PhiL
+        dl.dmu[cenL] = -fred21 / sdvec[cenL]
+        dl.dsd[cenL] =  fred21 * (-mumL[cenL] / sdvec[cenL]^2)
+      }
+      if (any(cenU)) {
+        mumU = Uppmat[, spp.] - muvec
+        temp21U = mumU[cenU] / sdvec[cenU]
+        PhiU = pnorm(temp21U, lower.tail = FALSE)
+        phiU = dnorm(temp21U)
+        fred21 = -phiU / PhiU
+        dl.dmu[cenU] = -fred21 / sdvec[cenU]   # Negated
+        dl.dsd[cenU] =  fred21 * (-mumU[cenU] / sdvec[cenU]^2)
+      }
+
+        rm(ysim)
+        temp3 = cbind(dl.dmu, dl.dsd)
+        run.varcov = run.varcov +
+                     temp3[, ind1$row.index] *
+                     temp3[, ind1$col.index]
+    }
+    run.varcov = run.varcov / .nsimEIM
+
+    wz1 = if (intercept.only)
+        matrix(colMeans(run.varcov),
+               n, ncol(run.varcov), byrow = TRUE) else
+        run.varcov
+
+
+      wz1 = wz1 * dThetas.detas[, Musual * (spp. - 1) + ind1$row] *
+                  dThetas.detas[, Musual * (spp. - 1) + ind1$col]
+
+
+      for(jay in 1:Musual)
+          for(kay in jay:Musual) {
+              cptr = iam((spp. - 1) * Musual + jay,
+                         (spp. - 1) * Musual + kay,
+                         M = M)
+              wz[, cptr] = wz1[, iam(jay, kay, M = Musual)]
+      }
+    } # End of for(spp.) loop
+
+    } else {
+
+      wz1 = matrix(0.0, n, dimm(Musual))
+      for(spp. in 1:ncoly) {
+        zedd  = (y[, spp.] - mum[, spp.]) / sdm[, spp.]
+        zedd0 = (            mum[, spp.]) / sdm[, spp.]
+        phivec = dnorm(zedd0)
+        Phivec = pnorm(zedd0)
+
+        wz1[, iam(1, 1, M = Musual)] =   -(phivec * zedd0 -
+                                        phivec^2 / (1 - Phivec) -
+                                        Phivec)
+        wz1[, iam(2, 2, M = Musual)] =   -(phivec   * zedd0^3 +
+                                        phivec   * zedd0 -
+                                        phivec^2 * zedd0^2 / (1 - Phivec) -
+                                        2 * Phivec)
+        wz1[, iam(1, 2, M = Musual)] = +(phivec   * zedd0^2 +
+                                        phivec   -
+                                        phivec^2 * zedd0 / (1 - Phivec))
+
+        wz1 = wz1 / sdm[, spp.]^2
+      wz1 = wz1 * dThetas.detas[, Musual * (spp. - 1) + ind1$row] *
+                  dThetas.detas[, Musual * (spp. - 1) + ind1$col]
+
+      for(jay in 1:Musual)
+          for(kay in jay:Musual) {
+              cptr = iam((spp. - 1) * Musual + jay,
+                         (spp. - 1) * Musual + kay,
+                         M = M)
+              wz[, cptr] = wz1[, iam(jay, kay, M = Musual)]
+      }
+      } # End of for(spp.) loop
+
+    } # End of EIM
+
+
+    c(w) * wz
+  }), list( .lmu = lmu, .Lower = Lower, .Upper = Upper,
+            .lsd = lsd,
+            .stdTobit = stdTobit,
+            .nsimEIM = nsimEIM ))))
+} # End of tobit()
 
 
 
@@ -1036,7 +1447,7 @@ lqnorm = function(qpower = 2, link = "identity", earg = list(),
 
  normal1 <- function(lmean = "identity", lsd = "loge",
                      emean = list(),     esd = list(),
-                     method.init = 1,
+                     imethod = 1,
                      zero = -2)
 {
 
@@ -1052,9 +1463,9 @@ lqnorm = function(qpower = 2, link = "identity", earg = list(),
       stop("bad input for argument 'zero'")
   if (!is.list(emean)) emean <- list()
   if (!is.list(esdev)) esdev <- list()
-  if (!is.Numeric(method.init, allow = 1, integ = TRUE, posit = TRUE) ||
-     method.init > 3)
-      stop("'method.init' must be 1 or 2 or 3")
+  if (!is.Numeric(imethod, allow = 1, integ = TRUE, posit = TRUE) ||
+     imethod > 3)
+      stop("argument 'imethod' must be 1 or 2 or 3")
 
 
   new("vglmff",
@@ -1095,13 +1506,13 @@ lqnorm = function(qpower = 2, link = "identity", earg = list(),
         jfit <- lm.wfit(x = x,  y = y[, jay], w = w)
         mean.init[, jay] <- if ( .lmean == "loge")
                             pmax(1/1024, y[, jay]) else
-          if( .method.init == 1) median(y[, jay]) else
-          if( .method.init == 2) weighted.mean(y[, jay], w = w) else
+          if( .imethod == 1) median(y[, jay]) else
+          if( .imethod == 2) weighted.mean(y[, jay], w = w) else
                                  mean(jfit$fitted)
         sdev.init[, jay] <-
-          if( .method.init == 1)
+          if( .imethod == 1)
             sqrt( sum(w * (y[, jay] - mean.init[, jay])^2) / sum(w) ) else
-          if( .method.init == 2) {
+          if( .imethod == 2) {
             if (jfit$df.resid > 0)
               sqrt( sum(w * jfit$resid^2) / jfit$df.resid ) else
               sqrt( sum(w * jfit$resid^2) / sum(w) )
@@ -1116,7 +1527,7 @@ lqnorm = function(qpower = 2, link = "identity", earg = list(),
     }
   }), list( .lmean = lmean, .lsdev = lsdev,
             .emean = emean, .esdev = esdev,
-            .method.init = method.init ))),
+            .imethod = imethod ))),
   inverse = eval(substitute(function(eta, extra = NULL) {
     ncoly <- extra$ncoly
     eta2theta(eta[, 2*(1:ncoly) - 1], .lmean, earg = .emean)
@@ -1137,10 +1548,10 @@ lqnorm = function(qpower = 2, link = "identity", earg = list(),
 
     misc$Musual <- Musual
     misc$expected <- TRUE
-    misc$method.init <- .method.init
+    misc$imethod <- .imethod
   }), list( .lmean = lmean, .lsdev = lsdev,
             .emean = emean, .esdev = esdev,
-            .method.init = method.init ))),
+            .imethod = imethod ))),
   loglikelihood = eval(substitute(
     function(mu, y, w, residuals = FALSE, eta, extra = NULL) {
     ncoly <- extra$ncoly
@@ -1162,8 +1573,8 @@ lqnorm = function(qpower = 2, link = "identity", earg = list(),
     dmu.deta <- dtheta.deta(mymu, .lmean, earg = .emean)
     dsd.deta <- dtheta.deta(sdev, .lsdev, earg = .esdev)
 
-    ans <- w * cbind(dl.dmu * dmu.deta,
-                     dl.dsd * dsd.deta)
+    ans <- c(w) * cbind(dl.dmu * dmu.deta,
+                        dl.dsd * dsd.deta)
     ans <- ans[, interleave.VGAM(ncol(ans), M = Musual)]
     ans
   }), list( .lmean = lmean, .lsdev = lsdev,
@@ -1174,7 +1585,7 @@ lqnorm = function(qpower = 2, link = "identity", earg = list(),
       ed2l.dsd2 <- -2 / sdev^2
       wz[, 2*(1:ncoly) - 1] <- -ed2l.dmu2 * dmu.deta^2
       wz[, 2*(1:ncoly)    ] <- -ed2l.dsd2 * dsd.deta^2
-      w * wz
+      c(w) * wz
   }))
 }
 
@@ -1216,8 +1627,8 @@ lqnorm = function(qpower = 2, link = "identity", earg = list(),
               namesof("sdlog",   .lsdlog,   earg = .esdlog,   tag = FALSE))
 
         if (!length(etastart)) {
-            junk = lm.wfit(x=x, y=log(y), w=w)
-            sdlog.y.est = sqrt( sum(w * junk$resid^2) / junk$df.residual )
+            mylm = lm.wfit(x = x, y=log(y), w = w)
+            sdlog.y.est = sqrt( sum(w * mylm$resid^2) / mylm$df.residual )
             etastart = cbind(
               meanlog = rep(theta2eta(log(median(y)), .lmeanlog,
                                       earg = .emeanlog), length = n),
@@ -1259,8 +1670,8 @@ lqnorm = function(qpower = 2, link = "identity", earg = list(),
         dl.dsdlog = -1 / sdlog + (log(y) - mulog)^2 / sdlog^3
         dl.dlambda = (1 + (log(y) - mulog) / sdlog^2) / y
 
-        w * cbind(dl.dmulog * dmulog.deta, 
-                  dl.dsdlog * dsdlog.deta)
+        c(w) * cbind(dl.dmulog * dmulog.deta, 
+                     dl.dsdlog * dsdlog.deta)
     }), list( .lmeanlog = lmeanlog, .lsdlog = lsdlog,
               .emeanlog = emeanlog, .esdlog = esdlog ))),
     weight = expression({
@@ -1270,7 +1681,7 @@ lqnorm = function(qpower = 2, link = "identity", earg = list(),
         wz[,iam(1,1,M)] = ed2l.dmulog2 * dmulog.deta^2
         wz[,iam(2,2,M)] = ed2l.dsdlog2 * dsdlog.deta^2
 
-        wz = w * wz
+        wz = c(w) * wz
         wz
     }))
 }
@@ -1328,18 +1739,20 @@ lqnorm = function(qpower = 2, link = "identity", earg = list(),
                                    shapiro.test(sample(log(y-miny+delta),
                                    size=min(5000, length(y ))))$p.value) 
                 }
-                index.lambda=(1:length(powers.try))[pvalue.vec==max(pvalue.vec)]
+                index.lambda = (1:length(powers.try))[pvalue.vec ==
+                                                      max(pvalue.vec)]
                 lambda.init = miny - 10^powers.try[index.lambda]
             }
-            junk = lm.wfit(x=x, y=log(y-lambda.init), w=w)
-            sdlog.y.est = sqrt( sum(w * junk$resid^2) / junk$df.residual )
+            mylm = lm.wfit(x = x, y=log(y-lambda.init), w = w)
+            sdlog.y.est = sqrt( sum(w * mylm$resid^2) / mylm$df.residual )
             etastart = cbind(mu = log(median(y - lambda.init)),
-            sdlog=rep(theta2eta(sdlog.y.est, .lsdlog, earg = .esdlog), length = n),
+            sdlog = rep(theta2eta(sdlog.y.est, .lsdlog, earg = .esdlog),
+                        length = n),
             lambda = lambda.init)
         }
     }), list( .lmeanlog = lmeanlog, .lsdlog = lsdlog,
               .emeanlog = emeanlog, .esdlog = esdlog,
-              .delta = delta, .powers.try=powers.try ))),
+              .delta = delta, .powers.try = powers.try ))),
     inverse = eval(substitute(function(eta, extra = NULL) {
         mymu = eta2theta(eta[,1], .lmeanlog, earg = .emeanlog)
         sdlog = eta2theta(eta[,2], .lsdlog, earg = .esdlog)
@@ -1383,9 +1796,9 @@ lqnorm = function(qpower = 2, link = "identity", earg = list(),
         dmymu.deta = dtheta.deta(mymu, .lmeanlog, earg = .emeanlog)
         dsdlog.deta = dtheta.deta(sdlog, .lsdlog, earg = .esdlog)
         dlambda.deta = dtheta.deta(lambda, "identity", earg = list())
-        w * cbind(dl.dmymu   *   dmymu.deta, 
-                  dl.dsdlog  *  dsdlog.deta, 
-                  dl.dlambda * dlambda.deta)
+        c(w) * cbind(dl.dmymu   *   dmymu.deta, 
+                     dl.dsdlog  *  dsdlog.deta, 
+                     dl.dlambda * dlambda.deta)
     }), list( .lmeanlog = lmeanlog, .lsdlog = lsdlog,
               .emeanlog = emeanlog, .esdlog = esdlog ))),
     weight = expression({
@@ -1399,7 +1812,7 @@ lqnorm = function(qpower = 2, link = "identity", earg = list(),
         wz[,iam(3,3,M)] = ed2l.dlambda2 * dlambda.deta^2
         wz[,iam(1,3,M)] = temp9 * dmymu.deta * dlambda.deta / sdlog^2
         wz[,iam(2,3,M)] = -2 * temp9 / sdlog * dsdlog.deta * dlambda.deta
-        wz = w * wz
+        wz = c(w) * wz
         wz
     }))
 }
@@ -1408,7 +1821,7 @@ lqnorm = function(qpower = 2, link = "identity", earg = list(),
 
 
 
-dsnorm = function(x, location=0, scale=1, shape=0, log = FALSE) {
+dsnorm = function(x, location = 0, scale = 1, shape = 0, log = FALSE) {
 
     if (!is.logical(log.arg <- log))
         stop("bad input for argument 'log'")
@@ -1428,7 +1841,7 @@ dsnorm = function(x, location=0, scale=1, shape=0, log = FALSE) {
 
 
 
-rsnorm = function(n, location=0, scale=1, shape=0) {
+rsnorm = function(n, location = 0, scale = 1, shape=0) {
     if (!is.Numeric(n, posit = TRUE, integ = TRUE, allow = 1))
         stop("bad input for argument 'n'")
     if (!is.Numeric(scale, posit = TRUE))
@@ -1500,7 +1913,8 @@ rsnorm = function(n, location=0, scale=1, shape=0) {
             alpha = eta2theta(eta, .lshape, earg = .earg)
         if (residuals) stop("loglikelihood residuals not ",
                             "implemented yet") else {
-            sum(w * dsnorm(x=y, location=0, scale=1, shape=alpha, log = TRUE))
+            sum(w * dsnorm(x = y, location = 0, scale = 1,
+                           shape = alpha, log = TRUE))
         }
     }, list( .earg = earg, .lshape = lshape ))), 
     vfamily = c("skewnormal1"),
@@ -1532,7 +1946,7 @@ rsnorm = function(n, location=0, scale=1, shape=0) {
             d2shape.deta2 = d2theta.deta2(alpha, .lshape, earg = .earg)
             d2l.dshape2 = -y*y * tmp86 * (tmp76 * zedd + tmp86) / tmp76^2
             wz = -(dshape.deta^2) * d2l.dshape2 - d2shape.deta2 * dl.dshape
-            wz = w * wz
+            wz = c(w) * wz
         }
         wz
     }), list( .earg = earg, .lshape = lshape, .nsimEIM = nsimEIM ))))
diff --git a/R/family.others.R b/R/family.others.R
new file mode 100644
index 0000000..3f0533e
--- /dev/null
+++ b/R/family.others.R
@@ -0,0 +1,1946 @@
+# These functions are Copyright (C) 1998-2011 T. W. Yee   All rights reserved.
+
+
+# family.others.R
+# This file contains functions written by other people.
+
+
+# Last modified:
+# 20110317: (a) James Lauder files.
+# This file is in one part: see (a), and later (b), (c).
+
+
+
+
+
+
+
+# ----------------------------------------------------------------------
+# (a) James Lauder code put here.
+# ----------------------------------------------------------------------
+# Edited from james.familyfuncs.2.R on 20110317
+# ----------------------------------------------------------------------
+
+
+# 13/12/10; [drpq]exppois() and exppois().
+# reference: Karlis CSDA 53 (2009) pg 894 and 
+# Kus CSDA 51 (2007) pg 4497
+# everything functioning except for hypergeometric function
+# (see R package "hypergeo")
+
+
+# ref: Kus, section 4.1, pg 4500
+# updated on 22/15/2010
+dexppois <- function(x, lambda, betave = 1, log = FALSE) {
+  if (!is.logical(log.arg <- log))
+    stop("bad input for argument 'log'")
+  rm(log)
+
+  N <- max(length(x), length(lambda), length(betave))
+  x <- rep(x, len = N); lambda = rep(lambda, len = N);
+  betave <- rep(betave, len = N)
+
+  logdensity <- rep(log(0), len = N)
+  xok <- (0 < x)
+ 
+  logdensity[xok] <- log(lambda[xok]) + log(betave[xok]) -
+                     log1p(-exp(-lambda[xok])) - lambda[xok] - 
+                     betave[xok] * x[xok] + lambda[xok] * 
+                     exp(-betave[xok] * x[xok])
+   
+  logdensity[lambda <= 0] <- NaN
+  logdensity[betave <= 0] <- NaN
+  if (log.arg) logdensity else exp(logdensity)
+}
+
+
+# ref: calculated from F(x) from Kus, pg 4499
+# updated and working on 22/15/2010
+qexppois<- function(p, lambda, betave = 1) {
+  ans <- -log(log(p * -(expm1(lambda)) +
+         exp(lambda)) / lambda) / betave
+  ans[(lambda <= 0) | (betave <= 0)] = NaN
+  ans[p < 0] <- NaN
+  ans[p > 1] <- NaN
+  ans
+}
+
+
+
+# ref: Kus, eqn 2, pg 4499
+# Updated on 22/12/2010
+pexppois<- function(q, lambda, betave = 1) {
+  ans <-(exp(lambda * exp(-betave * q)) - exp(lambda)) / -expm1(lambda)  
+  ans[q <= 0] <- 0
+  ans[(lambda <= 0) | (betave <= 0)] <- NaN
+  ans
+}
+
+
+
+# ref: calculated from F(x) from Kus, pg 4499
+# updated and working on 22/15/2010
+rexppois <- function(n, lambda, betave = 1) {
+  ans <- -log(log(runif(n) * -(expm1(lambda)) +
+         exp(lambda)) / lambda) / betave
+  ans[(lambda <= 0) | (betave <= 0)] <- NaN
+  ans
+}
+
+
+
+
+
+
+###################
+# the family function
+# reference: Karlis CSDA 53 (2009) pg 894 and 
+# Kus CSDA 51 (2007) pg 4497
+#
+# Notes:
+# 1. Requires the \pkg{hypergeo} package
+# (to use their \code{\link[hypergeo]{genhypergeo}} function).
+
+ exppoisson = function (llambda = "loge", lbetave = "loge",
+                        elambda = list(), ebetave = list(),
+                        ilambda = 1.1,   ibetave = 2.0,
+                        zero = NULL) {
+
+  if (mode(llambda) != "character" && mode(llambda) != "name")
+    llambda = as.character(substitute(llambda))
+  if (mode(lbetave) != "character" && mode(lbetave) != "name")
+    lbetave = as.character(substitute(lbetave))
+
+  if (length(zero) && !is.Numeric(zero, integer = TRUE, posit = TRUE))
+    stop("bad input for argument 'zero'")
+  if (length(ilambda) && !is.Numeric(ilambda, posit = TRUE))
+    stop("bad input for argument 'ilambda'")
+  if (length(ibetave) && !is.Numeric(ibetave, posit = TRUE))
+    stop("bad input for argument 'ibetave'")
+
+  ilambda[abs(ilambda - 1) < 0.01] = 1.1
+  if (!is.list(ebetave))
+    ebetave = list()
+  if (!is.list(elambda))
+    elambda = list()
+
+#print("hi4, 20110319")
+  new("vglmff",
+  blurb = c("Exponential Poisson distribution \n \n",
+            "Links:    ",
+            namesof("lambda", llambda, earg = elambda), ", ",
+            namesof("betave", lbetave, earg = ebetave), "\n",
+            "Mean:     lambda/(expm1(lambda) * betave)) * ",
+                      "genhypergeo(c(1,1),c(2,2),lambda)"),
+
+# genhypergeo() from package: hypergeo
+# ref = mean from Kus pg 4499
+
+  constraints = eval(substitute(expression({
+    constraints = cm.zero.vgam(constraints, x, .zero , M)
+    }), list( .zero = zero))),
+
+  initialize = eval(substitute(expression({
+    if (ncol(cbind(y)) != 1)
+      stop("response must be a vector or a one-column matrix")
+
+    predictors.names = c(
+      namesof("lambda", .llambda, earg = .elambda, short = TRUE),
+      namesof("betave", .lbetave, earg = .ebetave, short = TRUE))
+
+    if (!length(etastart)) {
+#MLE for lambda from Kus eqn(6) pg 4500
+      betave.init = if (length( .ibetave ))
+                      rep( .ibetave , len = n) else
+                      stop("Need to input a value into argument 'ibetave'")
+                   ## (lambda.init/(expm1(lambda.init) * (y + 1/8))) *
+                   ##  genhypergeo(c(1,1),c(2,2),lambda.init)
+      lambda.init = if (length( .ilambda ))
+                      rep( .ilambda , len = n) else
+                      (1/betave.init - mean(y)) / ((y * 
+                      exp(-betave.init * y))/n)
+
+# supply inital values for now to get function working
+
+      betave.init = rep(weighted.mean(betave.init, w = w), len = n)
+#print("head(lambda.init)")
+#print( head(lambda.init) )
+#print("head(betave.init)")
+#print( head(betave.init) )
+      
+      etastart = cbind(theta2eta(lambda.init, .llambda ,earg = .elambda ),
+                       theta2eta(betave.init, .lbetave ,earg = .ebetave ))
+
+#print("head(etastart, 3)")
+#print( head(etastart, 3) )
+    }
+   }), list( .llambda = llambda, .lbetave = lbetave, 
+             .ilambda = ilambda, .ibetave = ibetave, 
+             .elambda = elambda, .ebetave = ebetave))), 
+
+  inverse = eval(substitute(function(eta, extra = NULL) {
+    lambda = eta2theta(eta[, 1], .llambda , earg = .elambda )
+    betave = eta2theta(eta[, 2], .lbetave , earg = .ebetave )
+
+# warning("returning dud means")
+#   mu
+#   runif(nrow(eta))
+
+#  20110319; not sure about the following:
+#  20110319; and not in .Rd file.
+   -lambda * genhypergeo(c(1, 1), c(2, 2), lambda) / (expm1(-lambda) *
+    betave)
+  }, list( .llambda = llambda, .lbetave = lbetave, 
+           .elambda = elambda, .ebetave = ebetave))), 
+
+  last = eval(substitute(expression({
+    misc$link =    c(lambda = .llambda , betave = .lbetave )
+    misc$earg = list(lambda = .elambda , betave = .ebetave )
+    misc$expected = TRUE
+    
+  }), list( .llambda = llambda, .lbetave = lbetave,
+            .elambda = elambda, .ebetave = ebetave))), 
+
+  loglikelihood = eval(substitute(function(mu, y, w, 
+                  residuals = FALSE, eta, extra = NULL) {
+    lambda = eta2theta(eta[, 1], .llambda , earg = .elambda )
+    betave = eta2theta(eta[, 2], .lbetave , earg = .ebetave )
+    if (residuals) stop("loglikelihood residuals not ",
+                        "implemented yet") else {
+      sum(w * dexppois(x = y, lambda = lambda, betave = betave,
+                       log = TRUE))
+    }
+  }, list( .lbetave = lbetave , .llambda = llambda , 
+           .elambda = elambda , .ebetave = ebetave ))), 
+
+  vfamily = c("exppoisson"),
+
+# Updated 22/12/2010
+  deriv = eval(substitute(expression({
+    lambda = eta2theta(eta[, 1], .llambda , earg = .elambda )
+    betave = eta2theta(eta[, 2], .lbetave , earg = .ebetave )
+    dl.dbetave = 1/betave - y - y * lambda * exp(-betave * y)
+    dl.dlambda = 1/lambda - 1/expm1(lambda) - 1 + exp(-betave * y)
+    dbetave.deta = dtheta.deta(betave, .lbetave , earg = .ebetave )
+    dlambda.deta = dtheta.deta(lambda, .llambda , earg = .elambda )
+    c(w) * cbind(dl.dlambda * dlambda.deta, dl.dbetave * dbetave.deta)
+  }), list( .llambda = llambda, .lbetave = lbetave,
+            .elambda = elambda, .ebetave = ebetave ))), 
+
+  weight = eval(substitute(expression({
+    
+# Updated 22/12/2010
+    temp1 = -expm1(-lambda)
+    
+# Ref: Kus, pg 4502, J11
+    ed2l.dlambda2 = (1 + exp(2 * lambda) - lambda^2 * exp(lambda) - 2 *
+                    exp(lambda)) / (lambda * temp1)^2
+
+
+# Ref: Kus, pg 4502, J22
+    ed2l.dbetave2 = 1 / betave^2 - (lambda^2 * exp(-lambda) / (4 * 
+                    betave^2 * temp1)) * 
+                    genhypergeo(c(2,2,2),c(3,3,3),lambda) 
+
+# Ref: Kus, pg 4502,J12 
+    ed2l.dbetavelambda = (lambda * exp(-lambda) / (4 * betave * temp1)) *
+                         genhypergeo(c(2,2),c(3,3),lambda)   
+
+    wz <- matrix(0, n, dimm(M))
+    wz[, iam(1, 1, M)] = dlambda.deta^2 * ed2l.dlambda2
+    wz[, iam(2, 2, M)] = dbetave.deta^2 * ed2l.dbetave2
+    wz[, iam(1, 2, M)] = dbetave.deta * dlambda.deta * ed2l.dbetavelambda
+    c(w) * wz
+  }), list( .zero = zero ))))
+}
+
+
+
+
+
+
+#=======================================================================
+# 14/12/10 [drpq]genray() and genrayleigh().
+# References: Kundu and Raqab, CSDA 49 (2005) pg 187 and
+# Raqab and Kundu "Burr Type X Distribution Revisited"
+
+# Updated by Thomas 10/01/2011
+# Notes:
+# 1. scale = 1 / \lambda here, = \delta, say.
+# 2. My calculations showed EIM_{12} did not agree with Kundu and
+#    Raqab, (2005). So am using nsimEIM.
+
+
+
+# Ref: Kundu pg 188
+#  Updated 22/12/10
+dgenray <- function(x, shape, scale = 1, log = FALSE) {
+  if (!is.logical(log.arg <- log))
+    stop("bad input for argument 'log'")
+  rm(log)
+
+  N <- max(length(x), length(shape), length(scale))
+  x <- rep(x, len = N)
+  shape <- rep(shape, len = N)
+  scale <- rep(scale, len = N)
+
+  logdensity <- rep(log(0), len = N)
+  if (any(xok <- (x > 0))) {
+    temp1 <- x[xok] / scale[xok]
+    logdensity[xok] <- log(2) + log(shape[xok]) + log(x[xok]) -
+                       2 * log(scale[xok]) - temp1^2  +
+                       (shape[xok] - 1) * log1p(-exp(-temp1^2))
+  }
+  logdensity[(shape <= 0) | (scale <= 0)] <- NaN
+  if (log.arg) {
+    logdensity
+  } else {
+     exp(logdensity)
+  }
+}
+
+
+#  Ref: Kundu pg 188
+#  Updated 22/12/10
+pgenray <- function(q, shape, scale = 1) {
+  ans <- (-expm1(-(q/scale)^2))^shape
+  ans[q <= 0] <- 0
+  ans[(shape <= 0) | (scale <= 0)] <- NaN
+  ans
+}
+
+
+# Ref: Kundu pg 193
+# Updated 22/12/10  
+qgenray <- function(p, shape, scale = 1) {
+  ans <- scale * sqrt(-log1p(-(p^(1/shape))))
+  ans[(shape <= 0) | (scale <= 0)] = NaN
+  ans[p < 0] <- NaN
+  ans[p > 1] <- NaN
+  ans[p == 0] <- 0
+  ans[p == 1] <- Inf
+  ans
+}
+
+
+
+
+# Ref: Kundu pg 193
+#  Updated 22/12/10
+rgenray <- function(n, shape, scale = 1) {
+  ans <- qgenray(runif(n), shape = shape, scale = scale)
+  ans[(shape <= 0) | (scale <= 0)] <- NaN
+  ans
+}
+
+
+
+###################
+# The family function
+# References: Kundu CSDA 49 (2005) pg 187 & Raqab and 
+# Kundu "Burr Type X Distribution Revisited"
+# updated 05/01/2011
+# updated by Thomas 10/01/2011
+
+genrayleigh.control <- function(save.weight = TRUE, ...)
+{
+# Because of nsimEIM in @weight
+    list(save.weight = save.weight)
+}
+
+ genrayleigh = function (lshape = "loge", lscale = "loge",
+                         eshape = list(), escale = list(),
+                         ishape = NULL,   iscale = NULL,
+                         tol12 = 1.0e-05, 
+                         nsimEIM = 300, zero = 1) {
+
+  if (mode(lshape) != "character" && mode(lshape) != "name")
+    lshape = as.character(substitute(lshape))
+  if (mode(lscale) != "character" && mode(lscale) != "name")
+    lscale = as.character(substitute(lscale))
+
+  if (length(ishape) && !is.Numeric(ishape, posit = TRUE))
+    stop("bad input for argument 'ishape'")
+  if (length(iscale) && !is.Numeric(iscale, posit = TRUE)) 
+    stop("bad input for argument 'iscale'")
+
+  if (length(zero) && !is.Numeric(zero, integer = TRUE, posit = TRUE))
+    stop("bad input for argument 'zero'")
+  if (!is.Numeric(nsimEIM, allow = 1, integ = TRUE) || nsimEIM <= 50)
+      stop("'nsimEIM' should be an integer greater than 50")
+
+  if (!is.list(escale))
+    escale = list()
+  if (!is.list(eshape))
+    eshape = list()
+
+
+  new("vglmff",
+  blurb = c("Generalized Rayleigh distribution\n",
+            "Links:    ",
+            namesof("shape", lshape, earg = eshape), ", ",
+            namesof("scale", lscale, earg = escale), "\n"),
+  constraints = eval(substitute(expression({
+    constraints <- cm.zero.vgam(constraints, x, .zero, M)
+  }), list( .zero = zero ))),
+
+  initialize = eval(substitute(expression({
+    if (ncol(cbind(y)) != 1) 
+      stop("response must be a vector or a one-column matrix")
+       
+    predictors.names = c(
+      namesof("shape", .lshape , earg = .eshape , short = TRUE),
+      namesof("scale", .lscale , earg = .escale , short = TRUE))
+
+# Following getmaxmin method implemented on 06/01/11
+    if (!length(etastart)) {
+      genrayleigh.Loglikfun = function(scale, y, x, w, extraargs) {
+        temp1 <- y / scale
+# Equation (7) from Kundu and Raqab, p.190, which derives from their (2).
+# It gives the MLE of shape, given Scale.
+        shape = -1 / weighted.mean(log1p(-exp(-temp1^2)), w = w)
+
+        ans <- sum(w * (log(2) + log(shape) + log(y) - 2 * log(scale) -
+                   temp1^2  + (shape - 1) * log1p(-exp(-temp1^2))))
+#print("c(scale, ans)")
+#print( c(scale, ans) )
+        ans
+      }
+# Note: problems occur if scale values too close to zero:
+      scale.grid = seq(0.2 * stats:::sd(y), 5 * stats:::sd(y), len = 29)
+      scale.init = if (length( .iscale )) .iscale else
+                     getMaxMin(scale.grid, objfun = genrayleigh.Loglikfun,
+                               y = y, x = x, w = w)
+#print("head(scale.init)")
+#print( head(scale.init) )
+      scale.init = rep(scale.init, length = length(y))
+ 
+      shape.init = if (length( .ishape )) .ishape else
+                   -1 / weighted.mean(log1p(-exp(-(y/scale.init)^2)),
+                    w = w)
+#print("head(shape.init)")
+#print( head(shape.init) )
+      shape.init = rep(shape.init, length = length(y))
+
+      etastart = cbind(theta2eta(shape.init, .lshape, earg = .eshape),
+                       theta2eta(scale.init, .lscale, earg = .escale))
+#print(",,,,,,,,,,,,,,,,,,,")
+        }
+    }), list( .lscale = lscale, .lshape = lshape,
+              .iscale = iscale, .ishape = ishape,
+              .escale = escale, .eshape = eshape))), 
+
+  inverse = eval(substitute(function(eta, extra = NULL) {
+    shape = eta2theta(eta[, 1], .lshape , earg = .eshape )
+    Scale = eta2theta(eta[, 2], .lscale , earg = .escale )
+# zz yet to do: Find expression for mean
+# Much easier to return the median rather than the mean:
+    qgenray(p = 0.5, shape = shape, scale = Scale)
+  }, list( .lshape = lshape, .lscale = lscale, 
+           .eshape = eshape, .escale = escale ))),
+
+  last = eval(substitute(expression({
+    misc$link =    c(shape = .lshape , scale = .lscale )
+    misc$earg = list(shape = .eshape , scale = .escale )
+    misc$expected = TRUE
+    misc$nsimEIM = .nsimEIM
+  }), list( .lshape = lshape, .lscale = lscale,
+            .eshape = eshape, .escale = escale,
+            .nsimEIM = nsimEIM ))),
+
+  loglikelihood = eval(substitute(function(mu, y, w, 
+                  residuals = FALSE, eta, extra = NULL) {
+
+    shape = eta2theta(eta[, 1], .lshape , earg = .eshape )
+    Scale = eta2theta(eta[, 2], .lscale , earg = .escale )
+#print("head(shape, 3)")
+#print( head(shape, 3) )
+#print("head(Scale, 3)")
+#print( head(Scale, 3) )
+
+    if (residuals) stop("loglikelihood residuals",
+                        "not implemented yet") else {
+      sum(w * dgenray(x = y, shape = shape, scale = Scale, log = TRUE))
+    }
+  }, list( .lshape = lshape , .lscale = lscale , 
+           .eshape = eshape , .escale = escale ))), 
+      
+  vfamily = c("genrayleigh"),
+
+  deriv = eval(substitute(expression({
+    shape = eta2theta(eta[, 1], .lshape , earg = .eshape )
+    Scale = eta2theta(eta[, 2], .lscale , earg = .escale )
+#print("head(shape, 3)")
+#print( head(shape, 3) )
+#print("head(Scale, 3)")
+#print( head(Scale, 3) )
+    dshape.deta = dtheta.deta(shape, .lshape , earg = .eshape )
+    dscale.deta = dtheta.deta(Scale, .lscale , earg = .escale )
+    dthetas.detas = cbind(dshape.deta, dscale.deta)
+
+# Note: singularities wrt derivatives at shape==0 and zz:
+    temp1 <- y / Scale
+    temp2 <- exp(-temp1^2)
+    temp3 <- temp1^2 / Scale
+    AAA   <- 2 * temp1^2 / Scale  # 2 * y^2 / Scale^3
+    BBB   <- -expm1(-temp1^2)     # denominator
+    dl.dshape = 1/shape + log1p(-temp2)
+    dl.dscale = -2 / Scale + AAA * (1 - (shape - 1) * temp2 / BBB)
+
+# Special fixup:
+    dl.dshape[!is.finite(dl.dshape)] = max(dl.dshape[is.finite(dl.dshape)])
+
+    answer <- c(w) * cbind(dl.dshape, dl.dscale) * dthetas.detas
+#print("summary(answer)")
+#print( summary(answer) )
+#print("head(answer, 3)")
+#print( head(answer, 3) )
+    answer
+  }), list( .lshape = lshape , .lscale = lscale,
+            .eshape = eshape,  .escale = escale ))),
+
+  weight = eval(substitute(expression({
+# 20110108; I disagree with EIM_{12} of pg 190 of Kundu and Raqab.
+# So am using simulated Fisher scoring.
+
+# Notes:
+# 1. Inf occurs (albeit infequently) for dl.dshape when ysim is close to 0
+#    Special fixup to handle this.
+
+    run.varcov = 0
+    ind1 = iam(NA, NA, M = M, both = TRUE, diag = TRUE)
+    for(ii in 1:( .nsimEIM )) {
+        ysim = rgenray(n = n, shape = shape, scale = Scale)
+
+        temp1 <- ysim / Scale
+        temp2 <- exp(-temp1^2)  # May be 1 if ysim is very close to 0.
+        temp3 <- temp1^2 / Scale
+        AAA   <- 2 * temp1^2 / Scale  # 2 * y^2 / Scale^3
+        BBB   <- -expm1(-temp1^2)     # denominator
+        dl.dshape = 1/shape + log1p(-temp2)
+        dl.dscale = -2 / Scale + AAA * (1 - (shape - 1) * temp2 / BBB)
+
+# Special fixup:
+        dl.dshape[!is.finite(dl.dshape)] = max(
+        dl.dshape[is.finite(dl.dshape)])
+
+        temp3 = cbind(dl.dshape, dl.dscale)
+        run.varcov = run.varcov + temp3[, ind1$row.index] *
+                                  temp3[, ind1$col.index]
+    }
+    run.varcov = run.varcov / .nsimEIM
+
+    wz = if (intercept.only)
+        matrix(colMeans(run.varcov, na.rm = FALSE),
+               n, ncol(run.varcov), byrow = TRUE) else run.varcov
+    wz = wz * dthetas.detas[, ind1$row] * dthetas.detas[, ind1$col]
+#print("summary(run.varcov)")
+#print( summary(run.varcov) )
+#print("summary(wz)")
+#print( summary(wz) )
+#print("head(wz,3)")
+#print( head(wz,3) )
+    c(w) * wz
+  }), list( .lshape = lshape , .lscale = lscale,
+            .eshape = eshape,  .escale = escale,
+            .tol12 = tol12, .nsimEIM = nsimEIM ))))
+}
+
+
+
+
+
+
+
+#=======================================================================
+# 20/01/10; [drpq]expgeom() and expgeometric().
+# Reference: Adamidis and Loukas, SPL 39 (1998) pg 35--42 
+
+# Notes:
+# Scale is the reciprocal of scale in Adamidis.
+# Updated and working 03/02/2011
+
+
+# Ref: Adamidis pg.36
+dexpgeom <- function(x, scale = 1, shape, log = FALSE) {
+# 20110201; looks okay.
+  if (!is.logical(log.arg <- log))
+    stop("bad input for argument 'log'")
+  rm(log)
+
+  N <- max(length(x), length(scale), length(shape))
+  x <- rep(x, len = N)
+  scale <- rep(scale, len = N)
+  shape <- rep(shape, len = N)
+
+  logdensity <- rep(log(0), len = N)
+  if (any(xok <- (x > 0))) {
+    temp1 <- -x[xok] / scale[xok]
+    logdensity[xok] <- -log(scale[xok]) + log1p(-shape[xok]) + 
+                       temp1 - 2 * log1p(-shape[xok] * exp(temp1))
+  }
+
+  logdensity[(scale <= 0) | (shape <= 0) | (shape >= 1)] <- NaN
+  if (log.arg) {
+    logdensity
+  } else {
+     exp(logdensity)
+  }
+}
+
+
+# Ref: Adamidis p.37, (3.1)
+pexpgeom <- function(q, scale = 1, shape) {
+# 20110201; looks okay.
+  temp1 <- -q / scale
+  ans <- -expm1(temp1) / (1 - shape * exp(temp1))
+  ans[q <= 0] <- 0
+  ans[(scale <= 0) | (shape <= 0) | (shape >= 1)] <- NaN
+  ans
+}
+
+ 
+qexpgeom <- function(p, scale = 1, shape) {
+# 20110201; looks okay.
+  ans <- (-scale) * log((p - 1) / (p * shape - 1))
+  ans[(scale <= 0) | (shape <= 0) | (shape >= 1)] <- NaN
+  ans[p < 0] <- NaN
+  ans[p > 1] <- NaN
+  ans[p == 0] <- 0
+  ans[p == 1] <- Inf
+  ans
+}
+
+
+rexpgeom <- function(n, scale = 1, shape) {
+  ans <- qexpgeom(runif(n), shape = shape, scale = scale)
+  ans[(scale <= 0) | (shape <= 0) | (shape >= 1)] <- NaN
+  ans
+}
+
+
+
+#=================================================================
+# Exponential geometric family function.
+# Reference: Adamidis & Loukas, SPL 39 (1998) pg 35--42 
+# All derivatives etc copied directly from article
+# Updated and working 03/02/2011
+
+# Notes:
+# Scale is the reciprocal of scale in Adamidis.
+
+expgeometric.control <- function(save.weight = TRUE, ...)
+{
+# Because of nsimEIM in @weight
+    list(save.weight = save.weight)
+}
+
+
+ expgeometric = function (lscale = "loge", lshape = "logit",
+                          escale = list(), eshape = list(),
+                          iscale = NULL,   ishape = NULL, 
+                          tol12 = 1.0e-05, zero = 1,
+                          nsimEIM = 400) {
+
+# 20110102; modified by TWYee. Works.
+# Yet to do: get proper Fisher scoring going.
+
+  if (mode(lshape) != "character" && mode(lshape) != "name")
+    lshape = as.character(substitute(lshape))
+  if (mode(lscale) != "character" && mode(lscale) != "name")
+    lscale = as.character(substitute(lscale))
+
+  if (length(ishape))
+    if (!is.Numeric(ishape, posit = TRUE) || any(ishape >= 1))
+      stop("bad input for argument 'ishape'")
+
+  if (length(iscale))
+    if (!is.Numeric(iscale, posit = TRUE))
+    stop("bad input for argument 'iscale'")
+
+  if (length(zero) && !is.Numeric(zero, integer = TRUE, posit = TRUE))
+    stop("bad input for argument 'zero'")
+
+  if (!is.list(escale))
+    escale = list()
+  if (!is.list(eshape))
+    eshape = list()
+
+  if (!is.Numeric(nsimEIM, allow = 1, integ = TRUE))
+      stop("bad input for argument 'nsimEIM'")
+  if (nsimEIM <= 50)
+      stop("'nsimEIM' should be an integer greater than 50")
+
+
+  new("vglmff",
+  blurb = c("Exponential geometric distribution\n\n",
+            "Links:    ",
+            namesof("Scale", lscale, earg = escale), ", ",
+            namesof("shape", lshape, earg = eshape), "\n",
+            "Mean:     ", "(shape - 1) * log(1 - ",
+            "shape) / (shape / Scale)"), 
+# mean = Adamidis eqn. (3.2)
+                           
+  constraints = eval(substitute(expression({
+    constraints <- cm.zero.vgam(constraints, x, .zero, M)
+  }), list( .zero = zero ))),
+ 
+
+  initialize = eval(substitute(expression({
+    if (ncol(cbind(y)) != 1)
+      stop("response must be a vector or a one-column matrix")
+
+    predictors.names = c(
+      namesof("Scale", .lscale , earg = .escale , short = TRUE),
+      namesof("shape", .lshape , earg = .eshape , short = TRUE))
+
+    if (!length(etastart)) {
+
+      scale.init = if (is.Numeric( .iscale , posit = TRUE)) {
+                     rep( .iscale , len = n)
+                   } else {
+# The scale parameter should be 
+# the standard deviation of y.
+                      stats:::sd(y)  # The papers scale parameter beta
+                   }
+#print("head(scale.init)")
+#print( head(scale.init) )
+
+      shape.init = if (is.Numeric( .ishape , posit = TRUE)) {
+                     rep( .ishape , len = n)
+                   } else {
+# Use the formula for the median:
+                      rep(2 - exp(median(y)/scale.init), len = n)
+                   }
+# But avoid extremes:
+      shape.init[shape.init >= 0.95] = 0.95
+      shape.init[shape.init <= 0.05] = 0.05
+
+#print("head(shape.init)")
+#print( head(shape.init) )
+      
+      etastart = cbind(theta2eta(scale.init, .lscale , earg = .escale ),
+                       theta2eta(shape.init, .lshape , earg = .eshape ))
+
+#print("head(etastart, 3)")
+#print( head(etastart, 3) )
+    }
+   }), list( .lscale = lscale, .lshape = lshape, 
+             .iscale = iscale, .ishape = ishape, 
+             .escale = escale, .eshape = eshape))), 
+
+  inverse = eval(substitute(function(eta, extra = NULL) {
+    Scale = eta2theta(eta[, 1], .lscale , earg = .escale )
+    shape = eta2theta(eta[, 2], .lshape , earg = .eshape )
+    
+# Return the mean as fitted value; Adamidis Equation (3.2)
+    (shape - 1) * log1p(-shape) / (shape / Scale)
+
+  }, list( .lscale = lscale, .lshape = lshape, 
+           .escale = escale, .eshape = eshape ))),
+
+  last = eval(substitute(expression({
+    misc$link =    c(Scale = .lscale , shape = .lshape )
+    misc$earg = list(Scale = .escale , shape = .eshape )
+    misc$expected = TRUE
+    misc$nsimEIM = .nsimEIM
+  }), list( .lscale = lscale, .lshape = lshape,
+            .escale = escale, .eshape = eshape,
+            .nsimEIM = nsimEIM ))),
+
+  loglikelihood = eval(substitute(function(mu, y, w, 
+                  residuals = FALSE, eta, extra = NULL) {
+
+    Scale = eta2theta(eta[, 1], .lscale , earg = .escale )
+    shape = eta2theta(eta[, 2], .lshape , earg = .eshape )
+#print("head(shape, 3)")
+#print( head(shape, 3) )
+#print("head(Scale, 3)")
+#print( head(Scale, 3) )
+    
+    if (residuals) stop("loglikelihood residuals",
+                        "not implemented yet") else {
+      sum(w * dexpgeom(x = y, scale = Scale, shape = shape, log = TRUE))     
+    }
+  }, list( .lscale = lscale , .lshape = lshape , 
+           .escale = escale , .eshape = eshape ))), 
+      
+  vfamily = c("expgeometric"),
+
+  deriv = eval(substitute(expression({
+    Scale = eta2theta(eta[, 1], .lscale , earg = .escale )
+    shape = eta2theta(eta[, 2], .lshape , earg = .eshape )
+
+# JGL calculated:
+     temp2 <- exp(-y / Scale)
+     temp3 <- shape * temp2
+     temp4 <- y / Scale^2
+     dl.dscale =  -1 / Scale + temp4 + 2 * temp4 * temp3 / (1 - temp3)
+     dl.dshape = -1 / (1 - shape)    + 2 * temp2 / (1 - temp3)
+
+    dscale.deta = dtheta.deta(Scale, .lscale , earg = .escale )            
+    dshape.deta = dtheta.deta(shape, .lshape , earg = .eshape )
+    dthetas.detas = cbind(dscale.deta, dshape.deta)
+
+    answer <- c(w) * cbind(dl.dscale, dl.dshape) * dthetas.detas
+#print("summary(answer)")
+#print( summary(answer) )
+#print("head(answer, 3)")
+#print( head(answer, 3) )
+    answer
+  }), list( .lscale = lscale , .lshape = lshape,
+            .escale = escale,  .eshape = eshape ))),
+
+#######################
+  weight = eval(substitute(expression({
+  
+#EIM copied exactly as Adamidis article page 40
+# Yet to do: get this proper Fisher scoring going.
+
+# gls package function "dilog()" used for polylog function..check up
+# on this.
+# if (FALSE) {
+
+#   ed2l.dscale2 = (3 * shape - 2 * (shape - (1 - shape) *
+#                   (gsl:::dilog(shape,2)$val))) / (3 * Scale^2 * shape)
+
+#   ed2l.dshape2 = (1 - shape)^(-2) / 3
+
+#   ed2l.dscaleshape = (4 * shape^2 - shape + (1 - shape)^2 *
+#                     log1p(-shape)) / (3 * Scale * shape^2 * (1 - shape))
+
+#   wz <- matrix(0, n, dimm(M))
+#   wz[, iam(1, 1, M)] = dscale.deta^2 * ed2l.dscale2
+#   wz[, iam(2, 2, M)] = dshape.deta^2 * ed2l.dshape2
+#   wz[, iam(1, 2, M)] = dscale.deta * dshape.deta * ed2l.dscaleshape
+#   c(w) * wz
+# }
+
+
+# 5/10/07: Use simulation to estimate the EIM
+# Use an updating formula for the mean and variance
+# Ref.: Hastie and Tibshirani, 1990, GAM book, p.35.
+# Here, the variance has 'n' in denominator, not 'n-1'.
+
+        run.varcov = 0
+        ind1 = iam(NA, NA, M = M, both = TRUE, diag = TRUE)
+
+        if (length( .nsimEIM )) {
+# Simulated FS used only if nsimEIM was specified.
+            for(ii in 1:( .nsimEIM )) {
+                ysim = rexpgeom(n, scale=Scale, shape=shape)
+
+# Now compute some quantities
+                temp2 <- exp(-ysim / Scale)
+                temp3 <- shape * temp2
+                temp4 <- ysim / Scale^2
+                dl.dscale =  -1 / Scale + temp4 + 
+                             2 * temp4 * temp3 / (1 - temp3)
+                dl.dshape = -1 / (1 - shape) + 
+                             2 * temp2 / (1 - temp3)
+
+                temp6 = cbind(dl.dscale, dl.dshape)
+#print("temp6[1:3,]")
+#print( temp6[1:3,] )
+                run.varcov = run.varcov +
+                           temp6[,ind1$row.index] * temp6[,ind1$col.index]
+            }
+
+            run.varcov = run.varcov / .nsimEIM
+
+# Can do even better if it is an intercept-only model
+            wz = if (intercept.only)
+                matrix(colMeans(run.varcov),
+                       n, ncol(run.varcov), byrow = TRUE) else run.varcov
+
+#print("wz[1:3,]")
+#print( wz[1:3,] )
+            wz = wz * dthetas.detas[, ind1$row] *
+                      dthetas.detas[, ind1$col]
+#print("using simulation")
+        }
+#print("wz[1:3,]")
+#print( wz[1:3,] )
+
+    c(w) * wz      
+  }), list( .nsimEIM = nsimEIM ))))
+}
+
+
+
+
+
+
+#=======================================================================
+# 16/02/10; [drpq]explog() and explogarithmic().
+# Reference: Tahmasabi and Rezaei, CSDA 52 (2008) pg 3889--3901
+
+# Notes:
+# Scale is the reciprocal of scale in Tahmasabi.
+
+
+# Ref: Tahmasabi pg.3890
+dexplog <- function(x, scale = 1, shape, log = FALSE) {
+  if (!is.logical(log.arg <- log))
+    stop("bad input for argument 'log'")
+  rm(log)
+
+  N <- max(length(x), length(scale), length(shape))
+  x <- rep(x, len = N)
+  scale <- rep(scale, len = N)
+  shape <- rep(shape, len = N)
+
+  logdensity <- rep(log(0), len = N)
+  if (any(xok <- (x > 0))) {
+    temp1 <- -x[xok] / scale[xok]
+    logdensity[xok] <- -log(-log(shape[xok])) - log(scale[xok]) + 
+                       log1p(-shape[xok]) + temp1 - 
+                       log1p(-(1-shape[xok]) * exp(temp1))
+  }
+
+  logdensity[(scale <= 0) | (shape <= 0) | (shape >= 1)] <- NaN
+  if (log.arg) {
+    logdensity
+  } else {
+     exp(logdensity)
+  }
+}
+
+
+# Ref: Tahmasabi pg. 3890
+pexplog <- function(q, scale = 1, shape) {
+  ans <- 1 - log1p(-(1-shape) * exp(-q / scale)) / log(shape)
+  ans[q <= 0] <- 0
+  ans[(scale <= 0) | (shape <= 0) | (shape >= 1)] <- NaN
+  ans
+}
+
+
+
+#ref:  Tahmasabi pg. 3892
+# 20110319; this was wrong. Corrected by TWY.
+qexplog <- function(p, scale = 1, shape) {
+
+# orig is wrong:
+# ans <- scale * log((1 - shape) / (1 - shape^p))
+
+# 20110319, twy picked up an error:
+  ans <- -scale * (log1p(-shape^(1.0 - p)) - log1p(-shape))
+
+  ans[(scale <= 0) | (shape <= 0) | (shape >= 1)] <- NaN
+  ans[p < 0] <- NaN
+  ans[p > 1] <- NaN
+  ans[p == 0] <- 0
+  ans[p == 1] <- Inf
+  ans
+}
+
+
+
+#ref:  Tahmasabi pg. 3892
+rexplog <- function(n, scale = 1, shape) {
+  ans <- qexplog(runif(n), scale = scale, shape = shape)
+  ans[(scale <= 0) | (shape <= 0) | (shape >= 1)] <- NaN
+  ans
+}
+
+
+
+
+
+
+#=================================================================
+# Exponential logarithmic.
+# Reference: Tahmasbi and Rezaei, CSDA 52 (2008) pg 3889--3901
+
+# Notes:
+# Scale is the reciprocal of scale in Tahmasabi.
+
+#updated and working 27/02/11
+explogarithmic.control <- function(save.weight = TRUE, ...)
+{
+# Because of nsimEIM in @weight
+    list(save.weight = save.weight)
+}
+
+ explogarithmic = function (lscale = "loge", lshape = "logit",
+                            escale = list(), eshape = list(),
+                            iscale = NULL,   ishape = NULL,
+                            tol12 = 1.0e-05, zero = 1,
+                            nsimEIM = 400) {
+
+  if (mode(lshape) != "character" && mode(lshape) != "name")
+    lshape = as.character(substitute(lshape))
+  if (mode(lscale) != "character" && mode(lscale) != "name")
+    lscale = as.character(substitute(lscale))
+
+  if (length(ishape))
+    if (!is.Numeric(ishape, posit = TRUE) || any(ishape >= 1))
+      stop("bad input for argument 'ishape'")
+
+  if (length(iscale))
+    if (!is.Numeric(iscale, posit = TRUE))
+    stop("bad input for argument 'iscale'")
+
+  if (length(zero) && !is.Numeric(zero, integer = TRUE, posit = TRUE))
+    stop("bad input for argument 'zero'")
+
+  if (!is.list(escale))
+    escale = list()
+  if (!is.list(eshape))
+    eshape = list()
+
+  if (!is.Numeric(nsimEIM, allow = 1, integ = TRUE))
+      stop("bad input for argument 'nsimEIM'")
+  if (nsimEIM <= 50)
+      stop("'nsimEIM' should be an integer greater than 50")
+
+  new("vglmff",
+  blurb = c("Exponential logarithmic distribution\n\n",
+            "Links:    ",
+            namesof("Scale", lscale, earg = escale), ", ",
+            namesof("shape", lshape, earg = eshape), "\n",
+            "Mean:     ", "(-polylog(2, 1 - p) * Scale) / log(shape)"),
+# mean = Tahmabasi pg. 3891
+
+  constraints = eval(substitute(expression({
+    constraints <- cm.zero.vgam(constraints, x, .zero, M)
+  }), list( .zero = zero ))),
+
+  initialize = eval(substitute(expression({
+    if (ncol(cbind(y)) != 1)
+      stop("response must be a vector or a one-column matrix")
+
+    predictors.names = c(
+      namesof("Scale", .lscale , earg = .escale , short = TRUE),
+      namesof("shape", .lshape , earg = .eshape , short = TRUE))
+
+    if (!length(etastart)) {
+
+      scale.init = if (is.Numeric( .iscale , posit = TRUE)) {
+                     rep( .iscale , len = n)
+                   } else {
+# The scale parameter should be
+# the standard deviation of y.
+                     stats:::sd(y)  
+                   }
+
+      shape.init = if (is.Numeric( .ishape , posit = TRUE)) {
+                     rep( .ishape , len = n)
+                   } else {
+# Use the formula for the median (Tahmasabi pg. 3891):
+                      rep((exp(median(y)/scale.init) - 1)^2, len = n)
+                   }
+# But avoid extremes:
+      shape.init[shape.init >= 0.95] = 0.95
+      shape.init[shape.init <= 0.05] = 0.05
+
+#print("head(scale.init)")
+#print( head(scale.init) )
+#print("head(shape.init)")
+#print( head(shape.init) )
+
+      etastart = cbind(theta2eta(scale.init, .lscale , earg = .escale ),
+                       theta2eta(shape.init, .lshape , earg = .eshape ))
+
+#print("head(etastart, 3)")
+#print( head(etastart, 3) )
+    }
+   }), list( .lscale = lscale, .lshape = lshape,
+             .iscale = iscale, .ishape = ishape,
+             .escale = escale, .eshape = eshape))),
+
+  inverse = eval(substitute(function(eta, extra = NULL) {
+    Scale = eta2theta(eta[, 1], .lscale , earg = .escale )
+    shape = eta2theta(eta[, 2], .lshape , earg = .eshape )
+
+#  warning("returning dud means")
+#    runif(nrow(eta))        
+# zz yet to do: Find polylog function
+
+# mean should be the fitted value; Tahmasabi pg. 3891
+#    (-polylog(2, 1 - p) * Scale) / log(shape)
+# mean contains polylog function therefore return median for now:
+
+    qexplog(p = 0.5, shape = shape, scale = Scale)  
+
+  }, list( .lscale = lscale, .lshape = lshape,
+           .escale = escale, .eshape = eshape ))),
+
+  last = eval(substitute(expression({
+    misc$link =    c(Scale = .lscale , shape = .lshape )
+    misc$earg = list(Scale = .escale , shape = .eshape )
+    misc$expected = TRUE
+    misc$nsimEIM = .nsimEIM
+  }), list( .lscale = lscale, .lshape = lshape,
+            .escale = escale, .eshape = eshape,
+            .nsimEIM = nsimEIM ))),
+
+  loglikelihood = eval(substitute(function(mu, y, w,
+                  residuals = FALSE, eta, extra = NULL) {
+
+    Scale = eta2theta(eta[, 1], .lscale , earg = .escale )
+    shape = eta2theta(eta[, 2], .lshape , earg = .eshape )
+    
+#print("head(shape, 3)")
+#print( head(shape, 3) )
+#print("head(Scale, 3)")
+#print( head(Scale, 3) )
+
+    if (residuals) stop("loglikelihood residuals",
+                        "not implemented yet") else {
+      sum(w * dexplog(x = y, scale = Scale, shape = shape, log = TRUE))
+    }
+  }, list( .lscale = lscale , .lshape = lshape ,
+           .escale = escale , .eshape = eshape ))),
+
+  vfamily = c("explogarithmic"),
+
+  deriv = eval(substitute(expression({
+    Scale = eta2theta(eta[, 1], .lscale , earg = .escale )
+    shape = eta2theta(eta[, 2], .lshape , earg = .eshape )
+
+# JGL calculated:
+     temp2 <- exp(-y / Scale)
+     temp3 <- y / Scale^2
+     temp4 <- 1 - shape
+     dl.dscale = (-1 / Scale) + temp3 + (temp4 * temp3 *
+                 temp2) / (1 - temp4 * temp2)
+     dl.dshape = -1 / (shape * log(shape)) - 1 / temp4 -
+                 temp2 / (1 - temp4 * temp2)
+
+    dscale.deta = dtheta.deta(Scale, .lscale , earg = .escale )
+    dshape.deta = dtheta.deta(shape, .lshape , earg = .eshape )
+    dthetas.detas = cbind(dscale.deta, dshape.deta)
+
+    answer <- c(w) * cbind(dl.dscale, dl.dshape) * dthetas.detas
+#print("summary(answer)")
+#print( summary(answer) )
+#print("head(answer, 3)")
+#print( head(answer, 3) )
+    answer
+  }), list( .lscale = lscale , .lshape = lshape,
+            .escale = escale,  .eshape = eshape ))),
+
+#######################
+  weight = eval(substitute(expression({
+
+
+# 5/10/07: Use simulation to estimate the EIM
+
+        run.varcov = 0
+        ind1 = iam(NA, NA, M = M, both = TRUE, diag = TRUE)
+
+        if (length( .nsimEIM )) {
+# Simulated FS used only if nsimEIM was specified.
+            for(ii in 1:( .nsimEIM )) {
+                ysim = rexplog(n, scale=Scale, shape=shape)
+
+# Now compute some quantities
+                temp2 <- exp(-ysim / Scale)
+                temp3 <- ysim / Scale^2
+                temp4 <- 1 - shape
+                dl.dscale = (-1 / Scale) + temp3 + (temp4 * temp3 *
+                             temp2) / (1 - temp4 * temp2)
+                dl.dshape = -1 / (shape * log(shape)) - 1 / temp4 -
+                            temp2 / (1 - temp4 * temp2)
+
+                temp6 = cbind(dl.dscale, dl.dshape)
+#print("temp6[1:3,]")
+#print( temp6[1:3,] )
+                run.varcov = run.varcov +
+                           temp6[,ind1$row.index] * temp6[,ind1$col.index]
+            }
+
+            run.varcov = run.varcov / .nsimEIM
+
+# Can do even better if it is an intercept-only model
+            wz = if (intercept.only)
+                matrix(colMeans(run.varcov),
+                       n, ncol(run.varcov), byrow = TRUE) else run.varcov
+
+#print("wz[1:3,]")
+#print( wz[1:3,] )
+            wz = wz * dthetas.detas[, ind1$row] *
+                      dthetas.detas[, ind1$col]
+#print("using simulation")
+        }
+#print("wz[1:3,]")
+#print( wz[1:3,] )
+
+    c(w) * wz
+  }), list( .nsimEIM = nsimEIM ))))
+}
+
+
+
+
+
+
+
+#=======================================================================
+# 09/02/10; [drpq]weibull3()
+# Reference "The Weibull distribution - A Handbook" by Horst Rinne
+
+
+# 20110319; withdrawing [dpqrt]weibull3() due to regularity conditions not
+# being met.
+
+
+  
+#Ref: pg. 30
+#working 10/02/2010
+dweibull3 <- function(x, location = 0, scale = 1, shape, log = FALSE) {
+
+    log.arg = log
+    rm(log)
+    dweibull(x = x - location, shape = shape, scale = scale, log = log.arg)
+}
+
+# Ref: pg 43
+# working 10/02/2010
+pweibull3 <- function(q, location = 0, scale = 1, shape) {
+  pweibull(q = q - location, scale = scale, shape = shape)
+}
+
+
+# Ref: pg 68
+# updated and working 18/02/2010
+qweibull3 <- function(p, location = 0, scale = 1, shape) {
+  location + qweibull(p = p, shape = shape, scale = scale)
+}
+
+
+# Ref: pg 68
+# working 11/02/2010
+rweibull3 <- function(n, location = 0, scale = 1, shape) {
+  location + rweibull(n = n, shape = shape, scale = scale)
+}
+
+
+#=====================================
+# 3-parameter Weibull function
+# 07/02/2011
+
+# This code is based on the 2-parameter Weibull function weibull()
+# Does not accomodate censoring yet.
+# Reference "The Weibull distribution - A Handbook" by Horst Rinne
+
+if (FALSE)
+ weibull3    = function(llocation = "identity", lscale = "loge",
+                       lshape = "loge", elocation = list(),
+                       escale = list(), eshape = list(),
+                       ilocation = NULL, iscale = NULL, ishape = NULL,
+                       imethod = 1, zero = c(2, 3))
+{
+
+  llocat = llocation
+  elocat = elocation
+  ilocat = ilocation
+
+  if (mode(llocat) != "character" && mode(llocat) != "name")
+    llocat = as.character(substitute(llocat))
+  if (mode(lscale) != "character" && mode(lscale) != "name")
+    lscale = as.character(substitute(lscale))
+  if (mode(lshape) != "character" && mode(lshape) != "name")
+    lshape = as.character(substitute(lshape))
+   
+  if (length(zero) && !is.Numeric(zero, integer = TRUE, posit = TRUE))
+    stop("bad input for argument 'zero'")
+
+  if (!is.Numeric(imethod, allow = 1, integer = TRUE, positi = TRUE) ||
+      imethod > 3)
+      stop("argument 'imethod' must be 1, 2 or 3")
+
+  if (!is.list(elocat)) elocat = list()
+  if (!is.list(eshape)) eshape = list()
+  if (!is.list(escale)) escale = list()
+
+  new("vglmff",
+  blurb = c("3-parameter Weibull distribution\n\n",
+            "Links:    ",
+            namesof("location", llocat, earg = elocat), ", ",
+            namesof("scale",    lscale, earg = escale), ", ",
+            namesof("shape",    lshape, earg = eshape), "\n",
+            "Mean:     location + scale * gamma(1 + 1/shape)\n",
+            "Variance: scale^2 * (gamma(1 + 2/shape) - ",
+                      "gamma(1 + 1/shape)^2)"),
+#Ref: Rinne (Mean - pg 77 eqn. 2.64b; Var - pg 89 eqn. 2.88a)
+  constraints = eval(substitute(expression({
+    constraints = cm.zero.vgam(constraints, x, .zero, M)
+  }), list( .zero = zero ))),
+  
+  initialize = eval(substitute(expression({
+    y = cbind(y)
+    if (ncol(y) > 1)
+      stop("the response must be a vector or a 1-column matrix")
+
+    if (is.SurvS4(y))
+      stop("only uncensored observations are allowed; don't use SurvS4()")
+
+    predictors.names =
+      c(namesof("location", .llocat, earg = .elocat, tag = FALSE),
+        namesof("scale",    .lscale, earg = .escale, tag = FALSE),
+        namesof("shape",    .lshape, earg = .eshape, tag = FALSE))
+
+
+    if (!length(etastart)) {
+#Assigning shape.init, scale.init, locat.init
+                
+        if ( .imethod == 1) {
+# method of moments - Rinne page 464
+# working - 22/02/2011
+                                  
+          if(length( .ishape )) {
+             shape.init = rep( .ishape , len = n )
+          } else {  
+# approximating equation for shape
+# eqn (12.10b)
+             alpha3 = ((1/n) *(sum((y - mean(y))^3)))/((1/n) * (sum((y - 
+                       mean(y))^2)))^(3/2)
+# eqn (12.10d)
+             temp2 = (alpha3 + 1.14)          
+             shape.init = rep(-0.729268 - 0.338679 * alpha3 + 4.96077 * 
+                          temp2^(-1.0422) + 0.683609 * 
+                          (log(temp2))^2, len = n)
+#valid for (0.52 <= shape.init <= 100)
+          }                                  
+                                 
+#eqn (12.9b)
+          scale.init = if(length( .iscale )) {
+                         rep( .iscale , len = n )
+                       } else {
+                         rep(stats:::sd(y) / sqrt(gamma(1 + 2/shape.init) - 
+                             gamma(1 + 1/shape.init)^2) , len = n)
+                       } 
+                                                           
+#eqn (12.8b)
+          locat.init = if(length( .ilocat )) { 
+                          rep( .ilocat , len = n )
+                       } else {
+                          rep(mean(y) - scale.init * gamma(1 + 1/shape.init),
+                              len = n)
+                       }
+#location = just below min value if smaller than MOM locat.init                       
+          locat.init = pmin(min(y) - 0.05 * diff(range(y)), locat.init)             
+        }
+        if ( .imethod == 2 || .imethod == 3) {  
+        #least squares method for scale and shape
+        #with two separate methods for locat
+                                       
+          #code from weibull (2-parameter) for least squares method                             
+          if (!length( .ishape ) || !length( .iscale )) {
+            anyc = FALSE  # extra$leftcensored | extra$rightcensored
+            i11 = if ( .imethod == 2 || .imethod == 3) anyc else 
+                  FALSE 
+            # can be all data
+            qvec = c(.25, .5, .75)  # Arbitrary; could be made an argument
+            init.shape = if (length( .ishape )) .ishape else 1
+            ###init.shape???  should be shape.init?
+            xvec = log(-log1p(-qvec))
+            fit0 = lsfit(x = xvec, y=log(quantile(y[!i11], qvec)))
+          }
+                                       
+            shape.init = rep(if(length( .ishape )) .ishape else 
+                         1/fit0$coef["X"], len = n)
+            scale.init = rep(if(length( .iscale )) .iscale else 
+                         exp(fit0$coef["Intercept"]), len = n)
+            locat.init = rep(if(length( .ilocat )) .ilocat else                                   
+                           if ( .imethod == 2) {
+                             ifelse(min(y)>0, 0.75, 1.25) * min(y)
+                           } else {
+                             min(y) - 0.05 * diff(range(y))
+                           } 
+                           , len = n)
+         }
+#print("min(y)")         
+#print( min(y) )                            
+#print("head(locat.init)")
+#print( head(locat.init) )
+#print("head(scale.init)")
+#print( head(scale.init) )
+#print("head(shape.init)")
+#print( head(shape.init) )
+                                           
+        etastart =
+        cbind(theta2eta(locat.init, .llocat, earg = .elocat ),
+              theta2eta(scale.init, .lscale, earg = .escale ),
+              theta2eta(shape.init, .lshape, earg = .eshape ))
+
+ print("head(etastart, 3)")
+ print( head(etastart, 3) )
+
+    }
+    }), list( .llocat = llocat, .lscale = lscale, .lshape = lshape,
+              .elocat = elocat, .escale = escale, .eshape = eshape,
+              .ilocat = ilocat, .iscale = iscale, .ishape = ishape,
+              .imethod = imethod) )),
+
+  inverse = eval(substitute(function(eta, extra = NULL) {
+    locat = eta2theta(eta[, 1], .llocat, earg = .elocat )
+    scale = eta2theta(eta[, 2], .lscale, earg = .escale )
+    shape = eta2theta(eta[, 3], .lshape, earg = .eshape )
+
+# fitted value = mean (pg.77 eqn. 2.64b)
+    locat + scale * gamma(1 + 1/shape)
+    
+  }, list( .llocat = llocat, .lscale = lscale, .lshape = lshape,
+           .elocat = elocat, .escale = escale, .eshape = eshape ) )),
+  last = eval(substitute(expression({
+
+# From 2-parameter Weibull code:
+    if (regnotok <- any(shape <= 2))
+      warning("MLE regularity conditions are violated",
+              "(shape <= 2) at the final iteration")
+
+# Putting the MLE warning here good because it could possibly be violated
+# only in the early iterations.
+# Putting the MLE warning here is bad  because vcov() gets no warning.
+
+    misc$link =    c(location = .llocat, scale = .lscale, shape = .lshape)
+    misc$earg = list(location = .elocat, scale = .escale, shape = .eshape)
+    misc$RegCondOK = !regnotok   # Save this for later
+  }), list( .llocat = llocat, .lscale = lscale, .lshape = lshape,
+            .elocat = elocat, .escale = escale, .eshape = eshape
+           ) )),
+ 
+  loglikelihood = eval(substitute(
+          function(mu, y, w, residuals = FALSE,eta, extra = NULL) {
+    locat = eta2theta(eta[, 1], .llocat, earg = .elocat )      
+    scale = eta2theta(eta[, 2], .lscale, earg = .escale )
+    shape = eta2theta(eta[, 3], .lshape, earg = .eshape )
+
+
+# 20110319; Some of this code comes from gev().
+    if (any(bad <- (y <= locat))) {
+        cat("There are", sum(bad), "range violations in @loglikelihood\n")
+        flush.console()
+    }
+    old.answer =
+            sum(bad) * (-1.0e10) + ifelse(any(!bad),
+            sum(w[!bad] * dweibull3(x = y[!bad], location = locat[!bad],
+                                    scale = scale[!bad],
+                                    shape = shape[!bad], log = TRUE)), 0)
+
+#   ell2 = dweibull3(x = y, location = locat, scale = scale, 
+#                    shape = shape, log = TRUE)
+
+#pg 405 eqn. 11.4b
+
+#    temp3 = y - locat
+#    ell1 = log(shape) - shape * log(scale) + (shape-1) * log(temp3) - 
+#            (temp3/scale)^shape
+
+#print("max(abs(ell1 - ell2))")
+#print( max(abs(ell1 - ell2)) )
+
+    if (residuals) stop("loglikelihood residuals not ",
+                        "implemented yet") else {
+#     sum(w * ell2)
+      old.answer
+    }
+  }, list( .llocat = llocat, .lscale = lscale, .lshape = lshape,
+           .elocat = elocat, .escale = escale, .eshape = eshape ) )),
+  vfamily = c("weibull3"),
+  deriv = eval(substitute(expression({
+ print("in @deriv")
+ print("head(eta, 3)")
+ print( head(eta, 3) )
+    locat = eta2theta(eta[, 1], .llocat, earg = .elocat )
+    scale = eta2theta(eta[, 2], .lscale, earg = .escale )
+    shape = eta2theta(eta[, 3], .lshape, earg = .eshape )
+
+    dlocat.deta = dtheta.deta(locat, .llocat, earg = .elocat )
+    dshape.deta = dtheta.deta(shape, .lshape, earg = .eshape )
+    dscale.deta = dtheta.deta(scale, .lscale, earg = .escale )
+
+# equations from pg 405
+    temp4 = shape / scale
+    zedd = (y - locat) / scale
+ print("min(zedd)")
+ print( min(zedd) )
+    
+    if (min(zedd) <= 0)
+       warning("Boundary problem. Taking evasive action.")
+        
+    dl.dlocat =  (1 - shape) / (y - locat) + temp4 * zedd^(shape - 1)
+    dl.dscale = temp4 * (-1 + zedd^shape)
+    dl.dshape = 1 / shape + log(abs(zedd)) - log(abs(zedd)) * zedd^shape
+
+    c(w) * cbind( dl.dlocat * dlocat.deta,
+                  dl.dscale * dscale.deta,
+                  dl.dshape * dshape.deta)
+  }), list( .llocat = llocat, .lscale = lscale, .lshape = lshape,
+            .elocat = elocat, .escale = escale, .eshape = eshape ) )),
+  weight = eval(substitute(expression({
+ print("in @weight of weibull3()")
+#   EulerM = 0.57721566490153286 
+    EulerM = -digamma(1.0)
+
+ print("head(locat)")
+ print( head(locat) )
+ print("head(scale)")
+ print( head(scale) )
+ print("head(shape)")
+ print( head(shape) )
+
+
+    wz = matrix(as.numeric(NA), n, dimm(M)) 
+
+# equations involving location parameter from Horst Rinne pg 410
+    temp6 = 1 - 1 / shape
+    ed2l.dlocat2 = gamma(1 - 2/shape) * ((shape - 1) / scale)^2
+#   ed2l.dshape2 = ((1 - EulerM)^2 + (pi^2)/6)/shape^2 # Kleiber&Kotz (2003)
+#   ed2l.dshape2: modified from the 2-parameter weibull code:
+    ed2l.dscale2 = (shape/scale)^2
+    ed2l.dshape2 = (6 * (EulerM - 1)^2 + pi^2)/(6 * shape^2)
+    ed2l.dlocatscale = -gamma(2 - 1/shape) * (shape/scale)^2
+    ed2l.dlocatshape = -(1/scale) * temp6 * gamma(temp6) *
+                       (1 + digamma(temp6))
+    ed2l.dshapescale = (EulerM - 1) / scale
+    
+    wz[, iam(1,1,M)] = ed2l.dlocat2 * dlocat.deta^2
+    wz[, iam(2,2,M)] = ed2l.dscale2 * dscale.deta^2
+    wz[, iam(3,3,M)] = ed2l.dshape2 * dshape.deta^2
+    wz[, iam(1,2,M)] = ed2l.dlocatscale * dlocat.deta * dscale.deta
+    wz[, iam(1,3,M)] = ed2l.dlocatshape * dlocat.deta * dshape.deta
+    wz[, iam(2,3,M)] = ed2l.dshapescale * dshape.deta * dscale.deta
+    
+# Putting the MLE warning here is bad because could possibly be violated
+# only in the early iterations.
+# Putting MLE warning here is good because vcov() gets another warning.
+
+ print("head(wz)")
+ print( head(wz) )
+
+    wz = c(w) * wz
+    wz
+  }), list( .llocat = llocat, .lscale = lscale, .lshape = lshape,
+            .elocat = elocat, .escale = escale, .eshape = eshape ))))
+}
+
+
+# End of James Lauder code here
+
+#=========================================================================
+
+
+
+
+# ----------------------------------------------------------------------
+# (b) Arash code
+# 20110615
+# TPN.R
+# ----------------------------------------------------------------------
+# ----------------------------------------------------------------------
+
+   ### Two-piece normal (TPN) family 
+
+################      dtpn       ##################################
+
+dtpn <- function(x, location = 0, scale = 1, skewpar = 0.5,
+                 log.arg = FALSE) {
+
+# Reference: Arash handnotes
+
+  if (any(skewpar <= 0 |
+          skewpar >= 1 |
+          scale   <= 0 ,
+           na.rm = TRUE))
+    stop("some parameters out of bound")
+
+# Recycle the vectors to equal lengths
+  LLL = max(length(x), length(location), length(scale),
+            length(skewpar))
+  if (length(x) != LLL) x = rep(x, length = LLL)
+  if (length(location) != LLL) location = rep(location, length = LLL)
+  if (length(scale) != LLL) scale = rep(scale, length = LLL)
+  if (length(skewpar) != LLL) skewpar = rep(skewpar, length = LLL)
+    
+  zedd <- (x - location) / scale
+
+  log.s1 <-  -zedd^2 / (8 * skewpar^2)
+  log.s2 <-  -zedd^2 / (8 * (1 - skewpar)^2)
+            
+  logdensity <- log.s1
+  logdensity[zedd > 0] <- log.s2[zedd > 0]
+  
+  logdensity <- logdensity -log(scale) - log(sqrt(2 * pi))
+
+  if (log.arg) logdensity else exp(logdensity)
+}
+
+################      ptpn         ################################
+ptpn <- function(q, location = 0, scale = 1, skewpar = 0.5) {
+
+  if (any(skewpar <= 0 |
+          skewpar >= 1 |
+          scale   <= 0 ,
+          na.rm = TRUE))
+    stop("some parameters out of bound")
+
+# Reference: Arash handnotes
+
+ zedd <- (q - location) / scale
+
+ s1 <- 2 * skewpar * pnorm(zedd, sd = 2 * skewpar) #/ scale
+  s2 <- skewpar + (1 - skewpar) * pgamma(zedd^2 / (8 * (1-skewpar)^2), 0.5) 
+ 
+ans <- rep(0.0, length(zedd))
+ans[zedd <= 0] <- s1[zedd <= 0]
+ans[zedd > 0] <- s2[zedd > 0]
+
+ans
+}
+
+
+
+##################### qtpn  ############################################
+pos <- function(x) ifelse(x > 0, x, 0.0)
+ 
+
+qtpn <- function(p, location = 0, scale = 1, skewpar = 0.5){
+
+  pp = p
+  if (any(pp      <= 0 |
+          pp      >= 1 |
+          skewpar <= 0 |
+          skewpar >= 1 |
+          scale   <= 0 ,
+             na.rm = TRUE))
+    stop("some parameters out of bound")
+    # Recycle the vectors to equal lengths
+  LLL = max(length(pp), length(location), length(scale),
+            length(skewpar))
+  if (length(pp) != LLL) pp = rep(pp, length = LLL)
+  if (length(location) != LLL) location = rep(location, length = LLL)
+  if (length(scale) != LLL) scale = rep(scale, length = LLL)
+  if (length(skewpar) != LLL) skewpar = rep(skewpar, length = LLL)
+       
+  qtpn <- rep(as.numeric(NA), length(LLL))
+  qtpn <- qnorm(pp / (2 * skewpar), sd = 2 * skewpar)
+  qtpn[pp > skewpar] <- sqrt(8 * ( 1 - skewpar)^2 * 
+                        qgamma(pos( pp - skewpar) / ( 
+                        1 - skewpar),.5))[pp > skewpar]
+        
+   qtpn * scale + location
+  
+}
+
+
+
+
+###########     rast     ##########################################
+
+rtpn <- function(n, location = 0, scale = 1, skewpar = 0.5) {
+
+
+  qtpn(p = runif(n), location = location, scale = scale, skewpar = skewpar)
+}
+
+
+### Two-piece normal family function via VGAM
+
+tpnff <- function(llocation = "identity", lscale = "loge",
+                 elocation = list(), escale = list(), 
+                  pp = 0.5, method.init = 1,  zero = 2)
+{
+# Arash : At the moment, I am working on two important(In Quant. Reg.)
+# parameters of the TPN distribution, I am not worry about the skew 
+#  parameter p.     
+# Note :  pp = Skewparameter
+  if (!is.Numeric(method.init, allow = 1, integ = TRUE, posit = TRUE) ||
+      method.init > 4)
+       stop("'imethod' must be 1 or 2 or 3 or 4")
+
+  if (!is.Numeric(pp, allow = 1, posit = TRUE))
+      stop("bad input for argument 'pp'")
+
+  if (mode(llocation)  !=  "character" && mode(llocation) != "name")
+       llocation = as.character(substitute(llocation))
+  if (mode(lscale)  !=  "character" && mode(lscale) != "name")
+       lscale = as.character(substitute(lscale))
+  if (length(zero) && !is.Numeric(zero, integer = TRUE, posit = TRUE))
+       stop("bad input for argument 'zero'")
+  if (!is.list(elocation)) elocation = list()
+  if (!is.list(escale)) escale = list()
+
+  new("vglmff",
+    blurb = c("Two-piece normal distribution \n\n",
+              "Links: ",
+              namesof("location",  llocation,  earg = elocation), ", ",
+              namesof("scale",     lscale,     earg = escale), "\n\n",
+              "Mean: "),
+    constraints = eval(substitute(expression({
+            constraints <- cm.zero.vgam(constraints, x, .zero, M)
+    }), list( .zero = zero ))),
+    initialize = eval(substitute(expression({
+      predictors.names <-
+         c(namesof("location", .llocat, earg = .elocat, tag = FALSE),
+           namesof("scale",    .lscale, earg = .escale, tag = FALSE))
+      if (ncol(y <- cbind(y)) != 1)
+           stop("response must be a vector or a one-column matrix")
+      if (!length(etastart)) {
+          junk = lm.wfit(x = x, y = y, w = w)
+          scale.y.est <- sqrt( sum(w * junk$resid^2) / junk$df.residual )
+          location.init <- if ( .llocat == "loge") pmax(1/1024, y) else {
+            if ( .method.init == 3) {
+              rep(weighted.mean(y, w), len = n)
+            } else if ( .method.init == 2) {
+              rep(median(rep(y, w)), len = n)
+            } else if ( .method.init == 1) {
+              junk$fitted
+            } else {
+              y
+            }
+          }
+          etastart <- cbind(
+               theta2eta(location.init,  .llocat, earg = .elocat),
+               theta2eta(scale.y.est,    .lscale, earg = .escale))
+      }
+    }), list( .llocat = llocation, .lscale = lscale,
+              .elocat = elocation, .escale = escale,
+              .method.init=method.init ))),
+    inverse = eval(substitute(function(eta, extra = NULL) {
+      eta2theta(eta[,1], .llocat, earg = .elocat)
+    }, list( .llocat = llocation,
+             .elocat = elocation, .escale = escale ))),
+    last = eval(substitute(expression({
+      misc$link     <-    c("location" = .llocat, "scale" = .lscale)
+      misc$earg     <- list("location" = .elocat, "scale" = .escale)
+      misc$expected <- TRUE
+      misc$pp       <- .pp
+      misc$method.init <- .method.init
+    }), list( .llocat = llocation, .lscale = lscale,
+              .elocat = elocation, .escale = escale,
+              .pp     = pp,        .method.init = method.init ))),
+   loglikelihood = eval(substitute(
+     function(mu, y, w, residuals = FALSE, eta, extra = NULL) {
+     location <- eta2theta(eta[,1], .llocat, earg = .elocat)
+     myscale  <- eta2theta(eta[,2], .lscale, earg = .escale)
+     ppay      <- .pp
+     if (residuals) stop("loglikelihood residuals not ",
+                         "implemented yet") else {
+       sum(w * dtpn(y, skewpar = ppay, location = location,  scale = myscale,
+                      log.arg = TRUE))
+     }
+   }, list( .llocat = llocation, .lscale = lscale,
+            .elocat = elocation, .escale = escale,
+            .pp      = pp ))),
+    vfamily = c("tpnff"),
+    deriv = eval(substitute(expression({
+      mylocat <- eta2theta(eta[,1], .llocat,  earg = .elocat)
+      myscale <- eta2theta(eta[,2], .lscale,  earg = .escale)
+      mypp    <- .pp
+
+      zedd <- (y - mylocat) / myscale
+ #     cond1 <-    (zedd <= 0)
+       cond2 <-    (zedd > 0)
+
+      dl.dlocat        <-  zedd / (4 * mypp^2)  # cond1
+      dl.dlocat[cond2] <- (zedd / (4 * (1 - mypp)^2))[cond2]
+      dl.dlocat        <- dl.dlocat / myscale
+
+      dl.dscale        <-  zedd^2 / (4 * mypp^2)
+      dl.dscale[cond2] <- (zedd^2 / (4 * (1 - mypp)^2))[cond2]
+      dl.dscale        <- (-1 + dl.dscale) / myscale
+
+      #dl.dpp        <-  zedd^2 /  (4 * mypp^3)
+      #dl.dpp[cond2] <- -zedd^2 /  (4 * (1 - mypp)^3)[cond2]
+      
+
+
+      dlocat.deta <- dtheta.deta(mylocat, .llocat, earg = .elocat)
+      dscale.deta <- dtheta.deta(myscale, .lscale, earg = .escale)
+      ans <-
+      w * cbind(dl.dlocat * dlocat.deta,
+                dl.dscale * dscale.deta)
+      ans
+    }), list( .llocat = llocation, .lscale = lscale,
+              .elocat = elocation, .escale = escale,
+              .pp      = pp ))),
+    weight = eval(substitute(expression({
+      wz   <- matrix(as.numeric(NA), n, M) # diag matrix; y is one-col too
+      temp10 <- mypp * (1 - mypp)
+  ed2l.dlocat2        <- 1 / ((4 * temp10) * myscale^2)
+  ed2l.dscale2        <- 2 /  myscale^2
+# ed2l.dskewpar       <- 1 / temp10
+# ed2l.dlocatdskewpar <- (-2 * sqrt(2)) / (temp10 * sqrt(pi) * myscale)
+     
+
+    wz[, iam(1,1,M)] <- ed2l.dlocat2 * dlocat.deta^2
+    wz[, iam(2,2,M)] <- ed2l.dscale2 * dscale.deta^2
+  # wz[, iam(3,3,M)] <- ed2l.dskewpar2 * dskewpa.deta^2
+  # wz[, iam(1,3,M)] <-  ed2l.dlocatdskewpar * dskewpar.deta * dlocat.deta
+        ans
+      w * wz
+    })
+    
+    )))
+}
+
+
+
+  ########################################################################
+# Two-piece normal family function via VGAM (All 3 parameters will estimate)
+
+tpnff3 <- function(llocation = "identity", elocation = list(),
+                    lscale   = "loge",     escale    = list(),
+                    lskewpar = "identity", eskewpar  = list(),
+                         method.init = 1,  zero = 2)
+{
+  if (!is.Numeric(method.init, allow = 1, integ = TRUE, posit = TRUE) ||
+      method.init > 4)
+       stop("'imethod' must be 1 or 2 or 3 or 4")
+
+ # if (!is.Numeric(pp, allow = 1, posit = TRUE))
+  #    stop("bad input for argument 'pp'")
+
+  if (mode(llocation)  !=  "character" && mode(llocation) != "name")
+       llocation = as.character(substitute(llocation))
+  if (mode(lscale)  !=  "character" && mode(lscale) != "name")
+       lscale = as.character(substitute(lscale))
+  if (mode(lskewpar)  !=  "character" && mode(lskewpar) != "name")
+       lscale = as.character(substitute(lscale))
+  if (length(zero) && !is.Numeric(zero, integer = TRUE, posit = TRUE))
+       stop("bad input for argument 'zero'")
+  if (!is.list(elocation)) elocation = list()
+  if (!is.list(escale))    escale    = list()
+  if (!is.list(eskewpar))  eskewpar = list()
+
+  new("vglmff",
+    blurb = c("Two-piece normal distribution \n\n",
+              "Links: ",
+              namesof("location",  llocation,  earg = elocation), ", ",
+              namesof("scale",     lscale,     earg = escale),  ", ",
+              namesof("skewpar",    lscale,     earg = epp),  "\n\n",
+              "Mean: "),
+    constraints = eval(substitute(expression({
+            constraints <- cm.zero.vgam(constraints, x, .zero, M)
+    }), list( .zero = zero ))),
+    initialize = eval(substitute(expression({
+      predictors.names <-
+         c(namesof("location", .llocat, earg = .elocat, tag = FALSE),
+           namesof("scale",    .lscale, earg = .escale, tag = FALSE),
+           namesof("skewpar",  .lskewpar, earg = .eskewpar, tag = FALSE))
+      if (ncol(y <- cbind(y)) != 1)
+           stop("response must be a vector or a one-column matrix")
+      if (!length(etastart)) {
+          junk = lm.wfit(x = x, y = y, w = w)
+          scale.y.est <- sqrt( sum(w * junk$resid^2) / junk$df.residual )
+          location.init <- if ( .llocat == "loge") pmax(1/1024, y) else {
+            if ( .method.init == 3) {
+              rep(weighted.mean(y, w), len = n)
+            } else if ( .method.init == 2) {
+              rep(median(rep(y, w)), len = n)
+            } else if ( .method.init == 1) {
+              junk$fitted
+            } else {
+              y
+            }
+          }
+          skew.l.in <- sum((y < location.init)) / length(y)
+          etastart <- cbind(
+               theta2eta(location.init, .llocat,   earg = .elocat),
+               theta2eta(scale.y.est,   .lscale,   earg = .escale),
+               theta2eta(skew.l.in,     .lskewpar, earg = .escale))
+      }
+    }), list( .llocat = llocation, .lscale = lscale, .lskewpar = lskewpar,
+              .elocat = elocation, .escale = escale, .eskewpar = eskewpar,
+              
+              .method.init=method.init ))),
+    inverse = eval(substitute(function(eta, extra = NULL) {
+      eta2theta(eta[,1], .llocat, earg = .elocat)
+    }, list( .llocat = llocation,
+             .elocat = elocation, .escale = escale ))),
+    last = eval(substitute(expression({
+      misc$link     <- c("location" = .llocat, "scale" = .lscale, 
+                                    "skewpar" = .lskewpar)
+      misc$earg     <- list( "location" = .elocat, "scale" = .escale,
+                             "skewpar"  = .eskewpar)
+      misc$expected <- TRUE
+           misc$method.init <- .method.init
+    }), list( .llocat = llocation, .lscale = lscale, .lskewpar = lskewpar,
+              .elocat = elocation, .escale = escale, .eskewpar = lskewpar,
+                      .method.init = method.init ))),
+   loglikelihood = eval(substitute(
+     function(mu, y, w, residuals = FALSE, eta, extra = NULL) {
+     location <- eta2theta(eta[,1], .llocat, earg = .elocat)
+     myscale  <- eta2theta(eta[,2], .lscale, earg = .escale)
+     myskew  <- eta2theta(eta[,3], .lskewpar, earg = .eskewpar)
+ 
+      if (residuals) stop("loglikelihood residuals not ",
+                         "implemented yet") else {
+       sum(w * dtpn(y, location = location,  scale = myscale,
+                      skewpar = myskew, log.arg = TRUE))
+     }
+   }, list( .llocat = llocation, .lscale = lscale, .lskewpar = lskewpar,
+            .elocat = elocation, .escale = escale, .eskewpar = eskewpar
+             ))),
+    vfamily = c("tpnff3"),
+     deriv = eval(substitute(expression({
+      mylocat <- eta2theta(eta[,1], .llocat,  earg = .elocat)
+      myscale <- eta2theta(eta[,2], .lscale,  earg = .escale)
+     myskew   <- eta2theta(eta[,3], .lskewpar,  earg = .eskewpar)
+    
+
+      zedd <- (y - mylocat) / myscale
+ #     cond1 <-    (zedd <= 0)
+       cond2 <-    (zedd > 0)
+
+      dl.dlocat        <-  zedd / (4 * myskew^2)  # cond1
+      dl.dlocat[cond2] <- (zedd / (4 * (1 - myskew)^2))[cond2]
+      dl.dlocat        <- dl.dlocat / myscale
+
+      dl.dscale        <-  zedd^2 / (4 * myskew^2)
+      dl.dscale[cond2] <- (zedd^2 / (4 * (1 - myskew)^2))[cond2]
+      dl.dscale        <- (-1 + dl.dscale) / myscale
+
+      dl.dskewpar      <-     zedd^2 /  (4 * myskew^3)
+      dl.dskewpar[cond2] <- (-zedd^2 /  (4 * (1 - myskew)^3))[cond2]
+      
+
+
+      dlocat.deta <- dtheta.deta(mylocat, .llocat, earg = .elocat)
+      dscale.deta <- dtheta.deta(myscale, .lscale, earg = .escale)
+      dskewpar.deta <- dtheta.deta(myskew, .lskewpar, earg = .eskewpar)
+      ans <-
+      w * cbind(dl.dlocat * dlocat.deta,
+                dl.dscale * dscale.deta,
+                dl.dskewpar * dskewpar.deta
+                )
+      ans
+    }), list( .llocat = llocation, .lscale = lscale, .lskewpar = lskewpar,
+              .elocat = elocation, .escale = escale, .eskewpar = eskewpar
+              ))),
+    weight = eval(substitute(expression({
+      wz   <- matrix(as.numeric(NA), n, dimm(M)) # diag matrix; y is one-col too
+     
+      temp10 <- myskew * (1 - myskew)
+  ed2l.dlocat2        <- 1 / ((4 * temp10) * myscale^2)
+  ed2l.dscale2        <- 2 /  myscale^2
+  ed2l.dskewpar2      <- 3 / temp10
+  ed2l.dlocatdskewpar <- (-2 * sqrt(2)) / (temp10 * sqrt(pi) * myscale)
+     
+    print("hello")
+   wz[, iam(1,1,M)] <- ed2l.dlocat2 * dlocat.deta^2
+   wz[, iam(2,2,M)] <- ed2l.dscale2 * dscale.deta^2
+   wz[, iam(3,3,M)] <- ed2l.dskewpar2 * dskewpar.deta^2
+   wz[, iam(1,3,M)] <- ed2l.dlocatdskewpar * dskewpar.deta * dlocat.deta
+   
+       ans
+      w * wz
+    })
+    
+    )))
+}
+
+
+# ----------------------------------------------------------------------
+# (c) Not yet assigned
+# ----------------------------------------------------------------------
+# ----------------------------------------------------------------------
+
+
+
+
diff --git a/R/family.positive.R b/R/family.positive.R
index a085dec..ae30ba5 100644
--- a/R/family.positive.R
+++ b/R/family.positive.R
@@ -8,6 +8,386 @@
 
 
 
+rhuggins91 =
+  function(n, nTimePts = 5, pvars = length(xcoeff),
+           xcoeff = c(-2, 1, 2),
+           capeffect = -1,
+           double.ch = FALSE,
+           link = "logit", earg = list()
+           ) {
+
+
+  use.n <- if ((length.n <- length(n)) > 1) length.n else
+           if (!is.Numeric(n, integ = TRUE, allow = 1, posit = TRUE))
+               stop("bad input for argument 'n'") else n
+  orig.n <- use.n
+  use.n <- 1.50 * use.n + 100  # Bigger due to rejections
+
+  if (pvars == 0)
+    stop("argument 'pvars' must be at least one")
+  if (pvars > length(xcoeff))
+    stop("argument 'pvars' is too high")
+  
+  if (mode(link) != "character" && mode(link) != "name")
+    link = as.character(substitute(link))
+  if (!is.list(earg)) earg = list()
+
+
+  Ymatrix = matrix(0, use.n, nTimePts, dimnames =
+                   list(as.character(1:use.n),
+                        paste("y", 1:nTimePts, sep = "")))
+
+  CHmatrix = matrix(0, use.n, nTimePts, dimnames =
+                    list(as.character(1:use.n),
+                         paste("ch", 0:(nTimePts-1), sep = "")))
+
+  Xmatrix = cbind(x1 = rep(1.0, len = use.n))
+  if (pvars > 1)
+    Xmatrix = cbind(Xmatrix,
+                    matrix(runif(n = use.n * (pvars-1)), use.n, pvars - 1,
+                           dimnames = list(as.character(1:use.n),
+                                           paste("x", 2:pvars, sep = ""))))
+
+
+  linpred.baseline = xcoeff[1]
+  if (pvars > 1)
+    linpred.baseline = linpred.baseline +
+                       Xmatrix[, 2:pvars, drop = FALSE] %*% xcoeff[2:pvars]
+  sumrowy = rep(0, length = use.n)
+  for (jlocal in 1:nTimePts) {
+
+    CHmatrix[, jlocal] = as.numeric(sumrowy > 0) *
+                         (1 + double.ch)
+
+    linpred = linpred.baseline + (CHmatrix[, jlocal] >  0) * capeffect
+
+    Ymatrix[, jlocal] = rbinom(use.n, size = 1,
+             prob = eta2theta(linpred, link = link, earg = earg))
+
+    sumrowy = sumrowy + Ymatrix[, jlocal]
+  }
+
+
+  # Strip off rows where the animals were never caught
+  # Bug: problem if all values of sumrowy are zero.
+  index0 = (sumrowy == 0)
+  if (all(!index0))
+    stop("bug in this code: cannot handle no animals being caught")
+  Ymatrix = Ymatrix[!index0, , drop = FALSE]
+  Xmatrix = Xmatrix[!index0, , drop = FALSE]
+  CHmatrix = CHmatrix[!index0, , drop = FALSE]
+
+  # Bug: problem if all values of sumrowy are zero:
+  zCHmatrix = matrix(0, nrow(CHmatrix), ncol(CHmatrix),
+                     dimnames = list(as.character(1:nrow(CHmatrix)),
+                     paste("zch", 0:(ncol(CHmatrix)-1), sep = "")))
+
+
+  ans = data.frame(Ymatrix, Xmatrix, CHmatrix, zCHmatrix,
+                   Chistory = rep(0, length = nrow(Ymatrix)))
+
+
+  ans = if (nrow(ans) >= orig.n) ans[1:orig.n, ] else {
+        rbind(ans,
+              Recall(n = orig.n - nrow(ans),
+                     nTimePts = nTimePts, pvars = pvars,
+                     xcoeff = xcoeff,
+                     capeffect = capeffect,
+                     link = link, earg = earg))
+        }
+
+  rownames(ans) = as.character(1:orig.n)
+
+  attr(ans, "pvars") = pvars
+  attr(ans, "nTimePts") = nTimePts
+  attr(ans, "capeffect") = capeffect
+
+  ans
+}
+
+
+
+
+
+  
+
+dhuggins91 = function(x, prob, prob0 = prob, log = FALSE) {
+
+
+  x     = as.matrix(x)
+  prob  = as.matrix(prob)
+  prob0 = as.matrix(prob0)
+  log.arg = log
+  rm(log)
+
+
+
+  logAA0 = rowSums(log1p(-prob0))
+  AA0 = exp(logAA0)
+
+  ell1 = rowSums(x * log(prob) + (1 - x) * log1p(-prob)) - log1p(-AA0)
+  if (log.arg) ell1 else exp(ell1)
+}
+
+
+
+
+
+
+
+ huggins91 = function(link = "logit", earg = list(),
+                      parallel = TRUE,
+                      iprob = NULL,
+                      eim.not.oim = TRUE) {
+
+
+
+
+
+  if (mode(link) != "character" && mode(link) != "name")
+    link = as.character(substitute(link))
+  if (!is.list(earg)) earg = list()
+
+  if (length(iprob))
+    if (!is.Numeric(iprob, positive = TRUE) ||
+        max(iprob) >= 1)
+      stop("argument 'iprob' should have values in (0,1)")
+
+  if (!is.logical(eim.not.oim) ||
+      length(eim.not.oim) != 1)
+    stop("argument 'eim.not.oim' should be 'TRUE' or 'FALSE' only")
+
+
+  new("vglmff",
+  blurb = c("Huggins (1991) capture-recapture model\n\n",
+            "Links:    ",
+            namesof("prob1",   link, earg = earg, tag = FALSE), ", ",
+            namesof("prob1.0", link, earg = earg, tag = FALSE), ", ",
+            namesof("prob2",   link, earg = earg, tag = FALSE), ", ",
+            namesof("prob2.0", link, earg = earg, tag = FALSE), ", ..., ",
+            namesof("probT.0", link, earg = earg, tag = FALSE),
+            "\n"),
+  constraints = eval(substitute(expression({
+    constraints <- cm.vgam(matrix(1, M, 1), x, .parallel, constraints,
+                           intercept.apply = TRUE)
+  }), list( .parallel = parallel ))),
+  infos = eval(substitute(function(...) {
+    list(Musual = 2,
+         parallel = .parallel)
+  }, list( .parallel = parallel ))),
+
+  initialize = eval(substitute(expression({
+    Musual = 2
+    mustart.orig = mustart
+    y = as.matrix(y)
+    Mdiv2 = ncoly = ncol(y)
+    M = Musual * ncoly
+
+    w = matrix(w, n, ncoly)
+    mustart = matrix(colSums(y) / colSums(w),
+                    n, ncol(y), byrow = TRUE)
+    mustart[mustart == 0] = 0.05
+    mustart[mustart == 1] = 0.95
+
+    if (ncoly == 1)
+      stop("the response is univariate, therefore use posbinomial()")
+
+
+    if (!all(y == 0 | y == 1))
+      stop("response must contain 0s and 1s only")
+    if (!all(w == 1))
+      stop("argument 'weight' must contain 1s only")
+
+    dn2 = if (is.matrix(y)) dimnames(y)[[2]] else NULL
+    dn2 = if (length(dn2)) {
+      paste("E[", dn2, "]", sep = "")
+    } else {
+      paste("prob", 1:Mdiv2, sep = "")
+    }
+    dn2 = c(dn2, paste(dn2, ".0", sep = ""))
+    dn2 = dn2[interleave.VGAM(M, M = Musual)]
+    predictors.names = namesof(dn2, .link, earg = .earg, short = TRUE)
+
+
+    if (!length(etastart)) {
+      mustart.use = if (length(mustart.orig)) {
+        mustart.orig
+      } else
+      if (length( .iprob )) {
+        matrix( .iprob, nrow(mustart), ncol(mustart), byrow = TRUE)
+      } else {
+        mustart
+      }
+      etastart = cbind(theta2eta(mustart.use, .link, earg = .earg ))
+      etastart = kronecker(etastart, cbind(1, 1))
+    }
+    mustart = NULL
+  }), list( .link = link, .earg = earg, .iprob = iprob ))),
+
+  inverse = eval(substitute(function(eta, extra = NULL) {
+    Musual = 2
+    Mdiv2  =  ncol(eta) / Musual
+    index1 =  Musual * (1:Mdiv2) - 1
+    index2 =  Musual * (1:Mdiv2) - 0
+
+    probs.numer = eta2theta(eta[, index1], # + extra$moffset[, index1],
+                            .link, earg = .earg )
+
+    probs.denom = eta2theta(eta[, index1], .link, earg = .earg )
+
+    logAA0 = rowSums(log1p(-probs.denom))
+
+
+    AA0 = exp(logAA0)
+    AAA = exp(log1p(-AA0))  # 1 - AA0
+    probs.numer / AAA
+  }, list( .link = link, .earg = earg ))),
+  last = eval(substitute(expression({
+
+    misc$link = rep( .link, length = M)
+    names(misc$link) = dn2
+
+    misc$earg = vector("list", M)
+    names(misc$earg) = names(misc$link)
+    for(ii in 1:M)
+      misc$earg[[ii]] = .earg
+
+    misc$expected = .eim.not.oim
+    misc$mv       = TRUE
+    misc$iprob    = .iprob
+    misc$eim.not.oim = .eim.not.oim
+
+    misc$parallel   = .parallel
+  }), list( .link = link, .earg = earg,
+            .parallel = parallel,
+            .eim.not.oim = eim.not.oim, .iprob = iprob ))),
+  loglikelihood = eval(substitute(
+    function(mu, y, w, residuals = FALSE, eta, extra = NULL) {
+
+      ycounts = y
+      Musual = 2
+      Mdiv2  =  ncol(eta) / Musual
+      index1 =  Musual * (1:Mdiv2) - 1
+      index2 =  Musual * (1:Mdiv2) - 0
+
+      probs.numer = eta2theta(eta[, index1], # + extra$moffset[, index1],
+                              .link, earg = .earg )
+
+      probs.denom = eta2theta(eta[, index1], .link, earg = .earg )
+
+
+      if (residuals) stop("loglikelihood residuals ",
+                          "not implemented yet") else {
+        sum(dhuggins91(x = ycounts, # size = 1, # Bernoulli trials
+                       prob  = probs.numer,
+                       prob0 = probs.denom, # zz choose this??
+                       log = TRUE))
+      }
+  }, list( .link = link, .earg = earg ))),
+  vfamily = c("huggins91"),
+  deriv = eval(substitute(expression({
+    Musual = 2
+    Mdiv2  =  ncol(eta) / Musual
+    index1 =  Musual * (1:Mdiv2) - 1
+    index2 =  Musual * (1:Mdiv2) - 0
+    probs.numer = eta2theta(eta[, index1], .link, earg = .earg )
+
+
+    probs.denom = eta2theta(eta[, index1], .link, earg = .earg )
+
+    logAA0 = rowSums(log1p(-probs.denom))
+
+
+    AA0 = exp(logAA0)
+    AAA = exp(log1p(-AA0))  # 1 - AA0
+
+    B_s = AA0 / (1 - probs.denom)
+    B_st = array(0, c(n, Mdiv2, Mdiv2))
+    for(slocal in 1:(Mdiv2-1))
+      for(tlocal in (slocal+1):Mdiv2)
+        B_st[, slocal, tlocal] =
+        B_st[, tlocal, slocal] = B_s[, slocal] / (1 - probs.denom[, tlocal])
+
+
+    Temp2 =     (1 - probs.numer)^2
+    temp2 =     (1 - probs.denom)^2
+
+    dprob1.deta1 = dtheta.deta(probs.numer, .link , earg = .earg ) # trivial
+    dprob1.deta2 = dtheta.deta(probs.numer, .link , earg = .earg ) # trivial
+    dprob2.deta1 = dtheta.deta(probs.denom, .link , earg = .earg ) # trivial
+    dprob2.deta2 = dtheta.deta(probs.denom, .link , earg = .earg ) # trivial
+
+    dl.dprob1 =  y / probs.numer  - (1 - y) / (1 - probs.numer)
+    dl.dprob2 =  -B_s / AAA
+    dl.deta1  =  dl.dprob1 * dprob1.deta1
+    dl.deta2  =  dl.dprob2 * dprob2.deta1
+    dl.deta2  =  dl.dprob2 * dprob2.deta2 # zz
+
+    deriv.ans = cbind(dl.deta1 + dl.deta2,
+                      dl.deta1 + dl.deta2)
+    deriv.ans = deriv.ans[, interleave.VGAM(M, M = Musual)]
+    deriv.ans = deriv.ans / Musual   # Matches with CCCC
+
+    deriv.ans
+  }), list( .link = link, .earg = earg ))),
+
+  weight = eval(substitute(expression({
+    ed2l.dprob1.2 = 1 / (probs.numer * AAA) + 1 / Temp2 -
+                    probs.numer / (AAA * Temp2) - (B_s / AAA)^2
+
+    od2l.dprob1.2 =  y / probs.numer^2  + (1 - y) / (1 - probs.numer)^2 -
+                     (B_s / AAA)^2
+
+
+
+
+    d2prob1.deta1.2 = d2theta.deta2(probs.numer, .link , earg = .earg )
+    d2prob1.deta2.2 = d2theta.deta2(probs.numer, .link , earg = .earg )
+    d2prob1.deta12  = d2theta.deta2(probs.numer, .link , earg = .earg )
+    d2prob2.deta1.2 = d2theta.deta2(probs.denom, .link , earg = .earg )
+    d2prob2.deta12  = d2theta.deta2(probs.denom, .link , earg = .earg )
+
+
+    wz = matrix(0, n, dimm(M))
+    wz[, index1] <-
+    wz[, index2] <-
+    if ( .eim.not.oim ) {
+       ed2l.dprob1.2 * (dprob1.deta1^2) # +
+    } else {
+      od2l.dprob1.2 * (dprob1.deta1^2) -
+      (dl.dprob1 + dl.dprob2) * d2prob1.deta1.2
+    }
+
+    for(slocal in 1:(Mdiv2-1))
+      for(tlocal in (slocal+1):Mdiv2)
+        wz[, iam(Musual*slocal - 1,
+                 Musual*tlocal - 1, M = M)] =
+        wz[, iam(Musual*slocal    ,
+                 Musual*tlocal    , M = M)] =
+              dprob2.deta1[, slocal] *
+              dprob2.deta1[, tlocal] *
+            (B_st[, slocal, tlocal] +
+             B_s [, slocal] *
+             B_s [, tlocal] / AAA) / (-AAA)
+
+
+    wz = wz / Musual   # Matches with CCCC
+
+
+    wz
+  }), list( .link = link, .earg = earg, .eim.not.oim = eim.not.oim ))))
+}
+
+
+
+
+
+
+
+
+
+
+
 dposnegbin = function(x, size, prob = NULL, munb = NULL, log = FALSE) {
     if (length(munb)) {
         if (length(prob))
@@ -18,19 +398,19 @@ dposnegbin = function(x, size, prob = NULL, munb = NULL, log = FALSE) {
     rm(log)
 
     L = max(length(x), length(prob), length(size))
-    x = rep(x, len=L); prob = rep(prob, len=L); size = rep(size, len=L);
+    x = rep(x, len = L); prob = rep(prob, len = L); size = rep(size, len = L);
 
-    ans = dnbinom(x=x, size=size, prob=prob, log=log.arg)
-    index0 = x==0
+    ans = dnbinom(x = x, size = size, prob = prob, log=log.arg)
+    index0 = x == 0
 
     if (log.arg) {
         ans[ index0] = log(0.0)
-        ans[!index0] = ans[!index0] - log1p(-dnbinom(x=0 * x[!index0],
-                       size=size[!index0], prob=prob[!index0]))
+        ans[!index0] = ans[!index0] - log1p(-dnbinom(x = 0 * x[!index0],
+                       size = size[!index0], prob = prob[!index0]))
     } else {
         ans[ index0] = 0.0
         ans[!index0] = ans[!index0] / pnbinom(q=0 * x[!index0],
-                       size=size[!index0], prob=prob[!index0], lower.tail=FALSE)
+                       size = size[!index0], prob = prob[!index0], lower.tail=FALSE)
     }
     ans
 }
@@ -43,11 +423,11 @@ pposnegbin = function(q, size, prob = NULL, munb = NULL) {
         prob <- size/(size + munb)
     }
     L = max(length(q), length(prob), length(size))
-    q = rep(q, len=L); prob = rep(prob, len=L); size = rep(size, len=L);
+    q = rep(q, len = L); prob = rep(prob, len = L); size = rep(size, len = L);
 
-    ifelse(q < 1, 0, (pnbinom(q,   size=size, prob=prob) -
-                      dnbinom(q*0, size=size, prob=prob)) / pnbinom(q*0,
-                            size=size, prob=prob, lower.tail = FALSE))
+    ifelse(q < 1, 0, (pnbinom(q,   size = size, prob = prob) -
+                      dnbinom(q*0, size = size, prob = prob)) / pnbinom(q * 0,
+                            size = size, prob = prob, lower.tail = FALSE))
 }
 
 
@@ -55,12 +435,14 @@ qposnegbin = function(p, size, prob = NULL, munb = NULL) {
     if (length(munb)) {
         if (length(prob))
             stop("'prob' and 'munb' both specified")
-        prob <- size/(size + munb)
+        prob <- size / (size + munb)
     }
     if (!is.Numeric(p, posit = TRUE) || any(p >= 1))
         stop("bad input for argument 'p'")
-    qnbinom(p * pnbinom(q=p*0, size=size, prob=prob, lower.tail = FALSE) +
-            dnbinom(x=p*0, size=size, prob=prob), size=size, prob=prob)
+    qnbinom(p * pnbinom(q = p*0, size = size, prob = prob,
+                        lower.tail = FALSE) +
+            dnbinom(x = p*0, size = size, prob = prob),
+            size = size, prob = prob)
 }
 
 
@@ -74,12 +456,12 @@ rposnegbin = function(n, size, prob = NULL, munb = NULL) {
             stop("'prob' and 'munb' both specified")
         prob <- size/(size + munb)
     }
-    ans = rnbinom(use.n, size=size, prob=prob)
+    ans = rnbinom(use.n, size = size, prob = prob)
     index = (ans == 0)
     size = rep(size, len=length(ans))
     prob = rep(prob, len=length(ans))
     while(any(index)) {
-        more = rnbinom(n=sum(index), size=size[index], prob=prob[index])
+        more = rnbinom(n=sum(index), size = size[index], prob = prob[index])
         ans[index] = more
         index = (ans == 0)
     }
@@ -92,39 +474,35 @@ rposnegbin = function(n, size, prob = NULL, munb = NULL) {
 
 
 
- posnegbinomial = function(lmunb = "loge", lk = "loge",
-                           emunb =list(), ek = list(),
-                           ik = NULL, zero = -2, cutoff = 0.995,
-                           shrinkage.init = 0.95, method.init = 1)
+ posnegbinomial = function(lmunb = "loge", lsize = "loge",
+                           emunb = list(), esize = list(),
+                           isize = NULL, zero = -2, cutoff = 0.995,
+                           shrinkage.init = 0.95, imethod = 1)
 {
 
-
-    lkayy <- lk
-    ekayy <- ek
-    ikayy <- ik
-
-    if (!is.Numeric(cutoff, allow = 1) || cutoff<0.8 || cutoff>=1)
+    if (!is.Numeric(cutoff, allow = 1) ||
+        cutoff < 0.8 || cutoff >= 1)
         stop("range error in the argument 'cutoff'")
-    if (!is.Numeric(method.init, allow = 1, integ = TRUE, posit = TRUE) ||
-       method.init > 2) stop("argument 'method.init' must be 1 or 2")
-    if (length(ikayy) && !is.Numeric(ikayy, posit = TRUE))
-        stop("bad input for argument 'ik'")
+    if (!is.Numeric(imethod, allow = 1, integ = TRUE, posit = TRUE) ||
+       imethod > 2) stop("argument 'imethod' must be 1 or 2")
+    if (length(isize) && !is.Numeric(isize, posit = TRUE))
+        stop("bad input for argument 'isize'")
     if (!is.Numeric(shrinkage.init, allow = 1) || shrinkage.init < 0 ||
        shrinkage.init > 1) stop("bad input for argument 'shrinkage.init'")
 
     if (mode(lmunb) != "character" && mode(lmunb) != "name")
         lmunb = as.character(substitute(lmunb))
-    if (mode(lkayy) != "character" && mode(lkayy) != "name")
-        lkayy = as.character(substitute(lkayy))
+    if (mode(lsize) != "character" && mode(lsize) != "name")
+        lsize = as.character(substitute(lsize))
     if (!is.list(emunb)) emunb = list()
-    if (!is.list(ek)) ek = list()
+    if (!is.list(esize)) esize = list()
 
     new("vglmff",
     blurb = c("Positive-negative binomial distribution\n\n",
               "Links:    ",
               namesof("munb", lmunb, earg = emunb ), ", ",
-              namesof("k",    lkayy, earg = ek ), "\n",
-              "Mean:     munb / (1 - (k/(k+munb))^k)"),
+              namesof("size", lsize, earg = esize ), "\n",
+              "Mean:     munb / (1 - (size / (size + munb))^size)"),
     constraints = eval(substitute(expression({
 
         dotzero = .zero
@@ -137,15 +515,15 @@ rposnegbin = function(n, size, prob = NULL, munb = NULL) {
         M = 2 * ncol(y) 
         extra$NOS = NOS = ncoly = ncol(y)  # Number of species
         predictors.names = c(
-            namesof(if (NOS == 1) "munb" else paste("munb", 1:NOS, sep = ""),
-                    .lmunb, earg = .emunb, tag = FALSE),
-            namesof(if (NOS == 1) "k"    else paste("k",    1:NOS, sep = ""),
-                    .lkayy, earg = .ekayy, tag = FALSE))
+          namesof(if (NOS == 1) "munb" else paste("munb", 1:NOS, sep = ""),
+                  .lmunb, earg = .emunb, tag = FALSE),
+          namesof(if (NOS == 1) "size" else paste("size", 1:NOS, sep = ""),
+                  .lsize, earg = .esize, tag = FALSE))
         predictors.names = predictors.names[interleave.VGAM(M, M = 2)]
         if (!length(etastart)) {
             mu.init = y
             for(iii in 1:ncol(y)) {
-                use.this = if ( .method.init == 2) {
+                use.this = if ( .imethod == 2) {
                     weighted.mean(y[,iii], w)
                 } else {
                     median(y[,iii])
@@ -153,8 +531,8 @@ rposnegbin = function(n, size, prob = NULL, munb = NULL) {
                 mu.init[,iii] = (1 - .sinit) * y[,iii] + .sinit * use.this
             }
 
-            if ( is.Numeric( .ikayy )) {
-                kmat0 = matrix( .ikayy, nr = n, nc = NOS, byrow = TRUE)
+            if ( is.Numeric( .isize )) {
+                kmat0 = matrix( .isize, nr = n, nc = NOS, byrow = TRUE)
             } else {
                 posnegbinomial.Loglikfun =
                     function(kmat, y, x, w, extraargs) {
@@ -174,63 +552,63 @@ rposnegbin = function(n, size, prob = NULL, munb = NULL) {
             p00 = (kmat0 / (kmat0 + mu.init))^kmat0
             etastart =
               cbind(theta2eta(mu.init*(1-p00), .lmunb, earg = .emunb ),
-                    theta2eta(kmat0,           .lkayy, earg = .ekayy ))
-            etastart = etastart[,interleave.VGAM(M, M = 2), drop = FALSE]
+                    theta2eta(kmat0,           .lsize, earg = .esize ))
+            etastart = etastart[, interleave.VGAM(M, M = 2), drop = FALSE]
         }
-    }), list( .lmunb = lmunb, .lkayy = lkayy, .ikayy = ikayy,
-              .emunb = emunb, .ekayy = ekayy,
+    }), list( .lmunb = lmunb, .lsize = lsize, .isize = isize,
+              .emunb = emunb, .esize = esize,
               .sinit = shrinkage.init,
-              .method.init = method.init ))),
+              .imethod = imethod ))),
     inverse = eval(substitute(function(eta, extra = NULL) {
         NOS = ncol(eta) / 2
         munb = eta2theta(eta[,2*(1:NOS)-1, drop = FALSE],
                          .lmunb, earg = .emunb )
         kmat = eta2theta(eta[,2*(1:NOS),   drop = FALSE],
-                         .lkayy, earg = .ekayy )
+                         .lsize, earg = .esize )
         p0 = (kmat / (kmat + munb))^kmat
         munb / (1 - p0)
-    }, list( .lkayy = lkayy, .lmunb = lmunb,
-             .ekayy = ekayy, .emunb = emunb ))),
+    }, list( .lsize = lsize, .lmunb = lmunb,
+             .esize = esize, .emunb = emunb ))),
     last = eval(substitute(expression({
         temp0303 = c(rep( .lmunb, length = NOS),
-                     rep( .lkayy, length = NOS))
+                     rep( .lsize, length = NOS))
         names(temp0303) =
            c(if (NOS == 1) "munb" else paste("munb", 1:NOS, sep = ""),
-             if (NOS == 1) "k"    else paste("k",    1:NOS, sep = ""))
+             if (NOS == 1) "size" else paste("size", 1:NOS, sep = ""))
         temp0303 = temp0303[interleave.VGAM(M, M = 2)]
         misc$link = temp0303  # Already named
         misc$earg = vector("list", 2*NOS)
         names(misc$earg) = names(misc$link)
         for(ii in 1:NOS) {
             misc$earg[[2*ii-1]] = .emunb
-            misc$earg[[2*ii  ]] = .ekayy
+            misc$earg[[2*ii  ]] = .esize
         }
         misc$cutoff = .cutoff 
-        misc$method.init = .method.init
-    }), list( .lmunb = lmunb, .lkayy = lkayy,
-              .emunb = emunb, .ekayy = ekayy,
-              .cutoff = cutoff, .method.init = method.init ))),
+        misc$imethod = .imethod
+    }), list( .lmunb = lmunb, .lsize = lsize,
+              .emunb = emunb, .esize = esize,
+              .cutoff = cutoff, .imethod = imethod ))),
     loglikelihood = eval(substitute(
-        function(mu, y, w, residuals = FALSE,eta, extra = NULL) {
+        function(mu, y, w, residuals = FALSE, eta, extra = NULL) {
         NOS = ncol(eta) / 2
         munb = eta2theta(eta[,2*(1:NOS)-1, drop = FALSE],
                          .lmunb, earg = .emunb )
         kmat = eta2theta(eta[,2*(1:NOS),   drop = FALSE],
-                         .lkayy, earg = .ekayy )
+                         .lsize, earg = .esize )
         if (residuals)
           stop("loglikelihood residuals not implemented yet") else {
           sum(w * dposnegbin(x = y, size = kmat, munb = munb, log = TRUE))
         }
 
-    }, list( .lmunb = lmunb, .lkayy = lkayy,
-             .emunb = emunb, .ekayy = ekayy ))),
+    }, list( .lmunb = lmunb, .lsize = lsize,
+             .emunb = emunb, .esize = esize ))),
     vfamily = c("posnegbinomial"),
     deriv = eval(substitute(expression({
         NOS = extra$NOS
         munb = eta2theta(eta[,2*(1:NOS)-1, drop = FALSE],
                          .lmunb, earg = .emunb )
         kmat = eta2theta(eta[,2*(1:NOS),   drop = FALSE],
-                         .lkayy, earg = .ekayy )
+                         .lsize, earg = .esize )
         d3 = deriv3(~ -log(1 - (kmat. / (kmat. + munb. ))^kmat. ),
                     c("munb.", "kmat."), hessian = TRUE) # Extra term
         dl0.dthetas =  array(NA, c(n, NOS, 2))
@@ -252,12 +630,12 @@ rposnegbin = function(n, size, prob = NULL, munb = NULL) {
                    (y+kmat) / (munb+kmat) + 1 +
                    log(kmat /(kmat+munb)) + dl0.dthetas[,,2]
         dmunb.deta = dtheta.deta(munb, .lmunb, earg = .emunb )
-        dkayy.deta = dtheta.deta(kmat, .lkayy, earg = .ekayy )
+        dkayy.deta = dtheta.deta(kmat, .lsize, earg = .esize )
         myderiv = w * cbind(dl.dmunb * dmunb.deta,
                             dl.dkayy * dkayy.deta)
         myderiv[, interleave.VGAM(M, M = 2)]
-    }), list( .lmunb = lmunb, .lkayy = lkayy,
-              .emunb = emunb, .ekayy = ekayy ))),
+    }), list( .lmunb = lmunb, .lsize = lsize,
+              .emunb = emunb, .esize = esize ))),
     weight = eval(substitute(expression({
         wz = matrix(0, n, 4*NOS-1)  # wz is no longer 'diagonal' 
         p0 = (kmat / (kmat + munb))^kmat
@@ -274,11 +652,13 @@ rposnegbin = function(n, size, prob = NULL, munb = NULL) {
         dim(fred$ans) = c(n, NOS)
         ed2l.dk2 = -fred$ans/(1-p0) - 1/kmat + 1/(kmat+munb) -
                    munb * p0 / ((1-p0)*(munb+kmat)^2) - d2l0.dthetas2[,,2]
+
         wz[,2*(1:NOS)-1] = dmunb.deta^2 * ed2l.dmunb2
         wz[,2*(1:NOS)  ] = dkayy.deta^2 * ed2l.dk2
         wz[,2*NOS+2*(1:NOS)-1] = -d2l0.dthetas2[,,3] *
                                  dmunb.deta * dkayy.deta
-        w * wz
+
+        c(w) * wz
     }), list( .cutoff = cutoff ))))
 }
 
@@ -293,7 +673,7 @@ dpospois = function(x, lambda, log = FALSE) {
     if (!is.Numeric(lambda, posit = TRUE))
         stop("bad input for argument 'lambda'")
     L = max(length(x), length(lambda))
-    x = rep(x, len=L); lambda = rep(lambda, len=L); 
+    x = rep(x, len = L); lambda = rep(lambda, len = L); 
     ans = if (log.arg) {
         ifelse(x == 0, log(0.0), dpois(x, lambda, log = TRUE) -
                log1p(-exp(-lambda)))
@@ -308,7 +688,7 @@ ppospois = function(q, lambda) {
     if (!is.Numeric(lambda, posit = TRUE))
         stop("bad input for argument 'lambda'")
     L = max(length(q), length(lambda))
-    q = rep(q, len=L); lambda = rep(lambda, len=L); 
+    q = rep(q, len = L); lambda = rep(lambda, len = L); 
     ifelse(q < 1, 0, (ppois(q, lambda) - exp(-lambda)) / (-expm1(-lambda)))
 }
 
@@ -343,7 +723,7 @@ rpospois = function(n, lambda) {
 
 
  pospoisson = function(link = "loge", earg = list(), expected = TRUE,
-                       ilambda = NULL, method.init = 1)
+                       ilambda = NULL, imethod = 1)
 {
 
   if (!missing(link))
@@ -354,8 +734,8 @@ rpospois = function(n, lambda) {
     stop("bad input for argument 'expected'")
   if (length( ilambda) && !is.Numeric(ilambda, posit = TRUE))
     stop("bad input for argument 'ilambda'")
-  if (!is.Numeric(method.init, allow = 1, integ = TRUE, posit = TRUE) ||
-    method.init > 3) stop("argument 'method.init' must be 1 or 2 or 3")
+  if (!is.Numeric(imethod, allow = 1, integ = TRUE, posit = TRUE) ||
+    imethod > 3) stop("argument 'imethod' must be 1 or 2 or 3")
 
   new("vglmff",
   blurb = c("Positive-Poisson distribution\n\n",
@@ -373,10 +753,10 @@ rpospois = function(n, lambda) {
       paste("lambda", if (ncol(y) > 1) 1:ncol(y) else "", sep = ""),
       .link, earg = .earg, tag = FALSE)
 
-    if ( .method.init == 1) {
+    if ( .imethod == 1) {
       lambda.init <- apply(y, 2, median) + 1/8
       lambda.init <- matrix(lambda.init, n, ncol(y), byrow = TRUE)
-    } else if ( .method.init == 2) {
+    } else if ( .imethod == 2) {
       lambda.init <- apply(y, 2, weighted.mean, w=w) + 1/8
       lambda.init <- matrix(lambda.init, n, ncol(y), byrow = TRUE)
     } else {
@@ -387,7 +767,7 @@ rpospois = function(n, lambda) {
     if (!length(etastart))
         etastart <- theta2eta(lambda.init, .link, earg = .earg)
   }), list( .link = link, .earg = earg,
-            .ilambda = ilambda, .method.init = method.init ))),
+            .ilambda = ilambda, .imethod = imethod ))),
   inverse = eval(substitute(function(eta, extra = NULL) {
     lambda <- eta2theta(eta, .link, earg = .earg )
     -lambda / expm1(-lambda)
@@ -428,109 +808,71 @@ rpospois = function(n, lambda) {
       d2lambda.deta2 <- d2theta.deta2(lambda, .link, earg = .earg)
       wz <- (dlambda.deta^2) * d2l.dlambda2 - dl.dlambda * d2lambda.deta2
     }
-    w * wz
+    c(w) * wz
   }), list( .link = link, .earg = earg, .expected = expected ))))
 }
 
 
 
 
- posbinomial = function(link = "logit", earg = list()) {
 
-    if (!missing(link))
-        link = as.character(substitute(link))
-    if (!is.list(earg)) earg = list()
-       
-    new("vglmff",
-    blurb = c("Positive-binomial distribution\n\n",
-              "Links:    ",
-           namesof("prob", link, earg = earg, tag = FALSE), "\n"),
-    initialize = eval(substitute(expression({
 
-        mustart.orig = mustart
-      	eval(binomialff(link = .link, earg = .earg )@initialize)
-        predictors.names = namesof("prob", .link, earg = .earg , tag = FALSE)
-	if (length(extra)) extra$w = w else extra = list(w = w)
-        if (!length(etastart)) {
-	  mustart.use = if (length(mustart.orig)) mustart.orig else mustart
-	  etastart = cbind(theta2eta(mustart.use, .link, earg = .earg ))
-        }
-        mustart = NULL
-    }), list( .link = link, .earg = earg ))),
-    inverse = eval(substitute(function(eta, extra = NULL) {
-        w = extra$w
-        mymu = eta2theta(eta, .link, earg = .earg )
-        nvec = if (is.numeric(extra$orig.w)) round(w / extra$orig.w) else
-                  round(w)
-        mymu / (1-(1-mymu)^(nvec))
-    },
-    list( .link = link, .earg = earg ))),
-    last = eval(substitute(expression({
-        extra$w = NULL   # Kill it off 
-        misc$link = c(prob = .link)
-        misc$earg = list(prob = .earg )
-    }), list( .link = link, .earg = earg ))),
-    loglikelihood = eval(substitute(
-        function(mu, y, w, residuals = FALSE, eta, extra = NULL) {
-
-          ycounts = if (is.numeric(extra$orig.w)) y * w / extra$orig.w else
-                    y * w # Convert proportions to counts
-          nvec = if (is.numeric(extra$orig.w)) round(w / extra$orig.w) else
-                    round(w)
-          use.orig.w = if (is.numeric(extra$orig.w)) extra$orig.w else 1
-        mymu = eta2theta(eta, .link, earg = .earg )
 
-        if (residuals) stop("loglikelihood residuals ",
-                            "not implemented yet") else {
 
-          sum(use.orig.w * dposbinom(x = ycounts, size = nvec,
-                                     prob = mymu, log = TRUE))
-        }
-    }, list( .link = link, .earg = earg ))),
-    vfamily = c("posbinomial"),
-    deriv = eval(substitute(expression({
-          use.orig.w = if (is.numeric(extra$orig.w)) extra$orig.w else
-                       rep(1, n)
-          nvec = if (is.numeric(extra$orig.w)) round(w / extra$orig.w) else
-                    round(w)
-
-        mymu = eta2theta(eta, .link, earg = .earg )
-        dl.dmymu = y / mymu - (1 - y) / (1 - mymu) -
-                   ((1 - mymu)^(nvec-1)) / (1 - (1 - mymu)^nvec)
-
-        dmymu.deta = dtheta.deta(mymu, .link, earg = .earg )
-        w * dl.dmymu * dmymu.deta
-    }), list( .link = link, .earg = earg ))),
-    weight = eval(substitute(expression({
-        temp1 = 1 - (1-mymu)^nvec
-        temp2 =     (1-mymu)^2
-        ed2l.dmymu2 = -1/(mymu*temp1) - 1/temp2 + mymu/(temp2*temp1) +
-                       (nvec-1) * (1-mymu)^(nvec-2) / temp1 +
-                       nvec * (temp2^(nvec-1)) / temp1^2
-        wz = -w * (dmymu.deta^2) * ed2l.dmymu2
-        wz
-    }), list( .link = link, .earg = earg ))))
+pposbinom = function(q, size, prob, lower.tail = TRUE, log.p = FALSE) {
+  if (!is.Numeric(prob, positive = TRUE)) 
+    stop("no zero or non-numeric values allowed for argument 'prob'")
+  L = max(length(q), length(size), length(prob))
+  q = rep(q, len = L); size = rep(size, len = L); prob = rep(prob, len = L)
+  ifelse(q < 1, 0,
+        (pbinom(q = q, size = size, prob = prob, lower.tail = lower.tail,
+                log.p = log.p) - (1-prob)^size) / (1 - (1-prob)^size))
 }
 
 
+qposbinom = function(p, size, prob, lower.tail = TRUE, log.p = FALSE) {
+    if (!is.Numeric(prob, positive = TRUE)) 
+        stop("no zero or non-numeric values allowed for argument 'prob'")
+    if (!is.Numeric(p, posit = TRUE) || any(p >= 1))
+        stop("bad input for argument 'p'")
+    qbinom(p = p * (1 - (1-prob)^size) + (1-prob)^size, size = size,
+           prob = prob, lower.tail = lower.tail, log.p = log.p)
+}
 
 
+rposbinom = function(n, size, prob) {
+    use.n = if ((length.n <- length(n)) > 1) length.n else
+            if (!is.Numeric(n, integ = TRUE, allow = 1, posit = TRUE))
+                stop("bad input for argument 'n'") else n
 
-
-
+    if (any(prob == 0))
+        stop("no zero values allowed for argument 'prob'")
+    ans = rbinom(n=use.n, size = size, prob = prob)
+    index = (ans == 0)
+    size = rep(size, len=length(ans))
+    prob = rep(prob, len=length(ans))
+    while(any(index)) {
+        more = rbinom(n=sum(index), size[index], prob = prob[index])
+        ans[index] = more
+        index = (ans == 0)
+    }
+    ans
+}
 
 
 dposbinom = function(x, size, prob, log = FALSE) {
     log.arg = log
     rm(log)
     L = max(length(x), length(size), length(prob))
-    x = rep(x, len=L); size = rep(size, len=L); prob = rep(prob, len=L);
+    x = rep(x, len = L); size = rep(size, len = L);
+                         prob = rep(prob, len = L);
 
     answer = NaN * x
     is0 <- (x == 0)
-    ok2 <- prob > 0 & prob <= 1 & size == round(size) & size > 0
+    ok2 <- (prob > 0) & (prob <= 1) &
+           (size == round(size)) & (size > 0)
     answer = dbinom(x = x, size = size, prob = prob, log = TRUE) -
-             log1p(-dbinom(x=0*x, size=size, prob=prob))
+             log1p(-dbinom(x = 0*x, size = size, prob = prob))
     answer[!ok2] = NaN
     if (log.arg) {
         answer[is0 & ok2]  = log(0.0)
@@ -541,43 +883,167 @@ dposbinom = function(x, size, prob, log = FALSE) {
     answer
 }
 
-pposbinom = function(q, size, prob, lower.tail = TRUE, log.p = FALSE) {
-    if (!is.Numeric(prob, positive = TRUE)) 
-        stop("no zero or non-numeric values allowed for argument 'prob'")
-    L = max(length(q), length(size), length(prob))
-    q = rep(q, len=L); size = rep(size, len=L); prob = rep(prob, len=L);
-    ifelse(q < 1, 0, (pbinom(q=q, size=size, prob=prob, lower.tail=lower.tail,
-         log.p=log.p) - (1-prob)^size) / (1 - (1-prob)^size))
-}
 
-qposbinom = function(p, size, prob, lower.tail = TRUE, log.p = FALSE) {
-    if (!is.Numeric(prob, positive = TRUE)) 
-        stop("no zero or non-numeric values allowed for argument 'prob'")
-    if (!is.Numeric(p, posit = TRUE) || any(p >= 1))
-        stop("bad input for argument 'p'")
-    qbinom(p=p * (1 - (1-prob)^size) + (1-prob)^size, size=size, prob=prob,
-           lower.tail=lower.tail, log.p=log.p)
-}
 
-rposbinom = function(n, size, prob) {
-    use.n = if ((length.n <- length(n)) > 1) length.n else
-            if (!is.Numeric(n, integ = TRUE, allow = 1, posit = TRUE))
-                stop("bad input for argument 'n'") else n
 
-    if (any(prob == 0))
-        stop("no zero values allowed for argument 'prob'")
-    ans = rbinom(n=use.n, size=size, prob=prob)
-    index = (ans == 0)
-    size = rep(size, len=length(ans))
-    prob = rep(prob, len=length(ans))
-    while(any(index)) {
-        more = rbinom(n=sum(index), size[index], prob=prob[index])
-        ans[index] = more
-        index = (ans == 0)
+
+
+
+ posbinomial = function(link = "logit", earg = list(),
+                        mv = FALSE, parallel = FALSE, zero = NULL) {
+
+
+  if (!missing(link))
+    link = as.character(substitute(link))
+  if (!is.list(earg)) earg = list()
+
+
+  new("vglmff",
+  blurb = c("Positive-binomial distribution\n\n",
+            "Links:    ",
+            if (mv)
+            c(namesof("prob1", link, earg = earg, tag = FALSE),
+              ",...,",
+              namesof("probM", link, earg = earg, tag = FALSE)) else
+            namesof("prob", link, earg = earg, tag = FALSE),
+            "\n"),
+  constraints = eval(substitute(expression({
+    constraints <- cm.vgam(matrix(1, M, 1), x, .parallel, constraints)
+    constraints <- cm.zero.vgam(constraints, x, .zero, M)
+  }), list( .parallel = parallel, .zero = zero ))),
+  infos = eval(substitute(function(...) {
+    list(Musual = 1,
+         zero = .zero)
+  }, list( .zero = zero ))),
+
+  initialize = eval(substitute(expression({
+
+    mustart.orig = mustart
+    if ( .mv ) {
+      y = as.matrix(y)
+      M = ncoly = ncol(y)
+      extra$orig.w = w
+      w = as.matrix(w)  # Added 20110308
+      mustart = matrix(colSums(y) / colSums(w),
+                       n, ncol(y), byrow = TRUE)
+
+    } else {
+      eval(binomialff(link = .link, earg = .earg )@initialize)
     }
-    ans
+
+
+    if ( .mv ) {
+
+      dn2 = if (is.matrix(y)) dimnames(y)[[2]] else NULL
+      dn2 = if (length(dn2)) {
+        paste("E[", dn2, "]", sep = "")
+      } else {
+        paste("prob", 1:M, sep = "")
+      }
+      predictors.names = namesof(if (M > 1) dn2 else
+        "prob", .link, earg = .earg, short = TRUE)
+
+        w = matrix(w, n, ncoly)
+        y = y / w  # Now sample proportion
+    } else {
+        predictors.names =
+          namesof("prob", .link, earg = .earg , tag = FALSE)
+    }
+
+    if (length(extra)) extra$w = w else extra = list(w = w)
+
+    if (!length(etastart)) {
+    mustart.use = if (length(mustart.orig)) mustart.orig else mustart
+    etastart = cbind(theta2eta(mustart.use, .link, earg = .earg ))
+    }
+    mustart = NULL
+  }), list( .link = link, .earg = earg, .mv = mv ))),
+  inverse = eval(substitute(function(eta, extra = NULL) {
+    w = extra$w
+    mymu = eta2theta(eta, .link, earg = .earg )
+    nvec = if ( .mv ) {
+             w
+           } else {
+             if (is.numeric(extra$orig.w)) round(w / extra$orig.w) else
+               round(w)
+           }
+    mymu / (1.0 - (1.0 - mymu)^(nvec))
+  },
+  list( .link = link, .earg = earg, .mv = mv ))),
+  last = eval(substitute(expression({
+    extra$w   = NULL   # Kill it off 
+
+
+    misc$link = rep( .link, length = M)
+    names(misc$link) = if (M > 1) dn2 else "prob"
+
+    misc$earg = vector("list", M)
+    names(misc$earg) = names(misc$link)
+    for(ii in 1:M) misc$earg[[ii]] = .earg
+
+    misc$expected = TRUE
+
+    misc$mv   = .mv
+    w = as.numeric(w)
+  }), list( .link = link, .earg = earg, .mv = mv ))),
+  loglikelihood = eval(substitute(
+    function(mu, y, w, residuals = FALSE, eta, extra = NULL) {
+
+      ycounts = if ( .mv ) {
+                  round(y * extra$orig.w)
+                } else {
+                  if (is.numeric(extra$orig.w)) y * w / extra$orig.w else
+                  y * w # Convert proportions to counts
+                }
+      nvec = if ( .mv ) {
+               w
+             } else {
+               if (is.numeric(extra$orig.w)) round(w / extra$orig.w) else
+                 round(w)
+             }
+      use.orig.w = if (is.numeric(extra$orig.w)) extra$orig.w else 1
+    mymu = eta2theta(eta, .link, earg = .earg )
+
+    if (residuals) stop("loglikelihood residuals ",
+                        "not implemented yet") else {
+      sum(use.orig.w * dposbinom(x = ycounts, size = nvec,
+                                 prob = mymu, log = TRUE))
+    }
+  }, list( .link = link, .earg = earg, .mv = mv ))),
+  vfamily = c("posbinomial"),
+  deriv = eval(substitute(expression({
+    use.orig.w = if (is.numeric(extra$orig.w)) extra$orig.w else
+                 rep(1, n)
+
+    nvec = if ( .mv ) {
+             w
+           } else {
+             if (is.numeric(extra$orig.w)) round(w / extra$orig.w) else
+               round(w)
+           }
+    mymu = eta2theta(eta, .link, earg = .earg )
+    dmu.deta = dtheta.deta(mymu, .link, earg = .earg )
+
+    temp1 = 1 - (1 - mymu)^nvec
+    temp2 =     (1 - mymu)^2
+    temp3 =     (1 - mymu)^(nvec-2)
+
+    dl.dmu = y / mymu - (1 - y) / (1 - mymu) -
+             (1 - mymu) * temp3 / temp1
+
+    w * dl.dmu * dmu.deta
+  }), list( .link = link, .earg = earg, .mv = mv ))),
+  weight = eval(substitute(expression({
+    ed2l.dmu2 = 1 / (mymu * temp1) + 1 / temp2 -
+                mymu / (temp1 * temp2) -
+                (nvec-1) * temp3 / temp1 -
+                nvec * (temp2^(nvec-1)) / temp1^2
+    wz = w * (dmu.deta^2) * ed2l.dmu2
+    wz
+  }), list( .link = link, .earg = earg, .mv = mv ))))
 }
 
 
 
 
+
diff --git a/R/family.qreg.R b/R/family.qreg.R
index 615cab2..e788a6c 100644
--- a/R/family.qreg.R
+++ b/R/family.qreg.R
@@ -155,20 +155,20 @@ lms.yjn.control <- function(trace = TRUE, ...)
         dlambda.deta  = dtheta.deta(lambda, .llambda, earg = .elambda)
         dmu.deta  = dtheta.deta(mymu, .lmu, earg = .emu)
         dsigma.deta = dtheta.deta(sigma, .lsigma, earg = .esigma)
-        w * cbind(dl.dlambda * dlambda.deta,
-                  dl.dmu * dmu.deta,
-                  dl.dsigma * dsigma.deta)
+        c(w) * cbind(dl.dlambda  * dlambda.deta,
+                     dl.dmu    * dmu.deta,
+                     dl.dsigma * dsigma.deta)
     }), list( .llambda = llambda, .lmu = lmu, .lsigma = lsigma,
               .elambda = elambda, .emu = emu, .esigma = esigma ))),
     weight = eval(substitute(expression({
-        wz = matrix(as.numeric(NA), n, 6)
-        wz[,iam(1,1,M)] = (7 * sigma^2 / 4) * dlambda.deta^2
-        wz[,iam(2,2,M)] = (1 + 2*(lambda*sigma)^2)/(mymu*sigma)^2 * dmu.deta^2
-        wz[,iam(3,3,M)] = (2 / sigma^2) * dsigma.deta^2
-        wz[,iam(1,2,M)] = (-1 / (2 * mymu)) * dlambda.deta * dmu.deta
-        wz[,iam(1,3,M)] = (lambda * sigma) * dlambda.deta * dsigma.deta
-        wz[,iam(2,3,M)] = (2*lambda/(mymu * sigma)) * dmu.deta * dsigma.deta
-        wz * w
+      wz = matrix(as.numeric(NA), n, 6)
+      wz[,iam(1,1,M)] = (7 * sigma^2 / 4) * dlambda.deta^2
+      wz[,iam(2,2,M)] = (1 + 2*(lambda*sigma)^2)/(mymu*sigma)^2 * dmu.deta^2
+      wz[,iam(3,3,M)] = (2 / sigma^2) * dsigma.deta^2
+      wz[,iam(1,2,M)] = (-1 / (2 * mymu)) * dlambda.deta * dmu.deta
+      wz[,iam(1,3,M)] = (lambda * sigma) * dlambda.deta * dsigma.deta
+      wz[,iam(2,3,M)] = (2*lambda/(mymu * sigma)) * dmu.deta * dsigma.deta
+      c(w) * wz
     }), list( .llambda = llambda, .lmu = lmu, .lsigma = lsigma,
               .elambda = elambda, .emu = emu, .esigma = esigma ))))
 }
@@ -328,7 +328,7 @@ lms.yjn.control <- function(trace = TRUE, ...)
                           dlambda.deta * dmu.deta
         wz[,iam(1,3,M)] = 2 * theta^1.5 * (2 * theta * tritheta - 2 -
                           1 / theta) * dlambda.deta * dsigma.deta
-        wz * w
+        c(w) * wz
     }), list( .llambda = llambda, .lmu = lmu, .lsigma = lsigma,
               .elambda = elambda, .emu = emu, .esigma = esigma ))))
 }
@@ -709,7 +709,7 @@ lms.yjn2.control <- function(save.weight=TRUE, ...)
         dl.dmu = AA / sigma 
         dl.dsigma = (AA^2 -1) / sigma
         dthetas.detas = cbind(dlambda.deta, dmu.deta, dsigma.deta)
-        w * cbind(dl.dlambda, dl.dmu, dl.dsigma) * dthetas.detas
+        c(w) * cbind(dl.dlambda, dl.dmu, dl.dsigma) * dthetas.detas
     }), list( .elambda = elambda, .emu = emu, .esigma = esigma, 
               .llambda = llambda, .lmu = lmu,
                  .lsigma = lsigma ))),
@@ -739,7 +739,7 @@ lms.yjn2.control <- function(save.weight=TRUE, ...)
 
         wz = run.varcov * dthetas.detas[,ind1$row] * dthetas.detas[,ind1$col]
         dimnames(wz) = list(rownames(wz), NULL)  # Remove the colnames
-        wz * w
+        c(w) * wz
     }), list(.lsigma = lsigma,
              .esigma = esigma, .elambda = elambda,
              .nsimEIM=nsimEIM,
@@ -1023,8 +1023,7 @@ lms.yjn2.control <- function(save.weight=TRUE, ...)
         wz[,iam(2,3,M)] = wz[,iam(2,3,M)] * dsigma.deta
         wz[,iam(3,3,M)] = wz[,iam(3,3,M)] * dsigma.deta^2
 
-        wz = wz * w
-        wz
+        c(w) * wz
     }), list(.lsigma = lsigma,
              .esigma = esigma, .elambda = elambda,
              .rule=rule,
@@ -1082,14 +1081,14 @@ amlnormal.deviance = function(mu, y, w, residuals = FALSE, eta, extra = NULL) {
  amlnormal <- function(w.aml = 1, parallel = FALSE,
                        lexpectile = "identity", eexpectile = list(),
                        iexpectile = NULL,
-                       method.init = 1, digw = 4)
+                       imethod = 1, digw = 4)
 {
 
 
     if (!is.Numeric(w.aml, posit=TRUE))
         stop("'w.aml' must be a vector of positive values")
-    if (!is.Numeric(method.init, allow=1, integ=TRUE, posit=TRUE) ||
-       method.init > 3) stop("argument 'method.init' must be 1, 2 or 3")
+    if (!is.Numeric(imethod, allow=1, integ=TRUE, posit=TRUE) ||
+       imethod > 3) stop("argument 'imethod' must be 1, 2 or 3")
     if (mode(lexpectile) != "character" && mode(lexpectile) != "name")
         lexpectile = as.character(substitute(lexpectile))
     if (!is.list(eexpectile)) eexpectile = list()
@@ -1120,9 +1119,9 @@ amlnormal.deviance = function(mu, y, w, residuals = FALSE, eta, extra = NULL) {
                    earg = .eexpectile, tag = FALSE))
 
         if (!length(etastart)) {
-            mean.init = if ( .method.init == 1)
+            mean.init = if ( .imethod == 1)
                     rep(median(y), length=n) else
-                if ( .method.init == 2)
+                if ( .imethod == 2)
                     rep(weighted.mean(y, w), length=n) else {
                         junk = if (is.R()) lm.wfit(x=x, y = y, w=w) else
                                lm.wfit(x=x, y = y, w = w, method = "qr")
@@ -1135,7 +1134,7 @@ amlnormal.deviance = function(mu, y, w, residuals = FALSE, eta, extra = NULL) {
         }
     }), list( .lexpectile=lexpectile, .eexpectile=eexpectile,
               .iexpectile=iexpectile,
-              .method.init = method.init, .digw = digw, .w.aml = w.aml ))),
+              .imethod = imethod, .digw = digw, .w.aml = w.aml ))),
     inverse = eval(substitute(function(eta, extra = NULL) {
         ans = eta = as.matrix(eta)
         for(ii in 1:ncol(eta))
@@ -1213,7 +1212,7 @@ amlpoisson.deviance = function(mu, y, w, residuals = FALSE, eta, extra = NULL) {
 }
 
 
- amlpoisson <- function(w.aml = 1, parallel = FALSE, method.init = 1,
+ amlpoisson <- function(w.aml = 1, parallel = FALSE, imethod = 1,
                         digw = 4, link = "loge", earg = list())
 {
     if (!is.Numeric(w.aml, posit=TRUE))
@@ -1246,9 +1245,9 @@ amlpoisson.deviance = function(mu, y, w, residuals = FALSE, eta, extra = NULL) {
                                      .link, earg = .earg, tag = FALSE))
 
         if (!length(etastart)) {
-            mean.init = if ( .method.init == 2)
+            mean.init = if ( .imethod == 2)
                     rep(median(y), length=n) else
-                if ( .method.init == 1)
+                if ( .imethod == 1)
                     rep(weighted.mean(y, w), length=n) else {
                         junk = if (is.R()) lm.wfit(x=x, y = y, w=w) else
                                lm.wfit(x=x, y = y, w = w, method = "qr")
@@ -1256,7 +1255,7 @@ amlpoisson.deviance = function(mu, y, w, residuals = FALSE, eta, extra = NULL) {
                     }
             etastart = matrix(theta2eta(mean.init, .link, earg = .earg), n, M)
         }
-    }), list( .link = link, .earg = earg, .method.init = method.init,
+    }), list( .link = link, .earg = earg, .imethod = imethod,
               .digw = digw, .w.aml = w.aml ))),
     inverse = eval(substitute(function(eta, extra = NULL) {
         mu.ans = eta = as.matrix(eta)
@@ -1492,7 +1491,7 @@ amlexponential.deviance = function(mu, y, w, residuals = FALSE, eta, extra = NUL
 }
 
 
- amlexponential <- function(w.aml = 1, parallel = FALSE, method.init = 1,
+ amlexponential <- function(w.aml = 1, parallel = FALSE, imethod = 1,
                             digw = 4, link = "loge", earg = list())
 {
     if (!is.Numeric(w.aml, posit=TRUE))
@@ -1500,8 +1499,8 @@ amlexponential.deviance = function(mu, y, w, residuals = FALSE, eta, extra = NUL
     if (mode(link)!= "character" && mode(link)!= "name")
         link = as.character(substitute(link))
     if (!is.list(earg)) earg = list()
-    if (!is.Numeric(method.init, allow=1, integ=TRUE, posit=TRUE) ||
-       method.init > 3) stop("argument 'method.init' must be 1, 2 or 3")
+    if (!is.Numeric(imethod, allow=1, integ=TRUE, posit=TRUE) ||
+       imethod > 3) stop("argument 'imethod' must be 1, 2 or 3")
 
     y.names = paste("w.aml = ", round(w.aml, dig=digw), sep = "")
     predictors.names = c(namesof(
@@ -1534,16 +1533,16 @@ amlexponential.deviance = function(mu, y, w, residuals = FALSE, eta, extra = NUL
             paste("expectile(",y.names,")", sep = ""), .link, earg = .earg, tag = FALSE))
 
         if (!length(etastart)) {
-            mean.init = if ( .method.init == 1)
+            mean.init = if ( .imethod == 1)
                     rep(median(y), length=n) else
-                if ( .method.init == 2)
+                if ( .imethod == 2)
                     rep(weighted.mean(y, w), length=n) else {
                         1 / (y + 1)
                     }
             etastart = matrix(theta2eta(mean.init, .link, earg = .earg),
                               n, M)
         }
-    }), list( .link = link, .earg = earg, .method.init = method.init,
+    }), list( .link = link, .earg = earg, .imethod = imethod,
               .digw = digw, .w.aml = w.aml ))),
     inverse = eval(substitute(function(eta, extra = NULL) {
         mu.ans = eta = as.matrix(eta)
@@ -1730,11 +1729,11 @@ qregal = function(tau = c(0.25, 0.5, 0.75),
                   elocation=list(),
                   lscale = "loge", escale=list(),
                   ilocation=NULL,
-                  parallel=FALSE, method.init=1, digt = 4) {
+                  parallel=FALSE, imethod=1, digt = 4) {
     if (mode(llocation) != "character" && mode(llocation) != "name")
         llocation = as.character(substitute(llocation))
-    if (!is.Numeric(method.init, allow=1, integ=TRUE, posit=TRUE) ||
-       method.init > 2) stop("argument 'method.init' must be 1 or 2")
+    if (!is.Numeric(imethod, allow=1, integ=TRUE, posit=TRUE) ||
+       imethod > 2) stop("argument 'imethod' must be 1 or 2")
     if (!is.Numeric(tau, posit=TRUE) || max(tau) >= 1)
         stop("bad input for argument 'tau'")
     if (!is.list(elocation)) elocation = list()
@@ -1765,7 +1764,7 @@ qregal = function(tau = c(0.25, 0.5, 0.75),
                     link = .llocat, earg = .elocat, tag = FALSE))
 
         if (!length(etastart)) {
-            if ( .method.init == 1) {
+            if ( .imethod == 1) {
                 locat.init = median(y)
             } else {
                 locat.init = y
@@ -1781,7 +1780,7 @@ qregal = function(tau = c(0.25, 0.5, 0.75),
                 matrix(
                 theta2eta(locat.init, .llocat, earg = .elocat), n, M-1))
         }
-    }), list( .method.init = method.init, .tau = tau, .digt = digt,
+    }), list( .imethod = imethod, .tau = tau, .digt = digt,
               .elocat = elocation, .escale = escale,
               .llocat = llocation, .lscale = lscale,
               .ilocat = ilocation ))),
@@ -1838,7 +1837,7 @@ qregal = function(tau = c(0.25, 0.5, 0.75),
         dl.dlocation[index1] = ((taumat - 1)/scalemat)[index1]
         dlocation.deta = dtheta.deta(locmat, .llocat, earg = .elocat)
         dscale.deta = dtheta.deta(scalemat, .lscale, earg = .escale)
-        w * cbind(dl.dlocation * dlocation.deta)
+        c(w) * cbind(dl.dlocation * dlocation.deta)
     }), list( .tau = tau, .elocat = elocation, .llocat = llocation,
              .escale = escale, .lscale = lscale ))),
     weight = eval(substitute(expression({
@@ -1848,7 +1847,7 @@ qregal = function(tau = c(0.25, 0.5, 0.75),
                        taumat * (1-taumat))
         wz[,iam(1,1,M)] = ed2l.dscale2 * dscale.deta^2
         wz[,-1] = ed2l.dlocation2 * dlocation.deta^2
-        w * wz
+        c(w) * wz
     }), list( .tau = tau, .elocat = elocation, .llocat = llocation,
              .escale = escale, .lscale = lscale ))))
 }
@@ -2214,7 +2213,7 @@ alaplace2.control <- function(maxit = 100, ...)
               sameScale = TRUE,
               dfmu.init = 3,
               intparloc = FALSE,
-              method.init = 1,
+              imethod = 1,
               zero = -2) {
 
   llocat <- llocation
@@ -2223,9 +2222,9 @@ alaplace2.control <- function(maxit = 100, ...)
 
   if (!is.Numeric(kappa, posit = TRUE))
     stop("bad input for argument 'kappa'")
-  if (!is.Numeric(method.init, allow = 1, integ = TRUE, posit = TRUE) ||
-   method.init > 4)
-    stop("argument 'method.init' must be 1, 2 or ... 4")
+  if (!is.Numeric(imethod, allow = 1, integ = TRUE, posit = TRUE) ||
+   imethod > 4)
+    stop("argument 'imethod' must be 1, 2 or ... 4")
   if (length(iscale) && !is.Numeric(iscale, posit = TRUE))
     stop("bad input for argument 'iscale'")
   if (!is.Numeric(shrinkage.init, allow = 1) || shrinkage.init < 0 ||
@@ -2365,14 +2364,14 @@ alaplace2.control <- function(maxit = 100, ...)
     if (!length(etastart)) {
       for(jay in 1:Mdiv2) {
         y.use <- if (ncoly > 1) y[, jay] else y
-        if ( .method.init == 1) {
+        if ( .imethod == 1) {
           locat.init[, jay] = weighted.mean(y.use, w)
           scale.init[, jay] = sqrt(var(y.use) / 2)
-        } else if ( .method.init == 2) {
+        } else if ( .imethod == 2) {
           locat.init[, jay] = median(y.use)
           scale.init[, jay] =
             sqrt(sum(w * abs(y - median(y.use))) / (sum(w) * 2))
-        } else if ( .method.init == 3) {
+        } else if ( .imethod == 3) {
           Fit5 = vsmooth.spline(x = x[, min(ncol(x), 2)],
                                 y = y.use, w = w, df = .dfmu.init)
           locat.init[, jay] = predict(Fit5, x = x[, min(ncol(x), 2)])$y
@@ -2400,7 +2399,7 @@ alaplace2.control <- function(maxit = 100, ...)
                 theta2eta(scale.init, .lscale, earg = .escale))
       etastart = etastart[, interleave.VGAM(M, M = Musual), drop = FALSE]
     }
-  }), list( .method.init = method.init,
+  }), list( .imethod = imethod,
             .dfmu.init = dfmu.init,
             .sinit = shrinkage.init, .digt = digt,
             .elocat = elocat, .escale = escale,
@@ -2502,8 +2501,8 @@ alaplace2.control <- function(maxit = 100, ...)
     dlocat.deta = dtheta.deta(locat, .llocat, earg = .elocat)
     dscale.deta = dtheta.deta(Scale, .lscale, earg = .escale)
 
-    ans <- w * cbind(dl.dlocat * dlocat.deta,
-                     dl.dscale * dscale.deta)
+    ans <- c(w) * cbind(dl.dlocat * dlocat.deta,
+                        dl.dscale * dscale.deta)
     ans <- ans[, interleave.VGAM(ncol(ans), M = Musual)]
     ans
   }), list( .escale = escale, .lscale = lscale,
@@ -2517,7 +2516,7 @@ alaplace2.control <- function(maxit = 100, ...)
     wz[, 2*(1:Mdiv2) - 1] <- d2l.dlocat2 * dlocat.deta^2
     wz[, 2*(1:Mdiv2)    ] <- d2l.dscale2 * dscale.deta^2
 
-    w * wz
+    c(w) * wz
   }), list( .escale = escale, .lscale = lscale,
             .elocat = elocat, .llocat = llocat ))))
 }
@@ -2547,7 +2546,7 @@ alaplace1.control <- function(maxit = 100, ...)
                      shrinkage.init = 0.95, parallelLocation = FALSE, digt = 4,
                      dfmu.init = 3,
                      intparloc = FALSE,
-                     method.init = 1) {
+                     imethod = 1) {
 
 
 
@@ -2557,9 +2556,9 @@ alaplace1.control <- function(maxit = 100, ...)
         stop("arguments 'kappa' and 'tau' do not match")
     if (mode(llocation) != "character" && mode(llocation) != "name")
         llocation = as.character(substitute(llocation))
-    if (!is.Numeric(method.init, allow = 1, integ = TRUE, posit = TRUE) ||
-       method.init > 4)
-        stop("argument 'method.init' must be 1, 2 or ... 4")
+    if (!is.Numeric(imethod, allow = 1, integ = TRUE, posit = TRUE) ||
+       imethod > 4)
+        stop("argument 'imethod' must be 1, 2 or ... 4")
 
     if (!is.list(elocation)) elocation = list()
 
@@ -2665,11 +2664,11 @@ alaplace1.control <- function(maxit = 100, ...)
 
       for(jay in 1:M) {
         y.use <- if (ncoly > 1) y[, jay] else y
-        if ( .method.init == 1) {
+        if ( .imethod == 1) {
           locat.init[, jay] = weighted.mean(y.use, w)
-        } else if ( .method.init == 2) {
+        } else if ( .imethod == 2) {
           locat.init[, jay] = median(y.use)
-        } else if ( .method.init == 3) {
+        } else if ( .imethod == 3) {
             Fit5 = vsmooth.spline(x = x[, min(ncol(x), 2)],
                                   y = y.use, w = w, df = .dfmu.init)
             locat.init[, jay] = c(predict(Fit5, x = x[, min(ncol(x), 2)])$y)
@@ -2687,7 +2686,7 @@ alaplace1.control <- function(maxit = 100, ...)
         etastart = cbind(theta2eta(locat.init, .llocat, earg = .elocat))
       }
     }
-    }), list( .method.init = method.init,
+    }), list( .imethod = imethod,
               .dfmu.init = dfmu.init,
               .sinit = shrinkage.init, .digt = digt,
               .elocat = elocation, .Scale.arg = Scale.arg,
@@ -2766,14 +2765,14 @@ alaplace1.control <- function(maxit = 100, ...)
         dl.dlocation = ifelse(ymat >= location, kappamat, 1/kappamat) *
                        sqrt(2) * sign(ymat - location) / Scale
         dlocation.deta = dtheta.deta(location, .llocat, earg = .elocat)
-        w * cbind(dl.dlocation * dlocation.deta)
+        c(w) * cbind(dl.dlocation * dlocation.deta)
     }), list( .Scale.arg = Scale.arg, .elocat = elocation,
               .llocat = llocation, .kappa = kappa ))),
     weight = eval(substitute(expression({
         d2l.dlocation2 = 2 / Scale^2
         wz = cbind(d2l.dlocation2 * dlocation.deta^2)
 
-        w * wz
+        c(w) * wz
     }), list( .Scale.arg = Scale.arg,
               .elocat = elocation, .llocat = llocation ))))
 }
@@ -2798,7 +2797,7 @@ alaplace3.control <- function(maxit = 100, ...)
           llocation = "identity", lscale = "loge", lkappa = "loge",
           elocation = list(),     escale = list(), ekappa = list(),
           ilocation = NULL,       iscale = NULL,   ikappa = 1.0,
-          method.init = 1, zero = 2:3) {
+          imethod = 1, zero = 2:3) {
     if (mode(llocation) != "character" && mode(llocation) != "name")
         llocation = as.character(substitute(llocation))
     if (mode(lscale) != "character" && mode(lscale) != "name")
@@ -2806,9 +2805,9 @@ alaplace3.control <- function(maxit = 100, ...)
     if (mode(lkappa) != "character" && mode(lkappa) != "name")
         lkappa = as.character(substitute(lkappa))
 
-    if (!is.Numeric(method.init, allow = 1, integ = TRUE, posit = TRUE) ||
-       method.init > 2)
-        stop("argument 'method.init' must be 1 or 2")
+    if (!is.Numeric(imethod, allow = 1, integ = TRUE, posit = TRUE) ||
+       imethod > 2)
+        stop("argument 'imethod' must be 1 or 2")
     if (length(zero) && !is.Numeric(zero, integer = TRUE, posit = TRUE))
         stop("bad input for argument 'zero'")
     if (length(iscale) && !is.Numeric(iscale, posit = TRUE))
@@ -2841,7 +2840,7 @@ alaplace3.control <- function(maxit = 100, ...)
         if (!length(etastart)) {
             kappa.init = if (length( .ikappa)) rep( .ikappa, len = n) else
                          rep( 1.0, len = n)
-            if ( .method.init == 1) {
+            if ( .imethod == 1) {
                 locat.init = median(y)
                 scale.init = sqrt(var(y) / 2)
             } else {
@@ -2857,7 +2856,7 @@ alaplace3.control <- function(maxit = 100, ...)
                       theta2eta(scale.init, .lscale, earg = .escale),
                       theta2eta(kappa.init, .lkappa, earg = .ekappa))
         }
-    }), list( .method.init = method.init,
+    }), list( .imethod = imethod,
               .elocat = elocation, .escale = escale, .ekappa = ekappa,
               .llocat = llocation, .lscale = lscale, .lkappa = lkappa,
               .ilocat = ilocation, .iscale = iscale, .ikappa = ikappa ))),
@@ -2910,9 +2909,9 @@ alaplace3.control <- function(maxit = 100, ...)
         dlocation.deta = dtheta.deta(location, .llocat, earg = .elocat)
         dscale.deta = dtheta.deta(Scale, .lscale, earg = .escale)
         dkappa.deta = dtheta.deta(kappa, .lkappa, earg = .ekappa)
-        w * cbind(dl.dlocation * dlocation.deta,
-                  dl.dscale * dscale.deta,
-                  dl.dkappa * dkappa.deta)
+        c(w) * cbind(dl.dlocation * dlocation.deta,
+                     dl.dscale * dscale.deta,
+                     dl.dkappa * dkappa.deta)
     }), list( .escale = escale, .lscale = lscale,
               .elocat = elocation, .llocat = llocation,
               .ekappa = ekappa, .lkappa = lkappa ))),
@@ -2928,7 +2927,7 @@ alaplace3.control <- function(maxit = 100, ...)
         wz[,iam(3,3,M)] = d2l.dkappa2 * dkappa.deta^2
         wz[,iam(1,3,M)] = d2l.dkappadloc * dkappa.deta * dlocation.deta
         wz[,iam(2,3,M)] = d2l.dkappadscale  * dkappa.deta * dscale.deta
-        w * wz
+        c(w) * wz
     }), list( .escale = escale, .lscale = lscale,
               .elocat = elocation, .llocat = llocation ))))
 }
@@ -2978,13 +2977,13 @@ rlaplace = function(n, location=0, scale=1) {
  laplace = function(llocation = "identity", lscale = "loge",
                    elocation = list(), escale = list(),
                    ilocation = NULL, iscale = NULL,
-                   method.init = 1, zero = 2) {
+                   imethod = 1, zero = 2) {
     if (mode(llocation) != "character" && mode(llocation) != "name")
         llocation = as.character(substitute(llocation))
     if (mode(lscale) != "character" && mode(lscale) != "name")
         lscale = as.character(substitute(lscale))
-    if (!is.Numeric(method.init, allow = 1, integ = TRUE, posit = TRUE) ||
-       method.init > 3) stop("argument 'method.init' must be 1 or 2 or 3")
+    if (!is.Numeric(imethod, allow = 1, integ = TRUE, posit = TRUE) ||
+       imethod > 3) stop("argument 'imethod' must be 1 or 2 or 3")
     if (length(zero) && !is.Numeric(zero, integer = TRUE, posit = TRUE))
         stop("bad input for argument 'zero'")
     if (!is.list(elocation)) elocation = list()
@@ -3010,10 +3009,10 @@ rlaplace = function(n, location=0, scale=1) {
         c(namesof("location", .llocat, earg = .elocat, tag = FALSE),
           namesof("scale",    .lscale,    earg = .escale,    tag = FALSE))
         if (!length(etastart)) {
-            if ( .method.init == 1) {
+            if ( .imethod == 1) {
                 locat.init = median(y)
                 scale.init = sqrt(var(y) / 2)
-            } else if ( .method.init == 2) {
+            } else if ( .imethod == 2) {
                 locat.init = weighted.mean(y, w)
                 scale.init = sqrt(var(y) / 2)
             } else {
@@ -3028,7 +3027,7 @@ rlaplace = function(n, location=0, scale=1) {
                 cbind(theta2eta(locat.init, .llocat, earg = .elocat),
                       theta2eta(scale.init, .lscale, earg = .escale))
         }
-    }), list( .method.init = method.init,
+    }), list( .imethod = imethod,
              .elocat = elocation, .escale = escale,
              .llocat = llocation, .lscale = lscale,
              .ilocat = ilocation, .iscale = iscale ))),
@@ -3062,7 +3061,8 @@ rlaplace = function(n, location=0, scale=1) {
         dl.dscale =  zedd / Scale - 1/Scale
         dlocation.deta = dtheta.deta(location, .llocat, earg = .elocat)
         dscale.deta = dtheta.deta(Scale, .lscale, earg = .escale)
-        w * cbind(dl.dlocation * dlocation.deta, dl.dscale * dscale.deta)
+        c(w) * cbind(dl.dlocation * dlocation.deta,
+                     dl.dscale    * dscale.deta)
     }), list( .escale = escale, .lscale = lscale,
               .elocat = elocation, .llocat = llocation ))),
     weight = eval(substitute(expression({
@@ -3070,7 +3070,7 @@ rlaplace = function(n, location=0, scale=1) {
         wz = matrix(0, nrow=n, ncol=M) # diagonal
         wz[,iam(1,1,M)] = d2l.dlocation2 * dlocation.deta^2
         wz[,iam(2,2,M)] = d2l.dscale2 * dscale.deta^2
-        w * wz
+        c(w) * wz
     }), list( .escale = escale, .lscale = lscale,
               .elocat = elocation, .llocat = llocation ))))
 }
@@ -3084,11 +3084,11 @@ fff.control <- function(save.weight = TRUE, ...)
 
  fff = function(link = "loge", earg = list(),
                 idf1 = NULL, idf2 = NULL, nsimEIM = 100, # ncp=0,
-                method.init = 1, zero = NULL) {
+                imethod = 1, zero = NULL) {
     if (mode(link) != "character" && mode(link) != "name")
         link = as.character(substitute(link))
-    if (!is.Numeric(method.init, allow = 1, integ = TRUE, posit = TRUE) ||
-       method.init > 2) stop("argument 'method.init' must be 1 or 2")
+    if (!is.Numeric(imethod, allow = 1, integ = TRUE, posit = TRUE) ||
+       imethod > 2) stop("argument 'imethod' must be 1 or 2")
     if (length(zero) && !is.Numeric(zero, integer = TRUE, posit = TRUE))
         stop("bad input for argument 'zero'")
     if (!is.list(earg)) earg = list()
@@ -3116,7 +3116,7 @@ fff.control <- function(save.weight = TRUE, ...)
         predictors.names = c(namesof("df1", .link, earg = .earg, tag = FALSE),
                              namesof("df2", .link, earg = .earg, tag = FALSE))
         if (!length(etastart)) {
-            if ( .method.init == 1) {
+            if ( .imethod == 1) {
                 df2.init = b = 2*mean(y) / (mean(y)-1)
                 df1.init = 2*b^2*(b-2)/(var(y)*(b-2)^2 * (b-4) - 2*b^2)
                 if (df2.init < 4) df2.init = 5
@@ -3133,7 +3133,7 @@ fff.control <- function(save.weight = TRUE, ...)
             etastart = cbind(theta2eta(df1.init, .link, earg = .earg),
                              theta2eta(df2.init, .link, earg = .earg))
         }
-    }), list( .method.init = method.init, .idf1=idf1, .earg = earg,
+    }), list( .imethod = imethod, .idf1=idf1, .earg = earg,
              .idf2=idf2, .link = link ))),
     inverse = eval(substitute(function(eta, extra = NULL) {
         df2 = eta2theta(eta[,2], .link, earg = .earg)
@@ -3198,7 +3198,7 @@ fff.control <- function(save.weight = TRUE, ...)
             matrix(colMeans(run.varcov),
                    n, ncol(run.varcov), byrow = TRUE) else run.varcov
 
-        wz = w * wz * dthetas.detas[,ind1$row] * dthetas.detas[,ind1$col]
+        wz = c(w) * wz * dthetas.detas[,ind1$row] * dthetas.detas[,ind1$col]
         wz
     }), list( .link = link, .earg = earg, .nsimEIM = nsimEIM,
               .ncp = ncp ))))
@@ -3336,7 +3336,7 @@ fff.control <- function(save.weight = TRUE, ...)
         d2prob.deta2 = d2theta.deta2(prob, .lprob, earg = .earg)
 
         wz = -(dprob.deta^2) * d2l.dprob2
-        wz = w * wz
+        wz = c(w) * wz
         wz[wz < .Machine$double.eps] = .Machine$double.eps
         wz
     }), list( .lprob = lprob, .earg = earg ))))
@@ -3390,11 +3390,11 @@ rbenini = function(n, shape, y0) {
 
  benini = function(y0=stop("argument 'y0' must be specified"),
                    lshape = "loge", earg = list(),
-                   ishape = NULL, method.init = 1) {
+                   ishape = NULL, imethod = 1) {
     if (mode(lshape) != "character" && mode(lshape) != "name")
         lshape = as.character(substitute(lshape))
-    if (!is.Numeric(method.init, allow = 1, integ = TRUE, posit = TRUE) ||
-       method.init > 2) stop("argument 'method.init' must be 1 or 2")
+    if (!is.Numeric(imethod, allow = 1, integ = TRUE, posit = TRUE) ||
+       imethod > 2) stop("argument 'imethod' must be 1 or 2")
     if (!is.Numeric(y0, allow = 1, posit = TRUE))
        stop("bad input for argument 'y0'")
     if (!is.list(earg)) earg = list()
@@ -3414,7 +3414,7 @@ rbenini = function(n, shape, y0) {
         if (!length(etastart)) {
             probs = (1:3) / 4
             qofy= quantile(rep(y, times=w), probs=probs) # fails if w != integer
-            if ( .method.init == 1) {
+            if ( .imethod == 1) {
                 shape.init = mean(-log1p(-probs) / (log(qofy))^2)
             } else {
                 shape.init = median(-log1p(-probs) / (log(qofy))^2)
@@ -3423,7 +3423,7 @@ rbenini = function(n, shape, y0) {
                          rep(shape.init, len = n)
             etastart = cbind(theta2eta(shape.init, .lshape, earg = .earg))
         }
-    }), list( .method.init = method.init, .ishape=ishape, .lshape = lshape, .earg = earg,
+    }), list( .imethod = imethod, .ishape=ishape, .lshape = lshape, .earg = earg,
              .y0=y0 ))),
     inverse = eval(substitute(function(eta, extra = NULL) {
         shape = eta2theta(eta, .lshape, earg = .earg)
@@ -3457,7 +3457,7 @@ rbenini = function(n, shape, y0) {
     weight = eval(substitute(expression({
         d2l.dshape2 = 1 / shape^2
         wz = d2l.dshape2 * dshape.deta^2
-        w * wz
+        c(w) * wz
     }), list( .lshape = lshape, .earg = earg ))))
 }
 
@@ -3700,7 +3700,7 @@ ptriangle = function(q, theta, lower=0, upper=1) {
     weight = eval(substitute(expression({
         d2l.dTheta2 =  1 / ((Theta-lower)*(upper-Theta))
         wz = dTheta.deta^2 * d2l.dTheta2
-        w * wz
+        c(w) * wz
     }), list( .link = link, .earg = earg ))))
 }
 
@@ -3732,7 +3732,7 @@ loglaplace1.control <- function(maxit = 300, ...)
                      dfmu.init = 3,
                      rep0 = 0.5, # 0.0001,
                      minquantile = 0, maxquantile = Inf,
-                     method.init = 1, zero = NULL) {
+                     imethod = 1, zero = NULL) {
 
     if (length(minquantile) != 1)
         stop("bad input for argument 'minquantile'")
@@ -3746,8 +3746,8 @@ loglaplace1.control <- function(maxit = 300, ...)
         stop("arguments 'kappa' and 'tau' do not match")
     if (mode(llocation) != "character" && mode(llocation) != "name")
         llocation = as.character(substitute(llocation))
-    if (!is.Numeric(method.init, allow = 1, integ = TRUE, posit = TRUE) ||
-       method.init > 4) stop("argument 'method.init' must be 1, 2 or ... 4")
+    if (!is.Numeric(imethod, allow = 1, integ = TRUE, posit = TRUE) ||
+       imethod > 4) stop("argument 'imethod' must be 1, 2 or ... 4")
     if (!is.list(elocation)) elocation = list()
     if (!is.Numeric(shrinkage.init, allow = 1) || shrinkage.init < 0 ||
        shrinkage.init > 1) stop("bad input for argument 'shrinkage.init'")
@@ -3808,13 +3808,13 @@ loglaplace1.control <- function(maxit = 300, ...)
         }
 
         if (!length(etastart)) {
-            if ( .method.init == 1) {
+            if ( .imethod == 1) {
                 locat.init = quantile(rep(y, w), probs= extra$tau) + 1/16
-            } else if ( .method.init == 2) {
+            } else if ( .imethod == 2) {
                 locat.init = weighted.mean(y, w)
-            } else if ( .method.init == 3) {
+            } else if ( .imethod == 3) {
                 locat.init = median(y)
-            } else if ( .method.init == 4) {
+            } else if ( .imethod == 4) {
                 Fit5 = vsmooth.spline(x = x[, min(ncol(x), 2)], y = y, w = w,
                                         df = .dfmu.init)
                 locat.init = c(predict(Fit5, x = x[, min(ncol(x), 2)])$y)
@@ -3830,7 +3830,7 @@ loglaplace1.control <- function(maxit = 300, ...)
             etastart =
                 cbind(theta2eta(locat.init, .llocat, earg = .elocat))
         }
-    }), list( .method.init = method.init,
+    }), list( .imethod = imethod,
               .dfmu.init = dfmu.init, .rep0 = rep0,
               .sinit = shrinkage.init, .digt = digt,
               .elocat = elocation, .Scale.arg = Scale.arg,
@@ -3909,14 +3909,14 @@ loglaplace1.control <- function(maxit = 300, ...)
         dl.dlocation = ifelse(w.mat >= location.w, kappamat, 1/kappamat) *
                        sqrt(2) * sign(w.mat-location.w) / Scale.w
         dlocation.deta = dtheta.deta(location.w, "identity", earg = .elocat)
-        w * cbind(dl.dlocation * dlocation.deta)
+        c(w) * cbind(dl.dlocation * dlocation.deta)
     }), list( .Scale.arg = Scale.arg, .elocat = elocation,
               .rep0 = rep0,
               .llocat = llocation, .kappa = kappa ))),
     weight = eval(substitute(expression({
         d2l.dlocation2 = 2 / Scale.w^2
         wz = cbind(d2l.dlocation2 * dlocation.deta^2)
-        w * wz
+        c(w) * wz
     }), list( .Scale.arg = Scale.arg,
               .elocat = elocation, .llocat = llocation ))))
 }
@@ -3939,7 +3939,7 @@ loglaplace2.control <- function(save.weight = TRUE, ...)
                      sameScale = TRUE,
                      dfmu.init = 3,
                      rep0 = 0.5, nsimEIM = NULL,
-                     method.init = 1, zero = "(1 + M/2):M") {
+                     imethod = 1, zero = "(1 + M/2):M") {
  warning("it is best to use loglaplace1()")
 
     if (length(nsimEIM) &&
@@ -3955,8 +3955,8 @@ loglaplace2.control <- function(save.weight = TRUE, ...)
         llocation = as.character(substitute(llocation))
     if (mode(lscale) != "character" && mode(lscale) != "name")
         lscale = as.character(substitute(lscale))
-    if (!is.Numeric(method.init, allow = 1, integ = TRUE, posit = TRUE) ||
-       method.init > 4) stop("argument 'method.init' must be 1, 2 or ... 4")
+    if (!is.Numeric(imethod, allow = 1, integ = TRUE, posit = TRUE) ||
+       imethod > 4) stop("argument 'imethod' must be 1, 2 or ... 4")
     if (length(iscale) && !is.Numeric(iscale, posit = TRUE))
         stop("bad input for argument 'iscale'")
     if (!is.list(elocation)) elocation = list()
@@ -4033,13 +4033,13 @@ loglaplace2.control <- function(save.weight = TRUE, ...)
                  "Choose larger values for 'tau'.")
 
         if (!length(etastart)) {
-            if ( .method.init == 1) {
+            if ( .imethod == 1) {
                 locat.init.y = weighted.mean(y, w)
                 scale.init = sqrt(var(y) / 2)
-            } else if ( .method.init == 2) {
+            } else if ( .imethod == 2) {
                 locat.init.y = median(y)
                 scale.init = sqrt(sum(w*abs(y-median(y))) / (sum(w) *2))
-            } else if ( .method.init == 3) {
+            } else if ( .imethod == 3) {
                 Fit5 = vsmooth.spline(x = x[, min(ncol(x), 2)], y = y, w = w,
                                         df = .dfmu.init)
                 locat.init.y = c(predict(Fit5, x = x[, min(ncol(x), 2)])$y)
@@ -4059,7 +4059,7 @@ loglaplace2.control <- function(save.weight = TRUE, ...)
                 cbind(theta2eta(locat.init.y, .llocat, earg = .elocat),
                       theta2eta(scale.init, .lscale, earg = .escale))
         }
-    }), list( .method.init = method.init,
+    }), list( .imethod = imethod,
               .dfmu.init = dfmu.init,
               .sinit = shrinkage.init, .digt = digt,
               .elocat = elocation, .escale = escale,
@@ -4135,8 +4135,8 @@ loglaplace2.control <- function(save.weight = TRUE, ...)
                      zedd / Scale.w - 1 / Scale.w
         dlocation.deta = dtheta.deta(location.w, .llocat, earg = .elocat)
         dscale.deta = dtheta.deta(Scale.w, .lscale, earg = .escale)
-        w * cbind(dl.dlocation * dlocation.deta,
-                  dl.dscale * dscale.deta)
+        c(w) * cbind(dl.dlocation * dlocation.deta,
+                     dl.dscale * dscale.deta)
     }), list( .escale = escale, .lscale = lscale,
               .elocat = elocation, .llocat = llocation,
               .rep0 = rep0, .kappa = kappa ))),
@@ -4167,14 +4167,14 @@ loglaplace2.control <- function(save.weight = TRUE, ...)
                        n, ncol(run.varcov), byrow = TRUE) else run.varcov
 
             wz = wz * dthetas.detas[,ind1$row] * dthetas.detas[,ind1$col]
-            wz = w * matrix(wz, n, dimm(M))
+            wz = c(w) * matrix(wz, n, dimm(M))
             wz
         } else {
             d2l.dlocation2 = 2 / (Scale.w * location.w)^2
             d2l.dscale2 = 1 / Scale.w^2
             wz = cbind(d2l.dlocation2 * dlocation.deta^2,
                        d2l.dscale2 * dscale.deta^2)
-            w * wz
+            c(w) * wz
         }
     }), list( .elocat = elocation, .escale = escale,
               .llocat = llocation, .lscale = lscale,
@@ -4206,7 +4206,7 @@ adjust01.logitlaplace1 = function(ymat, y, w, rep01) {
         shrinkage.init = 0.95, parallelLocation = FALSE, digt = 4,
         dfmu.init = 3,
         rep01 = 0.5,
-        method.init = 1, zero = NULL) {
+        imethod = 1, zero = NULL) {
 
     if (!is.Numeric(rep01, posit = TRUE, allow = 1) || rep01 > 0.5)
         stop("bad input for argument 'rep01'")
@@ -4216,8 +4216,8 @@ adjust01.logitlaplace1 = function(ymat, y, w, rep01) {
         stop("arguments 'kappa' and 'tau' do not match")
     if (mode(llocation) != "character" && mode(llocation) != "name")
         llocation = as.character(substitute(llocation))
-    if (!is.Numeric(method.init, allow = 1, integ = TRUE, posit = TRUE) ||
-       method.init > 4) stop("argument 'method.init' must be 1, 2 or ... 4")
+    if (!is.Numeric(imethod, allow = 1, integ = TRUE, posit = TRUE) ||
+       imethod > 4) stop("argument 'imethod' must be 1, 2 or ... 4")
     if (!is.list(elocation)) elocation = list()
     if (!is.Numeric(shrinkage.init, allow = 1) || shrinkage.init < 0 ||
        shrinkage.init > 1) stop("bad input for argument 'shrinkage.init'")
@@ -4274,12 +4274,12 @@ adjust01.logitlaplace1 = function(ymat, y, w, rep01) {
             stop("sample proportion of 1s == ", round(prop.1., dig=4),
                  " < maximum 'tau' value. Choose smaller values for 'tau'.")
         if (!length(etastart)) {
-            if ( .method.init == 1) {
+            if ( .imethod == 1) {
                 locat.init = quantile(rep(y, w), probs= extra$tau)
-            } else if ( .method.init == 2) {
+            } else if ( .imethod == 2) {
                 locat.init = weighted.mean(y, w)
                 locat.init = median(rep(y, w))
-            } else if ( .method.init == 3) {
+            } else if ( .imethod == 3) {
                 use.this = weighted.mean(y, w)
                 locat.init = (1- .sinit)*y + use.this * .sinit
             } else {
@@ -4294,7 +4294,7 @@ adjust01.logitlaplace1 = function(ymat, y, w, rep01) {
             etastart =
                 cbind(theta2eta(locat.init, .llocat, earg = .elocat))
         }
-    }), list( .method.init = method.init,
+    }), list( .imethod = imethod,
               .dfmu.init = dfmu.init,
               .sinit = shrinkage.init, .digt = digt,
               .elocat = elocation, .Scale.arg = Scale.arg,
@@ -4366,14 +4366,14 @@ adjust01.logitlaplace1 = function(ymat, y, w, rep01) {
         dl.dlocation = ifelse(w.mat >= location.w, kappamat, 1/kappamat) *
                        sqrt(2) * sign(w.mat-location.w) / Scale.w
         dlocation.deta = dtheta.deta(location.w, "identity", earg = .elocat)
-        w * cbind(dl.dlocation * dlocation.deta)
+        c(w) * cbind(dl.dlocation * dlocation.deta)
     }), list( .Scale.arg = Scale.arg, .elocat = elocation,
               .rep01 = rep01,
               .llocat = llocation, .kappa = kappa ))),
     weight = eval(substitute(expression({
         d2l.dlocation2 = 2 / Scale.w^2
         wz = cbind(d2l.dlocation2 * dlocation.deta^2)
-        w * wz
+        c(w) * wz
     }), list( .Scale.arg = Scale.arg,
               .elocat = elocation, .llocat = llocation ))))
 }
@@ -4398,7 +4398,3 @@ adjust01.logitlaplace1 = function(ymat, y, w, rep01) {
 
 
 
-
-
-
-
diff --git a/R/family.rcam.R b/R/family.rcam.R
index 5e2386d..8142077 100644
--- a/R/family.rcam.R
+++ b/R/family.rcam.R
@@ -16,25 +16,19 @@
 
 
 
-
-
- rcam <- function(y, Rank = 0,
+ rcam <- function(y,
          family = poissonff,
+         Rank = 0,
          Musual = NULL,
          Index.corner = if (!Rank) NULL else 1 + Musual * (1:Rank),
          rprefix = "Row.",
          cprefix = "Col.",
          szero = if (!Rank) NULL else
-                           {if (Musual == 1) 1 else
+                           { if (Musual == 1) 1 else
                                   setdiff(1:(Musual*ncol(y)),
                                           c( # 1:Musual,
                                             1 + (1:ncol(y)) * Musual,
                                             Index.corner))},
-
-
-
-
-
                   summary.arg = FALSE, h.step = 0.0001,
                   rbaseline = 1, cbaseline = 1, ...) {
                            
@@ -42,23 +36,21 @@
 
 
 
+
+
   if (!is.character(rprefix))
     stop("argument 'rprefix' must be character")
   if (!is.character(cprefix))
     stop("argument 'cprefix' must be character")
 
-
-
-
-    if (is.character(family))
-        family <- get(family)
-    if (is.function(family))
-        family <- ((family)())
-    if (!inherits(family, "vglmff")) {
-        stop("'family = ", family, "' is not a VGAM family function")
-    }
-    efamily = family
-
+  if (is.character(family))
+      family <- get(family)
+  if (is.function(family))
+      family <- ((family)())
+  if (!inherits(family, "vglmff")) {
+      stop("'family = ", family, "' is not a VGAM family function")
+  }
+  efamily = family
 
 
   if (!is.Numeric(Musual)) {
@@ -73,9 +65,6 @@
   }
 
 
-
-
-
   object.save <- y
   y <- if (is(y, "rrvglm")) {
     object.save at y
@@ -95,8 +84,6 @@
 
 
 
-
-
   yn1 <- if (length(dimnames(y)[[1]])) dimnames(y)[[1]] else
             paste("X2.", 1:nrow(y), sep = "")
   warn.save = options()$warn
@@ -110,14 +97,14 @@
   ncprefix <- as.name(cprefix)
 
 
-   assign(rprefix, factor(1:nrow(y)))
-   modmat.row <- substitute(
+  assign(rprefix, factor(1:nrow(y)))
+  modmat.row <- substitute(
            model.matrix( ~ .rprefix ), list( .rprefix = nrprefix ))
-   assign(cprefix, factor(1:ncol(y)))
-   modmat.col <- substitute(
+  assign(cprefix, factor(1:ncol(y)))
+  modmat.col <- substitute(
            model.matrix( ~ .cprefix ), list( .cprefix = ncprefix ))
-   modmat.row <- eval( modmat.row )
-   modmat.col <- eval( modmat.col )
+  modmat.row <- eval( modmat.row )
+  modmat.col <- eval( modmat.col )
 
 
 
@@ -170,7 +157,6 @@
   }
 
 
-
   str2 <- paste("y ", str1)
   if (Rank > 0) {
     for(ii in 2:nrow(y))
@@ -178,9 +164,8 @@
   }
 
 
-
   controlfun <- if (Rank == 0) rrvglm.control else rrvglm.control
-  controlfun <- if (Rank == 0) vglm.control else rrvglm.control  # orig.
+  controlfun <- if (Rank == 0)   vglm.control else rrvglm.control  # orig.
 
 
   mycontrol <- controlfun(Rank = Rank,
@@ -221,8 +206,8 @@
 
 
 
-  if (mycontrol$trace) {
-  }
+    if (mycontrol$trace) {
+    }
 
   }
 
@@ -254,7 +239,7 @@
       summary(answer)
     }
   } else { 
-    as(answer, ifelse(Rank > 0, "rrvglm", "vglm"))
+    as(answer, ifelse(Rank > 0, "rcam", "rcam0"))
   }
 
 
@@ -283,15 +268,21 @@ summaryrcam = function(object, ...) {
 
 
 
+ setClass("rcam0", representation(not.needed = "numeric"),
+          contains = "vglm")  # Added 20110506
+
  setClass("rcam", representation(not.needed = "numeric"),
           contains = "rrvglm")
 
 
-setMethod("summary", "rcam",
+setMethod("summary", "rcam0",
           function(object, ...)
           summaryrcam(object, ...))
 
 
+setMethod("summary", "rcam",
+          function(object, ...)
+          summaryrcam(object, ...))
 
 
 
@@ -302,25 +293,20 @@ setMethod("summary", "rcam",
 
 
 
-
-
-  Rcam <- function (mat, rbaseline = 1, cbaseline = 1) {
-
+ Rcam <- function (mat, rbaseline = 1, cbaseline = 1) {
 
   mat <- as.matrix(mat)
   RRR <- dim(mat)[1]
   CCC <- dim(mat)[2]
     
-
   if (is.null(rownames(mat))) 
-    rnames <- paste("X", 1:RRR, sep="") else  
+    rnames <- paste("X", 1:RRR, sep = "") else  
                  rnames  <- rownames(mat)
 
   if (is.null(colnames(mat))) 
-    cnames <- paste("Y", 1:CCC, sep="") else  
+    cnames <- paste("Y", 1:CCC, sep = "") else  
                  cnames  <- colnames(mat)
 
-
   r.index <- if (is.character(rbaseline))  
                which(rownames(mat) == rbaseline) else
                      if (is.numeric(rbaseline)) rbaseline else
@@ -331,30 +317,26 @@ setMethod("summary", "rcam",
                which(colnames(mat) == cbaseline) else
                      if (is.numeric(cbaseline)) cbaseline else
                          stop("argement 'cbaseline' must be numeric",
-                               "or character of the level of row")  
-    
-
-  yswap <- rbind(mat[r.index:RRR, ], 
-                  if (r.index > 1) mat[1:(r.index - 1),] else NULL)
-
+                               "or character of the level of row")
 
-  if (length(r.index) != 1) 
+  if (length(r.index) != 1)
     stop("Could not match with argument 'rbaseline'")
 
-  if (length(c.index) != 1) 
+  if (length(c.index) != 1)
     stop("Could not match with argument 'cbaseline'")
 
-  yswap <- cbind(yswap[, c.index:CCC], 
-               if (c.index > 1) yswap[, 1:(c.index - 1)] else  NULL)
 
-  new.rnames <- rnames[ c(r.index:RRR, 
-                if (r.index > 1) 1:(r.index - 1) else NULL)]
-  
-  new.cnames <- cnames[ c(c.index:CCC, 
-                if (c.index > 1) 1:(c.index - 1) else NULL)]
+  yswap <- rbind(mat[r.index:RRR, ],
+                 if (r.index > 1) mat[1:(r.index - 1),] else NULL)
+  yswap <- cbind(yswap[, c.index:CCC],
+                 if (c.index > 1) yswap[, 1:(c.index - 1)] else  NULL)
 
+  new.rnames <- rnames[c(r.index:RRR,
+                         if (r.index > 1) 1:(r.index - 1) else NULL)]
+  new.cnames <- cnames[c(c.index:CCC, 
+                         if (c.index > 1) 1:(c.index - 1) else NULL)]
   colnames(yswap) <- new.cnames
-  rownames(yswap) <- new.rnames  
+  rownames(yswap) <- new.rnames
   
   yswap
 }
@@ -363,69 +345,118 @@ setMethod("summary", "rcam",
 
 
 
- plotrcam0  <- function (object, rfirst = 1, cfirst = 1,
+
+
+
+
+
+
+
+
+ plotrcam0  <- function (object,
+     centered = TRUE, whichplots = c(1, 2),
+     hline0 = TRUE, hlty = "dashed", hcol = par()$col, hlwd = par()$lwd,
+                         rfirst = 1, cfirst = 1,
                          rtype = "h", ctype = "h",
-                         rlas = 1, rcex.lab = 1, 
-                         rcex.axis = 1, rlabels = FALSE,
-                         rtick = FALSE, clas = 1, ccex.lab = 1,
-                         ccex.axis = 1, clabels = FALSE, ctick = FALSE,
+                         rcex.lab = 1, rcex.axis = 1, # rlabels = FALSE,
+                         rtick = FALSE,
+                         ccex.lab = 1, ccex.axis = 1, # clabels = FALSE,
+                         ctick = FALSE,
                          rmain = "Row effects", rsub = "",
-                         rxlabel = "", rylabel = "Row effects",
-                         cmain = "Column effects", csub = "", cxlabel= "",
-                         cylabel = "Column effects",
+                         rxlab = "", rylab = "Row effects",
+                         cmain = "Column effects", csub = "",
+                         cxlab = "", cylab = "Column effects",
                          rcol = par()$col, ccol = par()$col,
                          ...) {
 
  
-  if (object at family@infos()$Musual == 1) nparff <- 1 else nparff <- 2
+  nparff <- if (is.numeric(object at family@infos()$Musual)) {
+    object at family@infos()$Musual
+  } else {
+    1
+  }
 
 
-  orig.roweff <- c(0, coefficients(object)[(nparff+1): (nparff+nrow(object at y)-1)])
- 
-  orig.coleff <- c(0, coefficients(object)[(nparff+nrow(object at y)):
-                                    (length(coefficients(object)))])
-  rlast <- length(orig.roweff)
-  clast <- length(orig.coleff)
+
+  if (is.numeric(object at control$Rank) && object at control$Rank != 0)
+    warning("argument 'object' is not Rank-0")
+
+
+  n_lm  = nrow(object at y)
+
+  cobj <- coefficients(object)
+
+  upperbound = if (!is.numeric(object at control$Rank) ||
+                   object at control$Rank == 0) length(cobj) else
+               length(object at control$colx1.index)
+
+  orig.roweff <- c("Row.1" = 0, cobj[(nparff + 1) : (nparff + n_lm - 1)])
+  orig.coleff <- c("Col.1" = 0, cobj[(nparff + n_lm) : upperbound])
+  last.r <- length(orig.roweff)
+  last.c <- length(orig.coleff)
+
 
   orig.raxisl  <- rownames(object at y)
   orig.caxisl  <- colnames(object at y) 
     
-  roweff <- orig.roweff[c(rfirst:rlast, 
-             if (rfirst > 1) 1:(rfirst-1) else NULL)]
+  roweff.orig <- 
+  roweff <- orig.roweff[c(rfirst:last.r,
+                          if (rfirst > 1) 1:(rfirst-1) else NULL)]
+  coleff.orig <- 
+  coleff <- orig.coleff[c(cfirst:last.c,
+                          if (cfirst > 1) 1:(cfirst-1) else NULL)]
+
+  if (centered) {
+    roweff = scale(roweff, scale = FALSE)  # Center it only
+    coleff = scale(coleff, scale = FALSE)  # Center it only
+  }
 
-  coleff <- orig.coleff[c(cfirst:clast, 
-             if (cfirst > 1) 1:(cfirst-1) else NULL)]
+  raxisl <- orig.raxisl[c(rfirst:last.r,
+                          if (rfirst > 1) 1:(rfirst-1) else NULL)]
 
-  raxisl <- orig.raxisl[ c(rfirst:rlast, 
-             if (rfirst > 1) 1:(rfirst-1) else NULL)]
+  caxisl <- orig.caxisl[c(cfirst:last.c, 
+                          if (cfirst > 1) 1:(cfirst-1) else NULL)]
 
-  caxisl <- orig.caxisl[ c(cfirst:clast, 
-             if (cfirst > 1) 1:(cfirst-1) else NULL)]
 
+  if (any(whichplots == 1, na.rm = TRUE)) {
+    plot(roweff, type = rtype, 
+         axes = FALSE, col = rcol, main = rmain,
+         sub  = rsub, xlab = rxlab, ylab = rylab, ...)
 
-   plot(roweff, type = rtype, 
-        axes = FALSE, col = rcol,
-        main = rmain,
-        sub  = rsub,
-        xlab = rxlabel, ylab = rylabel, ...)
+    axis(1, at = 1:length(raxisl),
+         cex.lab = rcex.lab,  
+         cex.axis = rcex.axis,
+         label = raxisl)
+    axis(2, cex.lab = rcex.lab, ...)  # las = rlas)
+
+    if (hline0)
+      abline(h = 0, lty = hlty, col = hcol, lwd = hlwd)
+  }
 
+
+  if (any(whichplots == 2, na.rm = TRUE)) {
+    plot(coleff, type = ctype, 
+         axes = FALSE, col = ccol, main = cmain, # lwd = 2, xpd = FALSE,
+         sub  = csub, xlab = cxlab, ylab = cylab, ...)
+
+    axis(1, at = 1:length(caxisl),
+         cex.lab = ccex.lab,
+         cex.axis = ccex.axis,
+         label = caxisl)
+    axis(2, cex.lab = ccex.lab, ...)  # las = clas)
     
-    axis(1, at = 1:length(raxisl), cex.lab = rcex.lab,  
-            cex.axis = rcex.axis, label = raxisl)
-    axis(2, cex.lab = rcex.lab, las = rlas)
-    axis(3:4, labels = rlabels, tick = rtick)
+    if (hline0)
+      abline(h = 0, lty = hlty, col = hcol, lwd = hlwd)
+  }
 
 
 
-    plot(coleff, type = ctype, col = ccol, # lwd=2, xpd=F,
-         axes = FALSE, main = cmain,
-         sub  = csub, xlab = cxlabel, ylab = cylabel, ...)
 
-    axis(1, at = 1:length(caxisl), cex.lab = ccex.lab,
-            cex.axis = ccex.axis, label = caxisl)
-    axis(2, cex.lab= ccex.lab, las = clas)
-    
-    
+  object at post$row.effects = roweff
+  object at post$col.effects = coleff
+  object at post$raw.row.effects = roweff.orig
+  object at post$raw.col.effects = coleff.orig
+
   invisible(object)
 }
 
@@ -433,44 +464,98 @@ setMethod("summary", "rcam",
 
 
 
+setMethod("plot", "rcam0",
+          function(x, y, ...)
+          plotrcam0(object = x, ...))
+
+
+setMethod("plot", "rcam",
+          function(x, y, ...)
+          plotrcam0(object = x, ...))
+
+
+
 
 
 
 
 
 
-moffset <- function (mat, roffset=1, coffset=1){
 
-   y <- mat
 
-   
-    rowoffset <- function(y, roffset=1) {
-      y <- as.matrix(y)  
 
-      roffset <- if (is.character(roffset))  
-                 which(rownames(y) == roffset) else
-                       if (is.numeric(roffset)) roffset else
-                           stop("argument rstart/cstart must be numeric ",
-                                 "or character of the level of row/column")
 
-      if (roffset == 1) ye <- y else {   
-          ye <- y[1:roffset-1,,drop = FALSE]
-          ye <- rbind(y[(roffset):nrow(y),,drop = FALSE],
-                   cbind(ye[,2:ncol(y),drop = FALSE], ye[,1,drop = FALSE]))
-          ye
-      }
-    }        
-    
-    if (((coffset >= 1) && (coffset <= ncol(y))) ||
-        ((roffset >=1) && (roffset <= nrow(y)))) {
-         y <- rowoffset(y, roffset)
-         y <- t(rowoffset(t(y), coffset))
-         y
-         } else
-           stop ("Error argument in 'rstart' or 'cstart'.",
-                 "It must be numeric or chacarter argument of row or column of",
-                 "'mat' matrix input")
-  }
+
+
+moffset <- function (mat, roffset = 0, coffset = 0, postfix = "") {
+
+
+
+
+
+  if ((is.numeric(roffset) && (roffset == 0)) &&
+      (is.numeric(coffset) && (coffset == 0)))
+    return(mat)
+
+
+  vecmat = c(unlist(mat))
+  ind1 <- if (is.character(roffset))
+                 which(rownames(mat) == roffset) else
+                       if (is.numeric(roffset)) roffset + 1 else
+                           stop("argument 'roffset' not matched (character). ",
+                                 "It must be numeric, ",
+                                 "else character and match the ",
+                                 "row names of the response")
+  ind2 <- if (is.character(coffset))
+                 which(colnames(mat) == coffset) else
+                       if (is.numeric(coffset)) coffset + 1 else
+                           stop("argument 'coffset' not matched (character). ",
+                                 "It must be numeric, ",
+                                 "else character and match the ",
+                                 "column names of the response")
+
+  if (!is.Numeric(ind1, positive = TRUE, integ = TRUE, allow = 1) ||
+      !is.Numeric(ind2, positive = TRUE, integ = TRUE, allow = 1))
+    stop("bad input for arguments 'roffset' and/or 'coffset'")
+  if (ind1 > nrow(mat))
+    stop("too large a value for argument 'roffset'")
+  if (ind2 > ncol(mat))
+    stop("too large a value for argument 'coffset'")
+
+
+  start.ind = (ind2 - 1)* nrow(mat) + ind1
+
+
+  svecmat = vecmat[c(start.ind:(nrow(mat) * ncol(mat)),
+                     0:(start.ind - 1))]
+
+  rownames.mat = rownames(mat)
+  if (length(rownames.mat) != nrow(mat))
+    rownames.mat = paste("Row.", 1:nrow(mat), sep = "")
+
+  colnames.mat = colnames(mat)
+  if (length(colnames.mat) != ncol(mat))
+    colnames.mat = paste("Col.", 1:ncol(mat), sep = "")
+
+
+  newrn = if (roffset > 0)
+            c(rownames.mat[c(ind1:nrow(mat))],
+              paste(rownames.mat[0:(ind1-1)], postfix, sep = "")) else
+           rownames.mat
+
+  newcn = c(colnames.mat[c(ind2:ncol(mat), 0:(ind2 - 1))])
+  if (roffset > 0)
+    newcn = paste(newcn, postfix, sep = "")
+
+  newmat = matrix(svecmat, nrow(mat), ncol(mat),
+                  dimnames = list(newrn, newcn))
+  newmat
+}
+
+
+
+
+
 
 
 
@@ -502,9 +587,9 @@ confint_rrnb <- function(rrnb2) {
   if (!all(rrnb2 at misc$link == "loge"))
     stop("argument 'rrnb2' does not have log links for both parameters")
 
-  a21.hat <- (Coef(rrnb2)@A)["log(k)", 1]
+  a21.hat <- (Coef(rrnb2)@A)["log(size)", 1]
   beta11.hat <- Coef(rrnb2)@B1["(Intercept)", "log(mu)"]
-  beta21.hat <- Coef(rrnb2)@B1["(Intercept)", "log(k)"]
+  beta21.hat <- Coef(rrnb2)@B1["(Intercept)", "log(size)"]
   delta1.hat <- exp(a21.hat * beta11.hat - beta21.hat)
   delta2.hat <- 2 - a21.hat
 
@@ -546,7 +631,7 @@ confint_nb1 <- function(nb1) {
     stop("argument 'nb1' does not have log links for both parameters")
 
   cnb1 <- coefficients(as(nb1, "vglm"), matrix = TRUE)
-  mydiff <- (cnb1["(Intercept)", "log(k)"] - cnb1["(Intercept)", "log(mu)"])
+  mydiff <- (cnb1["(Intercept)", "log(size)"] - cnb1["(Intercept)", "log(mu)"])
   delta0.hat <- exp(mydiff)
   (phi0.hat <- 1 + 1 / delta0.hat)  # MLE of phi0
 
@@ -572,745 +657,3 @@ confint_nb1 <- function(nb1) {
 
 
 
-  # ref: Kus, section 4.1, pg 4500
-  # updated on 22/15/2010
-dexppois <- function(x, lambda, betave = 1, log = FALSE) {
-  if (!is.logical(log.arg <- log))
-    stop("bad input for argument 'log'")
-  rm(log)
-
-  N <- max(length(x), length(lambda), length(betave))
-  x <- rep(x, len = N); lambda = rep(lambda, len = N);
-  betave <- rep(betave, len = N)
-
-  logdensity <- rep(log(0), len = N)
-  xok <- (0 < x)
- # logdensity[xok] <- log(lambda[xok]) + log(betave[xok]) - lambda[xok] -
-  #                   betave[xok] * x[xok] + lambda[xok] * exp(-betave[xok] *
-   #                  x[xok]) - log(expm1(lambda[xok])) + 1
-  
- logdensity[xok] <- log(lambda[xok]) + log(betave[xok]) -
-                    log1p(-exp(-lambda[xok])) - lambda[xok] - betave[xok] *
-                    x[xok] + lambda[xok] * exp(-betave[xok] * x[xok])
-   
-  logdensity[lambda <= 0] <- NaN
-  logdensity[betave <= 0] <- NaN
-  if (log.arg) logdensity else exp(logdensity)
-}
-
-  # ref: calculated from F(x) from Kus, pg 4499
-  # Not working 13/12/10
-  # updated and working on 22/15/2010
-rexppois <- function(n, lambda, betave = 1) {
-  # ans <- log(lambda/(log((exp(lambda) + 1) * runif(n))))/betave
-  ans <- -log(log(runif(n) * -(expm1(lambda)) +
-         exp(lambda)) / lambda) / betave
-  ans[(lambda <= 0) | (betave <= 0)] <- NaN
-  ans
-}
-
-
-  # ref: calculated from F(x) from Kus, pg 4499
-  # Not working 13/12/10
-  # updated and working on 22/15/2010
-qexppois<- function(p, lambda, betave = 1) {
-  # ans <- log(lambda/(log((exp(lambda) + 1) * p)))/betave
-  ans <- -log(log(p * -(expm1(lambda)) +
-         exp(lambda)) / lambda) / betave
-  ans[(lambda <= 0) | (betave <= 0)] = NaN
-  ans[p < 0] <- NaN
-  ans[p > 1] <- NaN
-  ans
-}
-
-
-
-  # ref: Kus, eqn 2, pg 4499
-  # Updated on 22/12/2010
-pexppois<- function(q, lambda, betave = 1) {
-  #ans <- -(exp(lambda * exp(-betave * q)) - exp(lambda))/expm1(lambda)
-  ans <-(exp(lambda * exp(-betave * q)) - exp(lambda)) / -expm1(lambda)  
-  ans[(lambda <= 0) | (betave <= 0)] <- NaN
-  ans
-}
-
-
-
-
- exppoisson = function (llambda = "loge", lbetave = "loge",
-                        elambda = list(), ebetave = list(),
-                        ilambda = 1.1,    ibetave = 1.5, 
-                        zero = NULL) {
-
-  if (mode(llambda) != "character" && mode(llambda) != "name") 
-    llambda = as.character(substitute(llambda))
-  if (mode(lbetave) != "character" && mode(lbetave) != "name") 
-    lbetave = as.character(substitute(lbetave))
-
-  if (length(zero) && !is.Numeric(zero, integer = TRUE, posit = TRUE)) 
-    stop("bad input for argument 'zero'")
-
-  if (!is.Numeric(ilambda, posit = TRUE)) 
-    stop("bad input for argument 'ilambda'")
-  if (length(ibetave) && !is.Numeric(ibetave, posit = TRUE)) 
-    stop("bad input for argument 'ibetave'")
-
-  ilambda[ilambda == 1] = 1.1
-
-  if (!is.list(ebetave)) 
-    ebetave = list()
-  if (!is.list(lambda)) 
-    elambda = list()
-
-  new("vglmff",
-  blurb = c("Exponential Poisson Distribution \n \n", 
-            "Links:    ",
-             namesof("lambda", llambda, earg = elambda), ", ",
-             namesof("betave", lbetave, earg = ebetave), "\n",
-            "Mean:     ",
-            "(lambda/(expm1(lambda) * betave)) *",
-            "genhypergeo(c(1,1),c(2,2),lambda)"),
-
-  # genhypergeo() from package: hypergeo
-  # ref = mean from Kus pg 4499
-
-  constraints = eval(substitute(expression({
-    constraints = cm.zero.vgam(constraints, x, .zero , M)
-    }), list( .zero = zero))),
-
-  initialize = eval(substitute(expression({
-    if (ncol(cbind(y)) != 1)
-      stop("response must be a vector or a one-column matrix")
-
-    predictors.names = c(
-      namesof("lambda", .llambda, earg = .elambda, short = TRUE),
-      namesof("betave", .lbetave, earg = .ebetave, short = TRUE))
-    if (!length(etastart)) {
-
-      lambda.init = if (!is.Numeric( .ilambda , posit = TRUE))
-                      stop("argument 'ilambda' must be positive") else
-                     rep( .ilambda , len = n)
-      betave.init = if (length( .ibetave )) 
-                      rep( .ibetave , len = n) else
-                      stop("zz need to fix this code")
-                   ## (lambda.init/(expm1(lambda.init) * (y + 1/8))) *
-                   ##  genhypergeo(c(1,1),c(2,2),lambda.init)
-
-
-      betave.init = rep(weighted.mean(betave.init, w = w), len = n)
-      etastart = cbind(theta2eta(lambda.init, .llambda , earg = .elambda ), 
-                       theta2eta(betave.init, .lbetave , earg = .ebetave ))
-    }
-   }), list( .llambda = llambda, .lbetave = lbetave, 
-             .ilambda = ilambda, .ibetave = ibetave, 
-             .elambda = elambda, .ebetave = ebetave))), 
-
-  inverse = eval(substitute(function(eta, extra = NULL) {
-    lambda = eta2theta(eta[, 1], .llambda , earg = .elambda )
-    betave = eta2theta(eta[, 2], .lbetave , earg = .ebetave )
-  warning("returning dud means")
-    runif(nrow(eta))
-  }, list( .llambda = llambda, .lbetave = lbetave, 
-           .elambda = elambda, .ebetave = ebetave))), 
-
-  last = eval(substitute(expression({
-    misc$link =    c(lambda = .llambda , betave = .lbetave )
-    misc$earg = list(lambda = .elambda , betave = .ebetave )
-    misc$expected = TRUE
-    
-  }), list( .llambda = llambda, .lbetave = lbetave,
-            .elambda = elambda, .ebetave = ebetave))), 
-
-  loglikelihood = eval(substitute(function(mu, y, w, 
-                  residuals = FALSE, eta, extra = NULL) {
-    lambda = eta2theta(eta[, 1], .llambda , earg = .elambda )
-    betave = eta2theta(eta[, 2], .lbetave , earg = .ebetave )
-    if (residuals) stop("loglikelihood residuals not ",
-                        "implemented yet") else {
-    sum(w * dexppois(x = y, lambda = lambda, betave = betave, log = TRUE))
-    }
-  }, list( .lbetave = lbetave , .llambda = llambda , 
-           .elambda = elambda , .ebetave = ebetave ))), 
-
-  vfamily = c("exppoisson"),
-
-  deriv = eval(substitute(expression({
-    lambda = eta2theta(eta[, 1], .llambda , earg = .elambda )
-    betave = eta2theta(eta[, 2], .lbetave , earg = .ebetave )
-
-    dl.dbetave = 1/betave - y - y * lambda * exp(-betave * y)
-    dl.dlambda = 1/lambda - 1/expm1(lambda) - 1 + exp(-betave * y)
-
-    dbetave.deta = dtheta.deta(betave, .lbetave , earg = .ebetave )
-    dlambda.deta = dtheta.deta(lambda, .llambda , earg = .elambda )
-
-    w * cbind(dl.dlambda * dlambda.deta,
-              dl.dbetave * dbetave.deta)
-  }), list( .llambda = llambda , .lbetave = lbetave,
-            .elambda = elambda, .ebetave = ebetave ))), 
-
-  weight = eval(substitute(expression({
-    
-    temp1 = -expm1(-lambda)
-    
-    ed2l.dlambda2 = (1 + exp(2 * lambda) - lambda^2 * exp(lambda) - 2 * 
-                    exp(lambda)) / (lambda * temp1)^2
-
-
-    ed2l.dbetave2 = 1 / betave^2 - (lambda^2 * exp(-lambda) / (4 * betave^2 *
-                    temp1)) * genhypergeo(c(2,2,2),c(3,3,3),lambda) 
-
-    ed2l.dbetavelambda = (lambda * exp(-lambda) / (4 * betave * temp1)) *
-                         genhypergeo(c(2,2),c(3,3),lambda)   
-
-    wz <- matrix(0, n, dimm(M))
-    wz[, iam(1, 1, M)] = ed2l.dlambda2 * dlambda.deta^2
-    wz[, iam(2, 2, M)] = ed2l.dbetave2 * dbetave.deta^2
-    wz[, iam(1, 2, M)] = dbetave.deta * dlambda.deta * ed2l.dbetavelambda
-    w * wz
-  }), list( .zero = zero ))))
-}
-
-
-
-
-
-dgenray <- function(x, shape, scale = 1, log = FALSE) {
-  if (!is.logical(log.arg <- log))
-    stop("bad input for argument 'log'")
-  rm(log)
-
-  N <- max(length(x), length(shape), length(scale))
-  x <- rep(x, len = N)
-  shape <- rep(shape, len = N)
-  scale <- rep(scale, len = N)
-
-  logdensity <- rep(log(0), len = N)
-  if (any(xok <- (x > 0))) {
-    temp1 <- x[xok] / scale[xok]
-    logdensity[xok] <- log(2) + log(shape[xok]) + log(x[xok]) -
-                       2 * log(scale[xok]) - temp1^2  +
-                       (shape[xok] - 1) * log1p(-exp(-temp1^2))
-  }
-  logdensity[(shape <= 0) | (scale <= 0)] <- NaN
-  if (log.arg) {
-    logdensity
-  } else {
-     exp(logdensity)
-  }
-}
-
-
-pgenray <- function(q, shape, scale = 1) {
-  ans <- (-expm1(-(q/scale)^2))^shape
-  ans[q <= 0] <- 0
-  ans[(shape <= 0) | (scale <= 0)] <- NaN
-  ans
-}
-
-
-
-rgenray <- function(n, shape, scale = 1) {
-  ans <- qgenray(runif(n), shape = shape, scale = scale)
-  ans[(shape <= 0) | (scale <= 0)] <- NaN
-  ans
-}
-
-
-qgenray <- function(p, shape, scale = 1) {
-  ans <- scale * sqrt(-log1p(-(p^(1/shape))))
-  ans[(shape <= 0) | (scale <= 0)] = NaN
-  ans[p < 0] <- NaN
-  ans[p > 1] <- NaN
-  ans[p == 0] <- 0
-  ans[p == 1] <- Inf
-  ans
-}
-
-
-
-      
-
-
-
-
-genrayleigh.control <- function(save.weight = TRUE, ...)
-{
-    list(save.weight = save.weight)
-}
-
-
-
-
-
- genrayleigh = function (lshape = "loge", lscale = "loge",
-                         eshape = list(), escale = list(),
-                         ishape = NULL,   iscale = NULL,
-                         tol12 = 1.0e-05, 
-                         nsimEIM = 300, zero = 1) {
-
-  if (mode(lshape) != "character" && mode(lshape) != "name")
-    lshape = as.character(substitute(lshape))
-  if (mode(lscale) != "character" && mode(lscale) != "name")
-    lscale = as.character(substitute(lscale))
-
-  if (length(ishape) && !is.Numeric(ishape, posit = TRUE))
-    stop("bad input for argument 'ishape'")
-  if (length(iscale) && !is.Numeric(iscale, posit = TRUE)) 
-    stop("bad input for argument 'iscale'")
-
-  if (length(zero) && !is.Numeric(zero, integer = TRUE, posit = TRUE))
-    stop("bad input for argument 'zero'")
-    if (!is.Numeric(nsimEIM, allow = 1, integ = TRUE) || nsimEIM <= 50)
-        stop("'nsimEIM' should be an integer greater than 50")
-
-  if (!is.list(escale))
-    escale = list()
-  if (!is.list(eshape))
-    eshape = list()
-
-
-  new("vglmff",
-  blurb = c("Generalized Rayleigh distribution\n",
-            "Links:    ",
-            namesof("shape", lshape, earg = eshape), ", ",
-            namesof("scale", lscale, earg = escale), "\n"),
-  constraints = eval(substitute(expression({
-    constraints <- cm.zero.vgam(constraints, x, .zero, M)
-  }), list( .zero = zero ))),
-  initialize = eval(substitute(expression({
-    if (ncol(cbind(y)) != 1) 
-      stop("response must be a vector or a one-column matrix")
-       
-    predictors.names = c(
-      namesof("shape", .lshape , earg = .eshape , short = TRUE),
-      namesof("scale", .lscale , earg = .escale , short = TRUE))
-
-    if (!length(etastart)) {
-      genrayleigh.Loglikfun = function(scale, y, x, w, extraargs) {
-        temp1 <- y / scale
-        shape = -1 / weighted.mean(log1p(-exp(-temp1^2)), w = w)
-
-        ans <-
-        sum(w * (log(2) + log(shape) + log(y) - 2 * log(scale) -
-                 temp1^2  + (shape - 1) * log1p(-exp(-temp1^2))))
-        ans
-      }
-      scale.grid = seq(0.2 * sd(y), 5 * sd(y), len = 29)
-      scale.init = if (length( .iscale )) .iscale else
-                   getMaxMin(scale.grid, objfun = genrayleigh.Loglikfun,
-                             y = y, x = x, w = w)
-      scale.init = rep(scale.init, length = length(y))
- 
-      shape.init = if (length( .ishape )) .ishape else
-                   -1 / weighted.mean(log1p(-exp(-(y/scale.init)^2)), w = w)
-      shape.init = rep(shape.init, length = length(y))
-
-      etastart = cbind(theta2eta(shape.init, .lshape, earg = .eshape),
-                       theta2eta(scale.init, .lscale, earg = .escale))
-        }
-    }), list( .lscale = lscale, .lshape = lshape,
-              .iscale = iscale, .ishape = ishape,
-              .escale = escale, .eshape = eshape))), 
-
-  inverse = eval(substitute(function(eta, extra = NULL) {
-    shape = eta2theta(eta[, 1], .lshape , earg = .eshape )
-    Scale = eta2theta(eta[, 2], .lscale , earg = .escale )
-    qgenray(p = 0.5, shape = shape, scale = Scale)
-  }, list( .lshape = lshape, .lscale = lscale, 
-           .eshape = eshape, .escale = escale ))),
-
-  last = eval(substitute(expression({
-    misc$link =    c(shape = .lshape , scale = .lscale )
-    misc$earg = list(shape = .eshape , scale = .escale )
-    misc$expected = TRUE
-    misc$nsimEIM = .nsimEIM
-  }), list( .lshape = lshape, .lscale = lscale,
-            .eshape = eshape, .escale = escale,
-            .nsimEIM = nsimEIM ))),
-
-  loglikelihood = eval(substitute(function(mu, y, w, 
-                  residuals = FALSE, eta, extra = NULL) {
-
-    shape = eta2theta(eta[, 1], .lshape , earg = .eshape )
-    Scale = eta2theta(eta[, 2], .lscale , earg = .escale )
-
-    if (residuals) stop("loglikelihood residuals",
-                        "not implemented yet") else {
-      sum(w * dgenray(x = y, shape = shape, scale = Scale, log = TRUE))
-    }
-  }, list( .lshape = lshape , .lscale = lscale , 
-           .eshape = eshape , .escale = escale ))), 
-      
-  vfamily = c("genrayleigh"), 
-
-  deriv = eval(substitute(expression({
-    shape = eta2theta(eta[, 1], .lshape , earg = .eshape )
-    Scale = eta2theta(eta[, 2], .lscale , earg = .escale )
-    dshape.deta = dtheta.deta(shape, .lshape , earg = .eshape )
-    dscale.deta = dtheta.deta(Scale, .lscale , earg = .escale )
-    dthetas.detas = cbind(dshape.deta, dscale.deta)
-
-    temp1 <- y / Scale
-    temp2 <- exp(-temp1^2)
-    temp3 <- temp1^2 / Scale
-    AAA   <- 2 * temp1^2 / Scale  # 2 * y^2 / Scale^3
-    BBB   <- -expm1(-temp1^2)     # denominator
-    dl.dshape = 1/shape + log1p(-temp2)
-    dl.dscale = -2 / Scale + AAA * (1 - (shape - 1) * temp2 / BBB)
-
-    dl.dshape[!is.finite(dl.dshape)] = max(dl.dshape[is.finite(dl.dshape)])
-
-    answer <- w * cbind(dl.dshape, dl.dscale) * dthetas.detas
-    answer
-  }), list( .lshape = lshape , .lscale = lscale,
-            .eshape = eshape,  .escale = escale ))),
-
-  weight = eval(substitute(expression({
-
-
-    run.varcov = 0
-    ind1 = iam(NA, NA, M = M, both = TRUE, diag = TRUE)
-    for(ii in 1:( .nsimEIM )) {
-        ysim = rgenray(n = n, shape = shape, scale = Scale)
-
-        temp1 <- ysim / Scale
-        temp2 <- exp(-temp1^2)  # May be 1 if ysim is very close to 0.
-        temp3 <- temp1^2 / Scale
-        AAA   <- 2 * temp1^2 / Scale  # 2 * y^2 / Scale^3
-        BBB   <- -expm1(-temp1^2)     # denominator
-        dl.dshape = 1/shape + log1p(-temp2)
-        dl.dscale = -2 / Scale + AAA * (1 - (shape - 1) * temp2 / BBB)
-
-        dl.dshape[!is.finite(dl.dshape)] = max(dl.dshape[is.finite(dl.dshape)])
-
-        temp3 = cbind(dl.dshape, dl.dscale)
-        run.varcov = run.varcov + temp3[, ind1$row.index] *
-                                  temp3[, ind1$col.index]
-    }
-    run.varcov = run.varcov / .nsimEIM
-
-    wz = if (intercept.only)
-        matrix(colMeans(run.varcov, na.rm = FALSE),
-               n, ncol(run.varcov), byrow = TRUE) else run.varcov
-    wz = wz * dthetas.detas[, ind1$row] * dthetas.detas[, ind1$col]
-    w * wz
-  }), list( .lshape = lshape , .lscale = lscale,
-            .eshape = eshape,  .escale = escale,
-            .tol12 = tol12, .nsimEIM = nsimEIM ))))
-}
-
-
-
-
-      
-
-
-
-
-  # Ref: Mudholker pg 293
-  # Updated and working: 06/01/11
-desnorm <- function(x, location = 0, Scale = 1, epsilon = 0, log = FALSE) {
-  if (!is.logical(log.arg <- log))
-    stop("bad input for argument 'log'")
-  rm(log)
-  
-  N <- max(length(x), length(location), length(Scale), length(epsilon))
-  x <- rep(x, len = N)
-  location <- rep(location, len = N)
-  Scale <- rep(Scale, len = N)
-  epsilon <- rep(epsilon, len = N)
-  zedd <- (x - location)/Scale
-  
-  logdensity <- rep(log(0), len = N)
-  xneg <- (zedd < 0)
-  xpos <- (zedd >= 0)
-  logdensity[xneg] <- 1/2 * log(2 * pi) - zedd[xneg]^2/(2 * (1 + epsilon[xneg])^2)
-  logdensity[xpos] <- 1/2 * log(2 * pi) - zedd[xpos]^2/(2 * (1 - epsilon[xpos])^2)
-  logdensity[(epsilon < -1) | (epsilon > 1)] <- NaN  
-  
-  if (log.arg)
-    logdensity
-  else exp(logdensity)
-  
-}
-      
-
-  # Ref: Mudholker pg 293
-  # Updated and working: 06/01/11
-pesnorm <- function(q, location = 0, Scale = 1, epsilon = 0) {
-
-  N <- max(length(q), length(location), length(Scale), length(epsilon))
-  q <- rep(q, len = N)
-  location <- rep(location, len = N)
-  Scale <- rep(Scale, len = N)
-  epsilon <- rep(epsilon, len = N)
-  zedd <- (q - location)/Scale
-  
-  qneg <- (zedd < 0)
-  qpos <- (zedd >= 0)
-  ans <- rep(0, len = length(q))
-  
-  ans[qneg] <- (1 + epsilon[qneg]) * pnorm(q = zedd[qneg]/(1 + epsilon[qneg]),
-                mean = 0, sd = 1)
-  ans[qpos] <- epsilon[qpos] + (1 - epsilon[qpos]) * pnorm(q = zedd[qpos]/(1 - 
-               epsilon[qpos]),mean = 0, sd = 1)
-  
-  ans
-}
-
-
-
-
-
-
-
-
-
-
-
-dexpgeom <- function(x, scale = 1, shape, log = FALSE) {
-  if (!is.logical(log.arg <- log))
-    stop("bad input for argument 'log'")
-  rm(log)
-
-  N <- max(length(x), length(scale), length(shape))
-  x <- rep(x, len = N)
-  scale <- rep(scale, len = N)
-  shape <- rep(shape, len = N)
-
-  logdensity <- rep(log(0), len = N)
-  if (any(xok <- (x > 0))) {
-    temp1 <- (-x[xok]) * scale[xok]
-    logdensity[xok] <- log(scale[xok]) + log1p(-shape[xok]) + 
-                       temp1 - 2 * log1p(-shape[xok] * exp(temp1))
-  }
-
-  logdensity[(scale <= 0) | (shape <= 0) | (shape >= 1)] <- NaN
-  if (log.arg) {
-    logdensity
-  } else {
-     exp(logdensity)
-  }
-}
-
-
-
-pexpgeom <- function(q, scale = 1, shape) {
-  temp1 <- (-q) * scale
-  ans <- -expm1(temp1) / (1 - shape * exp(temp1))
-  ans[q <= 0] <- 0
-  ans[(scale <= 0) | (shape <= 0) | (shape >= 1)] <- NaN
-  ans
-}
-
-
-rexpgeom <- function(n, scale = 1, shape) {
-  ans <- qexpgeom(runif(n), shape = shape, scale = scale)
-  ans[(scale <= 0) | (shape <= 0) | (shape >= 1)] <- NaN
-  ans
-}
-
-
- 
-qexpgeom <- function(p, scale = 1, shape) {
-  ans <- (-1/scale) * log((p - 1) / (p * shape - 1))
-  ans[(scale <= 0) | (shape <= 0) | (shape >= 1)] <- NaN
-  ans[p < 0] <- NaN
-  ans[p > 1] <- NaN
-  ans[p == 0] <- 0
-  ans[p == 1] <- Inf
-  ans
-}
-
-
-
-
-
-expgeometric.control <- function(save.weight = TRUE, ...)
-{
-    list(save.weight = save.weight)
-}
-
-
-
- expgeometric = function (lscale = "loge", lshape = "logit",
-                          escale = list(), eshape = list(),
-                          iscale = NULL,   ishape = NULL, 
-                          zero = 1, nsimEIM = 400) {
-
-
-  if (mode(lshape) != "character" && mode(lshape) != "name")
-    lshape = as.character(substitute(lshape))
-  if (mode(lscale) != "character" && mode(lscale) != "name")
-    lscale = as.character(substitute(lscale))
-
-  if (length(ishape))
-    if (!is.Numeric(ishape, posit = TRUE) || any(ishape >= 1))
-      stop("bad input for argument 'ishape'")
-
-  if (length(iscale))
-    if (!is.Numeric(iscale, posit = TRUE))
-    stop("bad input for argument 'iscale'")
-
-  if (length(zero) && !is.Numeric(zero, integer = TRUE, posit = TRUE))
-    stop("bad input for argument 'zero'")
-
-  if (!is.list(escale))
-    escale = list()
-  if (!is.list(eshape))
-    eshape = list()
-
-  if (!is.Numeric(nsimEIM, allow = 1, integ = TRUE))
-      stop("bad input for argument 'nsimEIM'")
-  if (nsimEIM <= 50)
-      stop("'nsimEIM' should be an integer greater than 50")
-
-
-  new("vglmff",
-  blurb = c("Exponential geometric distribution\n\n",
-            "Links:    ",
-            namesof("Scale", lscale, earg = escale), ", ",
-            namesof("shape", lshape, earg = eshape), "\n",
-            "Mean:     ", "(shape - 1) * log(1 - ",
-            "shape) / (Scale * shape)"), 
-                           
-  constraints = eval(substitute(expression({
-    constraints <- cm.zero.vgam(constraints, x, .zero, M)
-  }), list( .zero = zero ))),
- 
-
-
-  initialize = eval(substitute(expression({
-    if (ncol(cbind(y)) != 1)
-      stop("response must be a vector or a one-column matrix")
-
-    predictors.names = c(
-      namesof("Scale", .lscale , earg = .escale , short = TRUE),
-      namesof("shape", .lshape , earg = .eshape , short = TRUE))
-
-    if (!length(etastart)) {
-
-      scale.init = if (is.Numeric( .iscale , posit = TRUE)) {
-                     rep( .iscale , len = n)
-                   } else {
-                      1 / sd(y)  # The papers scale parameter beta
-                   }
-
-      shape.init = if (is.Numeric( .ishape , posit = TRUE)) {
-                     rep( .ishape , len = n)
-                   } else {
-                      rep(2 - exp(scale.init * median(y)), len = n)
-                   }
-      shape.init[shape.init >= 0.95] = 0.95
-      shape.init[shape.init <= 0.05] = 0.05
-
-      etastart = cbind(theta2eta(scale.init, .lscale , earg = .escale ),
-                       theta2eta(shape.init, .lshape , earg = .eshape ))
-
-    }
-   }), list( .lscale = lscale, .lshape = lshape, 
-             .iscale = iscale, .ishape = ishape, 
-             .escale = escale, .eshape = eshape))), 
-
-  inverse = eval(substitute(function(eta, extra = NULL) {
-    Scale = eta2theta(eta[, 1], .lscale , earg = .escale )
-    shape = eta2theta(eta[, 2], .lshape , earg = .eshape )
-    
-    (shape - 1) * log1p(-shape) / (Scale * shape)
-
-  }, list( .lscale = lscale, .lshape = lshape, 
-           .escale = escale, .eshape = eshape ))),
-
-  last = eval(substitute(expression({
-    misc$link =    c(Scale = .lscale , shape = .lshape )
-    misc$earg = list(Scale = .escale , shape = .eshape )
-    misc$expected = TRUE
-    misc$nsimEIM = .nsimEIM
-  }), list( .lscale = lscale, .lshape = lshape,
-            .escale = escale, .eshape = eshape,
-            .nsimEIM = nsimEIM ))),
-
-  loglikelihood = eval(substitute(function(mu, y, w, 
-                  residuals = FALSE, eta, extra = NULL) {
-
-    Scale = eta2theta(eta[, 1], .lscale , earg = .escale )
-    shape = eta2theta(eta[, 2], .lshape , earg = .eshape )
-
-    if (residuals) stop("loglikelihood residuals",
-                        "not implemented yet") else {
-      sum(w * dexpgeom(x = y, shape = shape, scale = Scale, log = TRUE))
-    }
-  }, list( .lscale = lscale , .lshape = lshape , 
-           .escale = escale , .eshape = eshape ))), 
-      
-  vfamily = c("expgeometric"), 
-
-  deriv = eval(substitute(expression({
-    Scale = eta2theta(eta[, 1], .lscale , earg = .escale )
-    shape = eta2theta(eta[, 2], .lshape , earg = .eshape )
-
-     temp2 <- exp(-Scale * y)
-     temp3 <- shape * temp2
-     dl.dscale =  1 / Scale - y   - 2 * y * temp3 / (1 - temp3)
-     dl.dshape = -1 / (1 - shape) + 2 *     temp2 / (1 - temp3)
-
-    dscale.deta = dtheta.deta(Scale, .lscale , earg = .escale )            
-    dshape.deta = dtheta.deta(shape, .lshape , earg = .eshape )
-    dthetas.detas = cbind(dscale.deta, dshape.deta)
-
-    answer <- w * cbind(dl.dscale, dl.dshape) * dthetas.detas
-    answer
-  }), list( .lscale = lscale , .lshape = lshape,
-            .escale = escale,  .eshape = eshape ))),
-
-  weight = eval(substitute(expression({
-  
-
-
-
-
-
-
-
-
-        run.varcov = 0
-        ind1 = iam(NA, NA, M=M, both = TRUE, diag = TRUE)
-
-        if (length( .nsimEIM )) {
-            for(ii in 1:( .nsimEIM )) {
-                ysim = rexpgeom(n, scale=Scale, shape=shape)
-
-                temp2 <- exp(-Scale * ysim)
-                temp3 <- shape * temp2
-                dl.dscale = 1 / Scale - ysim - 2 * ysim *
-                            temp3 / (1 - temp3)
-                dl.dshape = -1 / (1 - shape) + 2 * temp2 / (1 - temp3)
-
-                temp6 = cbind(dl.dscale, dl.dshape)
-                run.varcov = run.varcov +
-                           temp6[,ind1$row.index] * temp6[,ind1$col.index]
-            }
-
-            run.varcov = run.varcov / .nsimEIM
-
-            wz = if (intercept.only)
-                matrix(colMeans(run.varcov),
-                       n, ncol(run.varcov), byrow = TRUE) else run.varcov
-
-            wz = wz * dthetas.detas[, ind1$row] *
-                      dthetas.detas[, ind1$col]
-        }
-
-    w * wz
-  }), list( .nsimEIM = nsimEIM ))))
-}
-
-
-
-
-
-
-
-
-
diff --git a/R/family.robust.R b/R/family.robust.R
index 2fa0e11..4576a19 100644
--- a/R/family.robust.R
+++ b/R/family.robust.R
@@ -123,14 +123,14 @@ phuber <- function(q, k = 0.862, mu = 0, sigma = 1)
  huber <- function(llocation = "identity", lscale = "loge",
                    elocation = list(), escale = list(),
                    k = 0.862,
-                   method.init = 1,
+                   imethod = 1,
                    zero = 2) {
   A1 <- (2 * dnorm(k) / k - 2 * pnorm(-k))
   eps <- A1 / (1 + A1)
 
-  if (!is.Numeric(method.init, allow = 1, integ = TRUE, posit = TRUE) ||
-      method.init > 4)
-       stop("'method.init' must be 1 or 2 or 3 or 4")
+  if (!is.Numeric(imethod, allow = 1, integ = TRUE, posit = TRUE) ||
+      imethod > 4)
+       stop("'imethod' must be 1 or 2 or 3 or 4")
 
   if (!is.Numeric(k, allow = 1, posit = TRUE))
       stop("bad input for argument 'k'")
@@ -163,11 +163,11 @@ phuber <- function(q, k = 0.862, mu = 0, sigma = 1)
           junk = lm.wfit(x = x, y = y, w = w)
           scale.y.est <- sqrt( sum(w * junk$resid^2) / junk$df.residual )
           location.init <- if ( .llocat == "loge") pmax(1/1024, y) else {
-            if ( .method.init == 3) {
+            if ( .imethod == 3) {
               rep(weighted.mean(y, w), len = n)
-            } else if ( .method.init == 2) {
+            } else if ( .imethod == 2) {
               rep(median(rep(y, w)), len = n)
-            } else if ( .method.init == 1) {
+            } else if ( .imethod == 1) {
               junk$fitted
             } else {
               y
@@ -179,7 +179,7 @@ phuber <- function(q, k = 0.862, mu = 0, sigma = 1)
       }
     }), list( .llocat = llocation, .lscale = lscale,
               .elocat = elocation, .escale = escale,
-              .method.init=method.init ))),
+              .imethod=imethod ))),
     inverse = eval(substitute(function(eta, extra = NULL) {
       eta2theta(eta[,1], .llocat, earg = .elocat)
     }, list( .llocat = llocation,
@@ -189,10 +189,10 @@ phuber <- function(q, k = 0.862, mu = 0, sigma = 1)
       misc$earg <- list("location" = .elocat, "scale" = .escale)
       misc$expected <- TRUE
       misc$k.huber <- .k
-      misc$method.init <- .method.init
+      misc$imethod <- .imethod
     }), list( .llocat = llocation, .lscale = lscale,
               .elocat = elocation, .escale = escale,
-              .k      = k,         .method.init = method.init ))),
+              .k      = k,         .imethod = imethod ))),
    loglikelihood = eval(substitute(
      function(mu, y, w, residuals = FALSE, eta, extra = NULL) {
      location <- eta2theta(eta[,1], .llocat, earg = .elocat)
@@ -230,8 +230,8 @@ phuber <- function(q, k = 0.862, mu = 0, sigma = 1)
       dlocat.deta <- dtheta.deta(mylocat, .llocat, earg = .elocat)
       dscale.deta <- dtheta.deta(myscale, .lscale, earg = .escale)
       ans <-
-      w * cbind(dl.dlocat * dlocat.deta,
-                dl.dscale * dscale.deta)
+      c(w) * cbind(dl.dlocat * dlocat.deta,
+                   dl.dscale * dscale.deta)
       ans
     }), list( .llocat = llocation, .lscale = lscale,
               .elocat = elocation, .escale = escale,
@@ -251,7 +251,7 @@ phuber <- function(q, k = 0.862, mu = 0, sigma = 1)
       wz[, iam(1,1,M)] <- ed2l.dlocat2 * dlocat.deta^2
       wz[, iam(2,2,M)] <- ed2l.dscale2 * dscale.deta^2
       ans
-      w * wz
+      c(w) * wz
     }), list( .eps = eps ))))
 }
 
diff --git a/R/family.survival.R b/R/family.survival.R
index d1005ff..af3fd7b 100644
--- a/R/family.survival.R
+++ b/R/family.survival.R
@@ -10,109 +10,141 @@
 
 
 
- dcnormal1 = function(r1=0, r2=0, link.sd="loge",
-                      earg =list(), 
-                      isd=NULL, zero=NULL)
+ dcennormal1 = function(r1 = 0, r2 = 0,
+                      lmu = "identity",
+                      lsd = "loge",
+                      emu = list(), 
+                      esd = list(), 
+                      imu = NULL, isd = NULL, zero = 2)
 {
-    if (!is.Numeric(r1, allow=1, integ=TRUE) || r1<0) stop("bad input for r1")
-    if (!is.Numeric(r2, allow=1, integ=TRUE) || r2<0) stop("bad input for r2")
-    if (mode(link.sd) != "character" && mode(link.sd) != "name")
-        link.sd = as.character(substitute(link.sd))
-    if (!is.list(earg)) earg = list()
-
-    new("vglmff",
-    blurb=c("Univariate Normal distribution with double censoring\n\n",
+  if (!is.Numeric(r1, allow = 1, integ = TRUE) || r1 < 0)
+    stop("bad input for r1")
+  if (!is.Numeric(r2, allow = 1, integ = TRUE) || r2 < 0)
+    stop("bad input for r2")
+  if (mode(lmu) != "character" && mode(lmu) != "name")
+    lmu = as.character(substitute(lmu))
+  if (mode(lsd) != "character" && mode(lsd) != "name")
+    lsd = as.character(substitute(lsd))
+  if (!is.list(emu)) emu = list()
+  if (!is.list(esd)) esd = list()
+
+  new("vglmff",
+  blurb = c("Univariate Normal distribution with double censoring\n\n",
             "Links:    ",
-            "mean; ", namesof("sd", link.sd, earg =earg, tag= TRUE),
+            namesof("mu", lmu, earg = emu, tag = TRUE), ", ",
+            namesof("sd", lsd, earg = esd, tag = TRUE),
             "\n",
             "Variance: sd^2"),
-    constraints=eval(substitute(expression({
-        constraints = cm.zero.vgam(constraints, x, .zero, M)
-    }) , list( .zero = zero))),
-    initialize=eval(substitute(expression({
-        predictors.names =
-        c("mean", namesof("sd", .link.sd, earg =.earg, tag= FALSE))
-        if (ncol(y <- cbind(y)) != 1)
-            stop("the response must be a vector or a one-column matrix")
-        if (length(w) != n || !is.Numeric(w, integ=TRUE, posit=TRUE))
-            stop("the argument 'weights' must be a vector ",
-                 "of positive integers")
-        sumw = sum(w)
-        extra$bign = sumw + .r1 + .r2 # Tot num of censored & uncensored obsns
-        if (!length(etastart)) {
-            sd.y.est = if (length(.isd)) rep(.isd, len=n) else {
-                junk = if (is.R()) lm.wfit(x=x, y=y, w=w) else 
-                                  lm.wfit(x=x, y=y, w=w, method="qr")
-                1.25 * sqrt( sum(w * junk$resid^2) / junk$df.residual )
-            }
-            etastart = cbind(mu=y,
-                             theta2eta(sd.y.est, .link.sd, earg =.earg))
+  constraints = eval(substitute(expression({
+    constraints = cm.zero.vgam(constraints, x, .zero, M)
+  }) , list( .zero = zero))),
+
+
+  initialize = eval(substitute(expression({
+    predictors.names =
+      c(namesof("mu", .lmu, earg =.emu, tag = FALSE),
+        namesof("sd", .lsd, earg =.esd, tag = FALSE))
+
+    if (ncol(y <- cbind(y)) != 1)
+        stop("the response must be a vector or a one-column matrix")
+
+    if (length(w) != n || !is.Numeric(w, integ = TRUE, posit = TRUE))
+        stop("the argument 'weights' must be a vector ",
+             "of positive integers")
+
+    sumw = sum(w)
+    extra$bign = sumw + .r1 + .r2 # Tot num of censored & uncensored obsns
+
+    if (!length(etastart)) {
+        yyyy.est = if (length( .imu )) .imu else median(y)
+        sd.y.est = if (length( .isd )) .isd else {
+            junk = lm.wfit(x = x, y = y, w = w)
+            1.25 * sqrt( sum(w * junk$resid^2) / junk$df.residual )
         }
-    }) , list( .link.sd=link.sd, .r1=r1, .r2=r2, .isd=isd,
-               .earg =earg ))),
-    inverse=function(eta, extra=NULL) eta[,1], 
-    last=eval(substitute(expression({
-        misc$link = c(mu="identity", sd= .link.sd)
-        misc$earg = list(mu=list(), sd= .earg)
-        misc$expected = TRUE
-        misc$r1 = .r1
-        misc$r2 = .r2
-    }) , list( .link.sd=link.sd, .r1=r1, .r2=r2,
-               .earg =earg ))),
-    loglikelihood=eval(substitute(
-        function(mu,y,w,residuals= FALSE,eta, extra=NULL) {
-        sd = eta2theta(eta[,2], .link.sd, earg =.earg)
-        if (residuals) stop("loglikelihood residuals not ",
-                            "implemented yet") else
-        sum(w * (-log(sd) - 0.5 * ((y - mu)/sd)^2)) +
-        (if(.r1==0) 0 else {z1=min((y-mu)/sd); Fz1=pnorm(z1); .r1*log(Fz1)}) +
-        (if(.r2==0) 0 else {z2=max((y-mu)/sd); Fz2=pnorm(z2); .r2*log1p(-Fz2)})
-    } , list( .link.sd=link.sd, .r1=r1, .r2=r2,
-               .earg =earg ))),
-    vfamily=c("dcnormal1"),
-    deriv=eval(substitute(expression({
-        sd = eta2theta(eta[,2], .link.sd, earg =.earg)
-        q1 = .r1 / extra$bign
-        q2 = .r2 / extra$bign
-        pee = 1 - q1 - q2  # 1 if r1==r2==0
-        z1 = if (.r1 == 0) -100 else min((y - mu) / sd) # 100==Inf
-        z2 = if (.r2 == 0) +100 else max((y - mu) / sd) # 100==Inf
-        fz1 = if (.r1 == 0) 0 else dnorm(z1)
-        fz2 = if (.r2 == 0) 0 else dnorm(z2)
-        Fz1 = if (.r1 == 0) 0.02 else pnorm(z1)  # 0/0 undefined
-        Fz2 = if (.r2 == 0) 0.99 else pnorm(z2)
-        dl.dmu = (y-mu) / sd^2 +
-                 ((- .r1 * fz1/Fz1 + .r2 * fz2/(1-Fz2)) / sd) / (n*w)
-        dl.dsd = -1/sd + (y-mu)^2 / sd^3 +
-                 ((- .r1 * z1*fz1/Fz1 + .r2 * z2*fz2/(1-Fz2)) / sd) / (n*w)
-        dmu.deta = dtheta.deta(mu, "identity") 
-        dsd.deta = dtheta.deta(sd, .link.sd, earg =.earg)
-        cbind(w * dl.dmu * dmu.deta, w * dl.dsd * dsd.deta)
-    }) , list( .link.sd=link.sd, .r1=r1, .r2=r2,
-               .earg =earg ))),
-    weight=expression({
-        wz = matrix(as.numeric(NA), n, dimm(M))
-        Q1 = ifelse(q1==0, 1, q1)  # Saves division by 0 below; not elegant
-        Q2 = ifelse(q2==0, 1, q2)  # Saves division by 0 below; not elegant
-        ed2l.dmu2 = 1 / (sd^2) + 
-                    ((fz1*(z1+fz1/Q1) - fz2*(z2-fz2/Q2)) / sd^2) / (pee*w)
-        ed2l.dmusd = ((fz1-fz2 + z1*fz1*(z1+fz1/Q1) -
-                      z2*fz2*(z2-fz2/Q2)) / sd^2) / (pee*w)
-        ed2l.dsd2 = 2 / (sd^2) + 
-                    ((z1*fz1-z2*fz2 + z1^2 *fz1 *(z1+fz1/Q1) -
-                    z2^2 *fz2*(z2-fz2/Q2)) / sd^2) / (pee*w)
-        wz[,iam(1,1,M)] = w * ed2l.dmu2 * dmu.deta^2
-        wz[,iam(2,2,M)] = w * ed2l.dsd2 * dsd.deta^2
-        wz[,iam(1,2,M)] = w * ed2l.dmusd * dsd.deta * dmu.deta
-        wz
-    }))
+        yyyy.est = rep( yyyy.est , len = n)
+        sd.y.est = rep( sd.y.est , len = n)
+        etastart = cbind(mu = theta2eta(yyyy.est, .lmu, earg =.emu),
+                         sd = theta2eta(sd.y.est, .lsd, earg =.esd))
+    }
+  }) , list( .lmu = lmu, .lsd = lsd,
+             .emu = emu, .esd = esd,
+             .imu = imu, .isd = isd,
+             .r1 = r1, .r2 = r2 ))),
+  inverse = function(eta, extra = NULL) eta[,1], 
+  last = eval(substitute(expression({
+    misc$link =    c(mu = .lmu , sd = .lsd )
+    misc$earg = list(mu = .emu , sd = .esd )
+    misc$expected = TRUE
+    misc$r1 = .r1
+    misc$r2 = .r2
+  }) , list( .lmu = lmu, .lsd = lsd,
+             .emu = emu, .esd = esd,
+             .r1 = r1, .r2 = r2 ))),
+  loglikelihood=eval(substitute(
+    function(mu, y, w, residuals = FALSE, eta, extra = NULL) {
+    sd = eta2theta(eta[, 2], .lsd, earg = .esd )
+    if (residuals) stop("loglikelihood residuals not ",
+                        "implemented yet") else
+      sum(w * dnorm(y, m = mu, sd = sd, log = TRUE)) +
+      (if ( .r1 == 0) 0 else {
+         z1 = min((y - mu) / sd); Fz1 = pnorm(z1); .r1 * log(Fz1)}) +
+      (if ( .r2 == 0) 0 else {
+         z2 = max((y - mu) / sd); Fz2 = pnorm(z2); .r2 * log1p(-Fz2)})
+  } , list( .lmu = lmu, .lsd = lsd,
+            .emu = emu, .esd = esd,
+            .r1 = r1, .r2 = r2 ))),
+  vfamily = c("dcennormal1"),
+  deriv = eval(substitute(expression({
+    sd = eta2theta(eta[, 2], .lsd, earg =.esd)
+
+    q1 = .r1 / extra$bign
+    q2 = .r2 / extra$bign
+    pee = 1 - q1 - q2  # 1 if r1==r2==0
+    z1 = if ( .r1 == 0) - 100 else min((y - mu) / sd) # 100==Inf
+    z2 = if ( .r2 == 0) + 100 else max((y - mu) / sd) # 100==Inf
+    fz1 = if ( .r1 == 0) 0 else dnorm(z1)
+    fz2 = if ( .r2 == 0) 0 else dnorm(z2)
+    Fz1 = if ( .r1 == 0) 0.02 else pnorm(z1)  # 0/0 undefined
+    Fz2 = if ( .r2 == 0) 0.99 else pnorm(z2)
+
+    dl.dmu = (y - mu) / sd^2 +
+             ((- .r1 * fz1/Fz1 + .r2 * fz2/(1-Fz2)) / sd) / (n*w)
+    dl.dsd = -1/sd + (y-mu)^2 / sd^3 +
+             ((- .r1 * z1*fz1/Fz1 + .r2 * z2*fz2/(1-Fz2)) / sd) / (n*w)
+
+    dmu.deta = dtheta.deta(mu, .lmu, earg =.emu)
+    dsd.deta = dtheta.deta(sd, .lsd, earg =.esd)
+
+    c(w) * cbind(dl.dmu * dmu.deta, dl.dsd * dsd.deta)
+  }) , list( .lmu = lmu, .lsd = lsd,
+             .emu = emu, .esd = esd,
+             .r1 = r1, .r2 = r2 ))),
+  weight=expression({
+    wz = matrix(as.numeric(NA), n, dimm(M))
+
+    Q1 = ifelse(q1 == 0, 1, q1)  # Saves division by 0 below; not elegant
+    Q2 = ifelse(q2 == 0, 1, q2)  # Saves division by 0 below; not elegant
+
+    ed2l.dmu2 = 1 / (sd^2) + 
+                ((fz1*(z1+fz1/Q1) - fz2*(z2-fz2/Q2)) / sd^2) / (pee*w)
+    ed2l.dmusd = ((fz1-fz2 + z1*fz1*(z1+fz1/Q1) -
+                  z2*fz2*(z2-fz2/Q2)) / sd^2) / (pee*w)
+    ed2l.dsd2 = 2 / (sd^2) + 
+                ((z1*fz1-z2*fz2 + z1^2 *fz1 *(z1+fz1/Q1) -
+                z2^2 *fz2*(z2-fz2/Q2)) / sd^2) / (pee*w)
+
+    wz[,iam(1,1,M)] = w * ed2l.dmu2 * dmu.deta^2
+    wz[,iam(2,2,M)] = w * ed2l.dsd2 * dsd.deta^2
+    wz[,iam(1,2,M)] = w * ed2l.dmusd * dsd.deta * dmu.deta
+    wz
+  }))
 }
 
 
 
 
 
-dbisa = function(x, shape, scale=1, log = FALSE) {
+dbisa = function(x, shape, scale = 1, log = FALSE) {
     if (!is.logical(log.arg <- log))
         stop("bad input for argument 'log'")
     rm(log)
@@ -122,7 +154,7 @@ dbisa = function(x, shape, scale=1, log = FALSE) {
     logdensity = rep(log(0), len=L)
     xok = (x > 0)
     xifun = function(x) {temp <- sqrt(x); temp - 1/temp}
-    logdensity[xok] = dnorm(xifun(x[xok]/scale[xok]) / shape[xok], log=TRUE) +
+    logdensity[xok] = dnorm(xifun(x[xok]/scale[xok]) / shape[xok], log = TRUE) +
                       log1p(scale[xok]/x[xok]) - log(2) - log(shape[xok]) -
                       0.5 * log(x[xok]) - 0.5 * log(scale[xok])
     logdensity[scale <= 0] = NaN
@@ -132,8 +164,8 @@ dbisa = function(x, shape, scale=1, log = FALSE) {
 
 pbisa = function(q, shape, scale=1) {
     if (!is.Numeric(q)) stop("bad input for argument 'q'")
-    if (!is.Numeric(shape, pos=TRUE)) stop("bad input for argument 'shape'")
-    if (!is.Numeric(scale, pos=TRUE)) stop("bad input for argument 'scale'")
+    if (!is.Numeric(shape, pos = TRUE)) stop("bad input for argument 'shape'")
+    if (!is.Numeric(scale, pos = TRUE)) stop("bad input for argument 'scale'")
     ans = pnorm(((temp <- sqrt(q/scale)) - 1/temp) / shape)
     ans[scale < 0 | shape < 0] = NA
     ans[q <= 0] = 0
@@ -141,10 +173,10 @@ pbisa = function(q, shape, scale=1) {
 }
 
 qbisa = function(p, shape, scale=1) {
-    if (!is.Numeric(p, posit=TRUE) || any(p >= 1))
+    if (!is.Numeric(p, posit = TRUE) || any(p >= 1))
         stop("argument 'p' must have values inside the interval (0,1)")
-    if (!is.Numeric(shape, pos=TRUE)) stop("bad input for argument 'shape'")
-    if (!is.Numeric(scale, pos=TRUE)) stop("bad input for argument 'scale'")
+    if (!is.Numeric(shape, pos = TRUE)) stop("bad input for argument 'shape'")
+    if (!is.Numeric(scale, pos = TRUE)) stop("bad input for argument 'scale'")
     A = qnorm(p)
     temp1 = A * shape * sqrt(4 + A^2 * shape^2)
     ans1 = (2 + A^2 * shape^2 + temp1) * scale / 2
@@ -154,7 +186,7 @@ qbisa = function(p, shape, scale=1) {
 
 rbisa = function(n, shape, scale=1) {
     use.n = if ((length.n <- length(n)) > 1) length.n else
-            if (!is.Numeric(n, integ=TRUE, allow=1, posit=TRUE))
+            if (!is.Numeric(n, integ = TRUE, allow = 1, posit = TRUE))
                 stop("bad input for argument 'n'") else n
 
     A = rnorm(use.n)
@@ -179,28 +211,28 @@ rbisa = function(n, shape, scale=1) {
 
  bisa = function(lshape = "loge", lscale = "loge",
                  eshape = list(), escale = list(),
-                 ishape = NULL,   iscale=1,
-                 method.init=1, zero=NULL)
+                 ishape = NULL,   iscale = 1,
+                 imethod = 1, zero = NULL)
 {
     if (mode(lshape) != "character" && mode(lshape) != "name")
         lshape = as.character(substitute(lshape))
     if (mode(lscale) != "character" && mode(lscale) != "name")
         lscale = as.character(substitute(lscale))
-    if (length(ishape) && !is.Numeric(ishape, posit=TRUE))
+    if (length(ishape) && !is.Numeric(ishape, posit = TRUE))
         stop("bad input for argument 'ishape'")
-    if (!is.Numeric(iscale, posit=TRUE))
+    if (!is.Numeric(iscale, posit = TRUE))
         stop("bad input for argument 'iscale'")
-    if (!is.Numeric(method.init, allow=1, integ=TRUE, posit=TRUE) ||
-       method.init > 3)
-        stop("method.init must be 1 or 2 or 3")
+    if (!is.Numeric(imethod, allow = 1, integ = TRUE, posit = TRUE) ||
+       imethod > 3)
+        stop("imethod must be 1 or 2 or 3")
     if (!is.list(eshape)) eshape = list()
     if (!is.list(escale)) escale = list()
 
     new("vglmff",
     blurb=c("Birnbaum-Saunders distribution\n\n",
             "Links:    ",
-            namesof("shape", lshape, earg = eshape, tag= TRUE), "; ",
-            namesof("scale", lscale, earg = escale, tag= TRUE)),
+            namesof("shape", lshape, earg = eshape, tag = TRUE), "; ",
+            namesof("scale", lscale, earg = escale, tag = TRUE)),
     constraints=eval(substitute(expression({
         constraints = cm.zero.vgam(constraints, x, .zero, M)
     }) , list( .zero = zero))),
@@ -209,15 +241,15 @@ rbisa = function(n, shape, scale=1) {
             stop("the response must be a vector or a one-column matrix")
         predictors.names =
           c(namesof("shape", .lshape, earg = .eshape, tag = FALSE),
-            namesof("scale", .lscale, tag=FALSE))
+            namesof("scale", .lscale, tag = FALSE))
         if (!length(etastart)) {
             scale.init = rep( .iscale, len=n)
             shape.init = if (is.Numeric( .ishape)) rep( .ishape, len=n) else {
-                if ( .method.init==1) {
+                if ( .imethod==1) {
                     ybar = rep(weighted.mean(y, w), len=n)
                     ybarr = rep(1 / weighted.mean(1/y, w), len=n) # Reqrs y > 0
                     sqrt(ybar / scale.init + scale.init / ybarr - 2)
-                } else if ( .method.init==2) {
+                } else if ( .imethod==2) {
                     sqrt(2*( pmax(y, scale.init+0.1) / scale.init - 1))
                 } else {
                     ybar = rep(weighted.mean(y, w), len=n)
@@ -230,8 +262,8 @@ rbisa = function(n, shape, scale=1) {
     }) , list( .lshape = lshape, .lscale = lscale,
                .ishape=ishape, .iscale=iscale,
                .eshape = eshape, .escale = escale,
-               .method.init=method.init ))),
-    inverse=eval(substitute(function(eta, extra=NULL) {
+               .imethod=imethod ))),
+    inverse=eval(substitute(function(eta, extra = NULL) {
         sh = eta2theta(eta[,1], .lshape, earg = .eshape)
         sc = eta2theta(eta[,2], .lscale, earg = .escale)
         sc * (1 + sh^2 / 2)
@@ -244,7 +276,7 @@ rbisa = function(n, shape, scale=1) {
     }) , list( .lshape = lshape, .lscale = lscale,
                .eshape = eshape, .escale = escale ))),
     loglikelihood=eval(substitute(
-        function(mu,y,w,residuals= FALSE,eta, extra=NULL) {
+        function(mu,y,w,residuals= FALSE,eta, extra = NULL) {
         sh = eta2theta(eta[,1], .lshape, earg = .eshape)
         sc = eta2theta(eta[,2], .lscale, earg = .escale)
         if (residuals) stop("loglikelihood residuals not ",
@@ -262,7 +294,8 @@ rbisa = function(n, shape, scale=1) {
                  (sqrt(y/sc) - sqrt(sc/y)) / (2 * sh^2 * sc^1.5)
         dsh.deta = dtheta.deta(sh, .lshape, earg = .eshape)
         dsc.deta = dtheta.deta(sc, .lscale, earg = .escale)
-        w * cbind(dl.dsh * dsh.deta, dl.dsc * dsc.deta)
+        c(w) * cbind(dl.dsh * dsh.deta,
+                     dl.dsc * dsc.deta)
     }) , list( .lshape = lshape, .lscale = lscale,
                .eshape = eshape, .escale = escale ))),
     weight=eval(substitute(expression({
@@ -273,7 +306,7 @@ rbisa = function(n, shape, scale=1) {
                                  pnorm(2/alpha, lower.tail = FALSE)
         wz[,iam(2,2,M)] = dsc.deta^2 * (sh * hfunction(sh)  / sqrt(2*pi) +
                           1) / (sh*sc)^2
-        w * wz
+        c(w) * wz
     }), list( .zero = zero ))))
 }
 
diff --git a/R/family.univariate.R b/R/family.univariate.R
index 19c2ea3..541b125 100644
--- a/R/family.univariate.R
+++ b/R/family.univariate.R
@@ -27,7 +27,7 @@ getMaxMin = function(vov, objfun, y, x, w, extraargs = NULL, maximize = TRUE,
     if (!is.vector(vov)) stop("'vov' must be a vector")
     objvals = vov
     for(ii in 1:length(vov))
-        objvals[ii] = objfun(vov[ii], y=y, x=x, w=w, extraargs=extraargs)
+        objvals[ii] = objfun(vov[ii], y = y, x = x, w = w, extraargs=extraargs)
     try.this = if (abs.arg) {
                    if (maximize) vov[abs(objvals) == max(abs(objvals))] else
                    vov[abs(objvals) == min(abs(objvals))]
@@ -84,7 +84,7 @@ getMaxMin = function(vov, objfun, y, x, w, extraargs = NULL, maximize = TRUE,
                 mean((y-thetaval)*(thetaval^2-1)/(1-2*thetaval*y+thetaval^2))
                 theta.grid = seq(-0.9, 0.9, by=0.05)
                 try.this = getMaxMin(theta.grid, objfun=mccullagh89.aux,
-                                     y=y,  x=x, w=w, maximize = FALSE,
+                                     y = y,  x = x, w = w, maximize = FALSE,
                                      abs.arg = TRUE)
                 try.this = rep(try.this, len = n)
                 try.this
@@ -127,7 +127,8 @@ getMaxMin = function(vov, objfun, y, x, w, extraargs = NULL, maximize = TRUE,
         dl.dTheta = 2 * nu * (y-Theta) / (1 -2*Theta*y + Theta^2)
         dl.dnu = log1p(-y^2) - log1p(-2*Theta*y + Theta^2) -
                  digamma(nu+0.5) + digamma(nu+1)
-        w * cbind(dl.dTheta * dTheta.deta, dl.dnu * dnu.deta)
+        c(w) * cbind(dl.dTheta * dTheta.deta,
+                     dl.dnu * dnu.deta)
     }), list( .ltheta=ltheta, .lnu=lnu, .etheta = etheta, .enu=enu ))),
     weight = eval(substitute(expression({
         d2l.dTheta2 = (2 * nu^2 / (1+nu)) / (1-Theta^2)
@@ -135,7 +136,7 @@ getMaxMin = function(vov, objfun, y, x, w, extraargs = NULL, maximize = TRUE,
         wz = matrix(as.numeric(NA), n, M)  #diagonal matrix
         wz[,iam(1,1,M)] = d2l.dTheta2 * dTheta.deta^2
         wz[,iam(2,2,M)] = d2l.dnu2 * dnu.deta^2
-        w * wz
+        c(w) * wz
     }), list( .ltheta=ltheta, .lnu=lnu ))))
 }
 
@@ -162,7 +163,7 @@ hzeta.control <- function(save.weight = TRUE, ...)
     new("vglmff",
     blurb = c(
     "Haight's Zeta distribution f(y) = (2y-1)^(-alpha) - (2y+1)^(-alpha),\n",
-            "    alpha>0, y=1,2,....\n\n",
+            "    alpha>0, y = 1,2,....\n\n",
             "Link:    ",
             namesof("alpha", link, earg = earg), "\n\n",
             "Mean:     (1-2^(-alpha)) * zeta(alpha) if alpha>1",
@@ -200,7 +201,7 @@ hzeta.control <- function(save.weight = TRUE, ...)
         alpha = eta2theta(eta, .link, earg = .earg )
         if (residuals) stop("loglikelihood residuals not ",
                             "implemented yet") else {
-            sum(w * dhzeta(x=y, alpha=alpha, log = TRUE))
+            sum(w * dhzeta(x = y, alpha=alpha, log = TRUE))
         }
     }, list( .link = link, .earg = earg ))),
     vfamily = c("hzeta"),
@@ -211,7 +212,7 @@ hzeta.control <- function(save.weight = TRUE, ...)
                     "alpha", hessian = FALSE)
         eval.d3 = eval(d3)
         dl.dalpha =  attr(eval.d3, "gradient")
-        w * dl.dalpha * dalpha.deta
+        c(w) * dl.dalpha * dalpha.deta
     }), list( .link = link, .earg = earg ))),
     weight = eval(substitute(expression({
         sd3 = deriv3(~ log((2*ysim-1)^(-alpha) - (2*ysim+1)^(-alpha)),
@@ -230,7 +231,7 @@ hzeta.control <- function(save.weight = TRUE, ...)
                    n, dimm(M), byrow = TRUE) else cbind(run.var)
 
         wz = wz * dalpha.deta^2
-        w * wz
+        c(w) * wz
     }), list( .nsimEIM = nsimEIM ))))
 }
 
@@ -337,7 +338,7 @@ rhzeta = function(n, alpha)
     eval(process.categorical.data.vgam)
 
     y <- as.matrix(y)
-    ycount <- as.matrix(y * w)
+    ycount <- as.matrix(y * c(w))
     M <- ncol(y)
     if (max(abs(ycount - round(ycount ))) > 1.0e-6)
       warning("there appears to be non-integer responses")
@@ -380,7 +381,7 @@ rhzeta = function(n, alpha)
       probs <- probs / as.vector(probs %*% rep(1, M))
       phi <- eta2theta(eta[,M], .lphi, earg = .ephi )
       n <- length(phi)
-      ycount <- as.matrix(y * w)
+      ycount <- as.matrix(y * c(w))
       if (residuals) stop("loglikelihood residuals not ",
                           "implemented yet") else {
         ans <- rep(0.0, len = n)
@@ -429,7 +430,7 @@ rhzeta = function(n, alpha)
     dl.dprobs <- matrix(0.0, n, M-1)
     dl.dphi <- rep(0.0, len = n)
     omega <- extra$n2
-    ycount <- as.matrix(y * w)
+    ycount <- as.matrix(y * c(w))
     for(jay in 1:M) {
         maxyj <- max(ycount[,jay])
         loopOveri <- n < maxyj
@@ -454,8 +455,9 @@ rhzeta = function(n, alpha)
           for(rrr in 1:maxyj) {
             index <- (rrr <= ycount[,jay]) & (ycount[,jay] > 0)
             PHI <- phi[index]
-            dl.dphi[index] <- dl.dphi[index] + (rrr-1-probs[index,jay]) /
-                ((1-PHI)*probs[index,jay] + (rrr-1)*PHI)
+            dl.dphi[index] <- dl.dphi[index] +
+              (rrr-1-probs[index,jay]) / ((1-PHI)*probs[index,jay] +
+              (rrr-1)*PHI)
             tmp9 <- (1-PHI) / ((1-PHI)*probs[index,jay] + (rrr-1)*PHI)
             if (jay < M) {
                 dl.dprobs[index,jay] <- dl.dprobs[index,jay] + tmp9
@@ -481,7 +483,8 @@ rhzeta = function(n, alpha)
     }
     dprobs.deta <- probs[,-M] * (1 - probs[,-M])    # n x (M-1)
     dphi.deta <- dtheta.deta(phi, .lphi, earg = .ephi )
-    ans <- cbind(dl.dprobs * dprobs.deta, dl.dphi * dphi.deta)
+    ans <- cbind(dl.dprobs * dprobs.deta,
+                 dl.dphi   * dphi.deta)
     ans
   }), list( .ephi = ephi, .lphi = lphi ))),
     weight = eval(substitute(expression({
@@ -637,7 +640,7 @@ dirmul.old = function(link = "loge", earg = list(), init.alpha = 0.01,
         dl.dsh = digamma(sumshape) - digamma(extra$n2 + sumshape) +
                  digamma(y + shape) - digamma(shape)
         dsh.deta = dtheta.deta(shape, .link, earg = .earg)
-        w * dl.dsh * dsh.deta
+        c(w) * dl.dsh * dsh.deta
     }), list( .link = link, .earg = earg ))),
     weight = eval(substitute(expression({
         index = iam(NA, NA, M, both = TRUE, diag = TRUE)
@@ -652,7 +655,7 @@ dirmul.old = function(link = "loge", earg = list(), init.alpha = 0.01,
             for(ii in 1:ncol(wz))
                 wz[,ii] = sum(wz[,ii]) / sumw
             pooled.weight = TRUE
-            wz = w * wz   # Put back the weights
+            wz = c(w) * wz   # Put back the weights
         } else
             pooled.weight = FALSE
 
@@ -663,6 +666,8 @@ dirmul.old = function(link = "loge", earg = list(), init.alpha = 0.01,
 
 
 
+
+
 rdiric = function(n, shape, dimension = NULL) {
     if (!is.numeric(dimension))
         dimension = length(shape)
@@ -677,11 +682,15 @@ rdiric = function(n, shape, dimension = NULL) {
 }
 
 
- dirichlet = function(link = "loge", earg = list(), parallel = FALSE, zero = NULL)
+
+
+ dirichlet = function(link = "loge", earg = list(),
+                      parallel = FALSE, zero = NULL)
 {
     if (mode(link) != "character" && mode(link) != "name")
         link = as.character(substitute(link))
-    if (length(zero) && !is.Numeric(zero, integer = TRUE, posit = TRUE))
+    if (length(zero) &&
+        !is.Numeric(zero, integer = TRUE, posit = TRUE))
         stop("bad input for argument 'zero'")
     if (!is.list(earg)) earg = list()
 
@@ -689,7 +698,7 @@ rdiric = function(n, shape, dimension = NULL) {
     blurb = c("Dirichlet distribution\n\n",
               "Links:     ",
               namesof("shapej", link, earg = earg), "\n\n",
-              "Mean:     shape_j/(1 + sum(shape_j)), j=1,..,ncol(y)"),
+              "Mean:     shape_j/(1 + sum(shape_j)), j = 1,..,ncol(y)"),
     constraints = eval(substitute(expression({
         constraints = cm.vgam(matrix(1, M, 1), x, .parallel, constraints, int= TRUE)
         constraints = cm.zero.vgam(constraints, x, .zero, M)
@@ -728,8 +737,11 @@ rdiric = function(n, shape, dimension = NULL) {
         M = if (is.matrix(eta)) ncol(eta) else 1
         sumshape = as.vector(shape %*% rep(1, len = M))
         if (residuals) stop("loglikelihood residuals not ",
-                            "implemented yet") else
-        sum(w * (lgamma(sumshape) - lgamma(shape) + (shape-1)*log(y )))
+                            "implemented yet") else {
+          sum(c(w) * lgamma(sumshape)) -
+          sum(c(w) * lgamma(shape)) +
+          sum(c(w) * (shape-1) * log(y))
+        }
     }, list( .link = link, .earg = earg ))),
     vfamily = c("dirichlet"),
     deriv = eval(substitute(expression({
@@ -737,19 +749,20 @@ rdiric = function(n, shape, dimension = NULL) {
         sumshape = as.vector(shape %*% rep(1, len = M))
         dl.dsh = digamma(sumshape) - digamma(shape) + log(y)
         dsh.deta = dtheta.deta(shape, .link, earg = .earg )
-        w * dl.dsh * dsh.deta
+        c(w) * dl.dsh * dsh.deta
     }), list( .link = link, .earg = earg ))),
     weight = expression({
         index = iam(NA, NA, M, both = TRUE, diag = TRUE)
         wz = matrix(trigamma(sumshape), nrow=n, ncol=dimm(M))
         wz[,1:M] = wz[,1:M] - trigamma(shape)
-        wz = -w * wz * dsh.deta[, index$row] * dsh.deta[, index$col]
+        wz = -c(w) * wz * dsh.deta[, index$row] * dsh.deta[, index$col]
         wz
     }))
 }
 
 
 
+
  zeta = function(x, deriv = 0) {
 
 
@@ -828,7 +841,7 @@ rdiric = function(n, shape, dimension = NULL) {
     ans = rep(as.numeric(NA), length(x))
     nn = sum(ok)  # Effective length (excludes x < 0 and x = 1 values)
     if (nn)
-        ans[ok] = dotC(name = "vzetawr", as.double(x[ok]), ans=double(nn),
+        ans[ok] = dotC(name = "vzetawr", as.double(x[ok]), ans = double(nn),
                   as.integer(deriv.arg), as.integer(nn))$ans
 
 
@@ -878,7 +891,7 @@ dzeta = function(x, p, log = FALSE)
 
     new("vglmff",
     blurb = c("Zeta distribution ",
-              "f(y) = 1/(y^(p+1) zeta(p+1)), p>0, y=1,2,..\n\n",
+              "f(y) = 1/(y^(p+1) zeta(p+1)), p>0, y = 1,2,..\n\n",
               "Link:    ",
               namesof("p", link, earg = earg), "\n\n",
               "Mean:     zeta(p) / zeta(p+1), provided p>1\n",
@@ -896,11 +909,11 @@ dzeta = function(x, p, log = FALSE)
 
         if (!length(etastart)) {
             zetaff.Loglikfun = function(pp, y, x, w, extraargs) {
-                sum(w * dzeta(x=y, p=pp, log = TRUE))
+                sum(w * dzeta(x = y, p=pp, log = TRUE))
             }
             p.grid = seq(0.1, 3.0, len=19)
             pp.init = if (length( .init.p )) .init.p else
-                      getMaxMin(p.grid, objfun=zetaff.Loglikfun, y=y,  x=x, w=w)
+                      getMaxMin(p.grid, objfun=zetaff.Loglikfun, y = y,  x = x, w = w)
             pp.init = rep(pp.init, length=length(y))
             if ( .link == "loglog") pp.init[pp.init <= 1] = 1.2
             etastart = theta2eta(pp.init, .link, earg = .earg)
@@ -921,7 +934,7 @@ dzeta = function(x, p, log = FALSE)
         pp = eta2theta(eta, .link, earg = .earg)
         if (residuals) stop("loglikelihood residuals not ",
                             "implemented yet") else {
-            sum(w * dzeta(x=y, p=pp, log = TRUE))
+            sum(w * dzeta(x = y, p=pp, log = TRUE))
         }
     }, list( .link = link, .earg = earg ))),
     vfamily = c("zetaff"),
@@ -931,18 +944,18 @@ dzeta = function(x, p, log = FALSE)
         fred2 = zeta(pp+1, deriv=1)
         dl.dpp = -log(y) - fred2 / fred1
         dpp.deta = dtheta.deta(pp, .link, earg = .earg)
-        w * dl.dpp * dpp.deta
+        c(w) * dl.dpp * dpp.deta
     }), list( .link = link, .earg = earg ))),
     weight = expression({
         ed2l.dpp2 = zeta(pp+1, deriv=2) / fred1 - (fred2/fred1)^2
-        wz = w * dpp.deta^2 * ed2l.dpp2
+        wz = c(w) * dpp.deta^2 * ed2l.dpp2
         wz
     }))
 }
 
 
 
-gharmonic = function(n, s=1, lognexponent=0) {
+gharmonic = function(n, s = 1, lognexponent=0) {
 
     if (!is.Numeric(n, integ = TRUE, posit = TRUE))
         stop("bad input for argument 'n'")
@@ -1031,7 +1044,7 @@ pzipf = function(q, N, s) {
 
     new("vglmff",
     blurb = c("Zipf distribution f(y;s) = y^(-s) / sum((1:N)^(-s)),",
-              " s>0, y=1,2,...,N", ifelse(enteredN, paste(" = ",N,sep = ""), ""),
+              " s>0, y = 1,2,...,N", ifelse(enteredN, paste(" = ",N,sep = ""), ""),
               "\n\n",
               "Link:    ",
               namesof("s", link, earg = earg),
@@ -1054,11 +1067,11 @@ pzipf = function(q, N, s) {
         extra$N = NN
         if (!length(etastart)) {
             llfun = function(ss, y, N, w) {
-                sum(w * dzipf(x=y, N=extra$N, s=ss, log = TRUE))
+                sum(w * dzipf(x = y, N=extra$N, s=ss, log = TRUE))
             }
             ss.init = if (length( .init.s )) .init.s else
                 getInitVals(gvals=seq(0.1, 3.0, len=19), llfun=llfun,
-                            y=y, N=extra$N, w=w)
+                            y = y, N=extra$N, w = w)
             ss.init = rep(ss.init, length=length(y))
             if ( .link == "loglog") ss.init[ss.init <= 1] = 1.2
             etastart = theta2eta(ss.init, .link, earg = .earg)
@@ -1079,7 +1092,7 @@ pzipf = function(q, N, s) {
         ss = eta2theta(eta, .link, earg = .earg)
         if (residuals) stop("loglikelihood residuals not ",
                             "implemented yet") else {
-            sum(w * dzipf(x=y, N=extra$N, s=ss, log = TRUE))
+            sum(w * dzipf(x = y, N=extra$N, s=ss, log = TRUE))
         }
     }, list( .link = link, .earg = earg ))),
     vfamily = c("zipf"),
@@ -1090,11 +1103,11 @@ pzipf = function(q, N, s) {
         dl.dss = -log(y) + fred2 / fred1
         dss.deta = dtheta.deta(ss, .link, earg = .earg)
         d2ss.deta2 = d2theta.deta2(ss, .link, earg = .earg)
-        w * dl.dss * dss.deta
+        c(w) * dl.dss * dss.deta
     }), list( .link = link, .earg = earg ))),
     weight = expression({
         d2l.dss = gharmonic(extra$N, ss, lognexp=2) / fred1 - (fred2/fred1)^2
-        wz = w * (dss.deta^2 * d2l.dss - d2ss.deta2 * dl.dss)
+        wz = c(w) * (dss.deta^2 * d2l.dss - d2ss.deta2 * dl.dss)
         wz
     }))
 }
@@ -1110,15 +1123,15 @@ cauchy.control <- function(save.weight = TRUE, ...)
                   elocation = list(), escale = list(),
                   ilocation = NULL, iscale = NULL,
                   iprobs = seq(0.2, 0.8, by=0.2),
-                  method.init = 1, nsimEIM = NULL, zero = 2)
+                  imethod = 1, nsimEIM = NULL, zero = 2)
 {
     if (mode(llocation) != "character" && mode(llocation) != "name")
         llocation = as.character(substitute(llocation))
     if (mode(lscale) != "character" && mode(lscale) != "name")
         lscale = as.character(substitute(lscale))
-    if (!is.Numeric(method.init, allow = 1, integ = TRUE, posit = TRUE) ||
-       method.init > 3)
-        stop("'method.init' must be 1 or 2 or 3")
+    if (!is.Numeric(imethod, allow = 1, integ = TRUE, posit = TRUE) ||
+       imethod > 3)
+        stop("argument 'imethod' must be 1 or 2 or 3")
     if (!is.list(elocation)) elocation = list()
     if (!is.list(escale)) escale = list()
     if (length(zero) && !is.Numeric(zero, integer = TRUE, posit = TRUE))
@@ -1135,7 +1148,7 @@ cauchy.control <- function(save.weight = TRUE, ...)
     blurb = c("Two parameter Cauchy distribution (location & scale unknown)\n\n",
               "Link:    ",
               namesof("location", llocation, earg = elocation), "\n",
-              namesof("scale", lscale, earg = escale), "\n\n",
+              namesof("scale",    lscale,    earg = escale), "\n\n",
               "Mean:     NA\n",
               "Variance: NA"),
     constraints = eval(substitute(expression({
@@ -1150,8 +1163,8 @@ cauchy.control <- function(save.weight = TRUE, ...)
 
         if (!length(etastart)) {
             loc.init = if (length( .ilocation)) .ilocation else {
-                if ( .method.init == 2) median(rep(y,w)) else 
-                if ( .method.init == 3) y else {
+                if ( .imethod == 2) median(rep(y,w)) else 
+                if ( .imethod == 3) y else {
                     cauchy2.Loglikfun = function(loc, y, x, w, extraargs) {
                          iprobs = .iprobs
                          qy = quantile(rep(y,w), probs=iprobs)
@@ -1159,11 +1172,11 @@ cauchy.control <- function(save.weight = TRUE, ...)
                          btry = (qy - loc) / ztry
                          scal = median(btry, na.rm = TRUE)
                          if (scal <= 0) scal = 0.1
-                         sum(w * dcauchy(x=y, loc=loc, scale=scal, log = TRUE))
+                         sum(w * dcauchy(x = y, loc=loc, scale=scal, log = TRUE))
                      }
                      loc.grid = c(quantile(y, probs=seq(0.1, 0.9, by=0.05)))
                      try.this = getMaxMin(loc.grid, objfun=cauchy2.Loglikfun,
-                                          y=y,  x=x, w=w)
+                                          y = y,  x = x, w = w)
                     try.this = rep(c(try.this), len = n)
                     try.this
                 }
@@ -1188,7 +1201,7 @@ cauchy.control <- function(save.weight = TRUE, ...)
         }
     }), list( .ilocation = ilocation, .elocation = elocation, .llocation = llocation,
               .iscale = iscale, .escale = escale, .lscale = lscale,
-              .iprobs=iprobs, .method.init = method.init ))),
+              .iprobs=iprobs, .imethod = imethod ))),
     inverse = eval(substitute(function(eta, extra = NULL) {
         eta2theta(eta[,1], .llocation, earg = .elocation)
     }, list( .llocation = llocation,
@@ -1197,9 +1210,9 @@ cauchy.control <- function(save.weight = TRUE, ...)
         misc$expected = TRUE
         misc$link =    c("location" = .llocation, "scale" =.lscale)
         misc$earg = list("location" = .elocation, "scale" = .escale)
-        misc$method.init = .method.init
+        misc$imethod = .imethod
     }), list( .escale = escale, .elocation = elocation,
-              .method.init = method.init,
+              .imethod = imethod,
               .llocation = llocation, .lscale = lscale ))),
     loglikelihood = eval(substitute(
         function(mu, y, w, residuals = FALSE, eta, extra = NULL) {
@@ -1207,7 +1220,7 @@ cauchy.control <- function(save.weight = TRUE, ...)
         myscale  = eta2theta(eta[,2], .lscale,    earg = .escale)
         if (residuals) stop("loglikelihood residuals not ",
                             "implemented yet") else {
-            sum(w * dcauchy(x=y, loc=location, sc=myscale, log = TRUE))
+            sum(w * dcauchy(x = y, loc=location, sc=myscale, log = TRUE))
         }
     }, list( .escale = escale, .lscale = lscale,
              .elocation = elocation, .llocation = llocation ))),
@@ -1220,13 +1233,13 @@ cauchy.control <- function(save.weight = TRUE, ...)
         Z = (y-location) / myscale
         dl.dlocation = 2 * Z / ((1 + Z^2) * myscale)
         dl.dscale = (Z^2 - 1) / ((1 + Z^2) * myscale)
-        w * cbind(dl.dlocation * dlocation.deta,
-                  dl.dscale * dscale.deta)
+        c(w) * cbind(dl.dlocation * dlocation.deta,
+                     dl.dscale * dscale.deta)
     }), list( .escale = escale, .lscale = lscale,
               .elocation = elocation, .llocation = llocation ))),
     weight = eval(substitute(expression({
         run.varcov = 0
-        ind1 = iam(NA, NA, M=M, both = TRUE, diag = TRUE)
+        ind1 = iam(NA, NA, M = M, both = TRUE, diag = TRUE)
         dthetas.detas = cbind(dlocation.deta, dscale.deta)
         if (length( .nsimEIM )) {
             for(ii in 1:( .nsimEIM )) {
@@ -1244,11 +1257,11 @@ cauchy.control <- function(save.weight = TRUE, ...)
                        n, ncol(run.varcov), byrow = TRUE) else run.varcov
 
             wz = wz * dthetas.detas[,ind1$row] * dthetas.detas[,ind1$col]
-            wz = w * matrix(wz, n, dimm(M))
+            wz = c(w) * matrix(wz, n, dimm(M))
         } else {
             wz = cbind(matrix(0.5 / myscale^2,n,2), matrix(0,n,1)) *
                  dthetas.detas[,ind1$row] * dthetas.detas[,ind1$col]
-            wz = w * wz[,1:M]  # diagonal wz
+            wz = c(w) * wz[,1:M]  # diagonal wz
         }
 
         wz
@@ -1262,16 +1275,16 @@ cauchy.control <- function(save.weight = TRUE, ...)
 
 
 
- cauchy1 = function(scale.arg=1, llocation = "identity",
+ cauchy1 = function(scale.arg = 1, llocation = "identity",
                     elocation = list(),
-                    ilocation = NULL, method.init = 1)
+                    ilocation = NULL, imethod = 1)
 {
     if (mode(llocation) != "character" && mode(llocation) != "name")
         llocation = as.character(substitute(llocation))
     if (!is.Numeric(scale.arg, posit = TRUE)) stop("bad input for 'scale.arg'")
-    if (!is.Numeric(method.init, allow = 1, integ = TRUE, posit = TRUE) ||
-       method.init > 3)
-        stop("'method.init' must be 1 or 2 or 3")
+    if (!is.Numeric(imethod, allow = 1, integ = TRUE, posit = TRUE) ||
+       imethod > 3)
+        stop("argument 'imethod' must be 1 or 2 or 3")
     if (!is.list(elocation)) elocation = list()
 
     new("vglmff",
@@ -1289,15 +1302,15 @@ cauchy.control <- function(save.weight = TRUE, ...)
 
         if (!length(etastart)) {
             loc.init = if (length( .ilocation)) .ilocation else {
-                if ( .method.init == 2) median(rep(y,w)) else 
-                if ( .method.init == 3) y else {
+                if ( .imethod == 2) median(rep(y,w)) else 
+                if ( .imethod == 3) y else {
                     cauchy1.Loglikfun = function(loc, y, x, w, extraargs) {
                          scal = extraargs
-                         sum(w * dcauchy(x=y, loc=loc, scale=scal, log = TRUE))
+                         sum(w * dcauchy(x = y, loc=loc, scale=scal, log = TRUE))
                      }
                      loc.grid = quantile(y, probs=seq(0.1, 0.9, by=0.05))
                      try.this = getMaxMin(loc.grid, objfun=cauchy1.Loglikfun,
-                                          y=y,  x=x, w=w, extraargs= .scale.arg)
+                                          y = y,  x = x, w = w, extraargs= .scale.arg)
                     try.this = rep(try.this, len = n)
                     try.this
                 }
@@ -1308,7 +1321,7 @@ cauchy.control <- function(save.weight = TRUE, ...)
         }
     }), list( .scale.arg=scale.arg, .ilocation = ilocation,
               .elocation = elocation, .llocation = llocation,
-              .method.init = method.init ))),
+              .imethod = imethod ))),
     inverse = eval(substitute(function(eta, extra = NULL) {
         eta2theta(eta, .llocation, earg = .elocation)
     }, list( .llocation = llocation,
@@ -1325,7 +1338,7 @@ cauchy.control <- function(save.weight = TRUE, ...)
         location = eta2theta(eta, .llocation, earg = .elocation)
         if (residuals) stop("loglikelihood residuals not ",
                             "implemented yet") else {
-            sum(w * dcauchy(x=y, loc=location, scale= .scale.arg, log = TRUE))
+            sum(w * dcauchy(x = y, loc=location, scale= .scale.arg, log = TRUE))
         }
     }, list( .scale.arg=scale.arg, .elocation = elocation,
              .llocation = llocation ))),
@@ -1335,11 +1348,11 @@ cauchy.control <- function(save.weight = TRUE, ...)
         temp = (y-location)/.scale.arg
         dl.dlocation = 2 * temp / ((1 + temp^2) * .scale.arg)
         dlocation.deta = dtheta.deta(location, .llocation, earg = .elocation)
-        w * dl.dlocation * dlocation.deta
+        c(w) * dl.dlocation * dlocation.deta
     }), list( .scale.arg=scale.arg, .elocation = elocation,
               .llocation = llocation ))),
     weight = eval(substitute(expression({
-        wz = w * dlocation.deta^2 / ( .scale.arg^2 * 2)
+        wz = c(w) * dlocation.deta^2 / ( .scale.arg^2 * 2)
         wz
     }), list( .scale.arg=scale.arg, .elocation = elocation,
               .llocation = llocation ))))
@@ -1352,15 +1365,15 @@ cauchy.control <- function(save.weight = TRUE, ...)
 
  logistic1 = function(llocation = "identity",
                      elocation = list(),
-                     scale.arg=1, method.init = 1)
+                     scale.arg = 1, imethod = 1)
 {
     if (mode(llocation) != "character" && mode(llocation) != "name")
         llocation = as.character(substitute(llocation))
     if (!is.Numeric(scale.arg, allow = 1, posit = TRUE))
         stop("'scale.arg' must be a single positive number")
-    if (!is.Numeric(method.init, allow = 1, integ = TRUE, posit = TRUE) ||
-       method.init > 2)
-        stop("'method.init' must be 1 or 2")
+    if (!is.Numeric(imethod, allow = 1, integ = TRUE, posit = TRUE) ||
+       imethod > 2)
+        stop("argument 'imethod' must be 1 or 2")
     if (!is.list(elocation)) elocation = list()
 
     new("vglmff",
@@ -1374,12 +1387,12 @@ cauchy.control <- function(save.weight = TRUE, ...)
         predictors.names = namesof("location", .llocation, 
                                    earg = .elocation, tag = FALSE)
         if (!length(etastart)) {
-            location.init = if ( .method.init == 1) y else median(rep(y, w))
+            location.init = if ( .imethod == 1) y else median(rep(y, w))
             location.init = rep(location.init, len = n)
             if ( .llocation == "loge") location.init = abs(location.init) + 0.001
             etastart = theta2eta(location.init, .llocation, earg = .elocation)
         }
-    }), list( .method.init = method.init, .llocation = llocation,
+    }), list( .imethod = imethod, .llocation = llocation,
               .elocation = elocation ))),
     inverse = eval(substitute(function(eta, extra = NULL) {
         eta2theta(eta, .llocation, earg = .elocation)
@@ -1398,7 +1411,7 @@ cauchy.control <- function(save.weight = TRUE, ...)
         zedd = (y-location)/.scale.arg
         if (residuals) stop("loglikelihood residuals not ",
                             "implemented yet") else {
-            sum(w * dlogis(x=y, location = location,
+            sum(w * dlogis(x = y, location = location,
                            scale = .scale.arg, log = TRUE))
         }
     }, list( .llocation = llocation,
@@ -1409,11 +1422,11 @@ cauchy.control <- function(save.weight = TRUE, ...)
         ezedd = exp(-(y-location)/.scale.arg)
         dl.dlocation = (1 - ezedd) / ((1 + ezedd) * .scale.arg)
         dlocation.deta = dtheta.deta(location, .llocation, earg = .elocation)
-        w * dl.dlocation * dlocation.deta
+        c(w) * dl.dlocation * dlocation.deta
     }), list( .llocation = llocation,
               .elocation = elocation, .scale.arg=scale.arg ))),
     weight = eval(substitute(expression({
-        wz = w * dlocation.deta^2 / ( .scale.arg^2 * 3) 
+        wz = c(w) * dlocation.deta^2 / ( .scale.arg^2 * 3) 
         wz
     }), list( .scale.arg=scale.arg ))))
 }
@@ -1421,14 +1434,14 @@ cauchy.control <- function(save.weight = TRUE, ...)
 
 
 
- erlang = function(shape.arg, link = "loge", earg = list(), method.init = 1)
+ erlang = function(shape.arg, link = "loge", earg = list(), imethod = 1)
 {
 
     if (!is.Numeric(shape.arg, allow = 1, integer = TRUE, positi = TRUE))
         stop("'shape' must be a positive integer")
-    if (!is.Numeric(method.init, allow = 1, integer = TRUE, positi = TRUE) ||
-       method.init > 2)
-        stop("'method.init' must be 1 or 2")
+    if (!is.Numeric(imethod, allow = 1, integer = TRUE, positi = TRUE) ||
+       imethod > 2)
+        stop("argument 'imethod' must be 1 or 2")
 
     if (mode(link) != "character" && mode(link) != "name")
         link = as.character(substitute(link))
@@ -1449,16 +1462,16 @@ cauchy.control <- function(save.weight = TRUE, ...)
           namesof("scale", .link, earg = .earg, tag = FALSE)
 
         if (!length(etastart)) {
-            if ( .method.init == 1) 
+            if ( .imethod == 1) 
                 sc.init = y / .shape.arg
-            if ( .method.init==2) {
+            if ( .imethod==2) {
                 sc.init = median(y) / .shape.arg
                 sc.init = rep(sc.init, length = n) 
             }
             etastart = theta2eta(sc.init, .link, earg = .earg)
         }
     }), list( .link = link, .earg = earg,
-              .shape.arg=shape.arg, .method.init = method.init ))),
+              .shape.arg=shape.arg, .imethod = imethod ))),
     inverse = eval(substitute(function(eta, extra = NULL) {
         sc = eta2theta(eta, .link, earg = .earg)
         .shape.arg * sc 
@@ -1483,11 +1496,11 @@ cauchy.control <- function(save.weight = TRUE, ...)
         sc = eta2theta(eta, .link, earg = .earg)
         dl.dsc = (y / sc - .shape.arg) / sc
         dsc.deta = dtheta.deta(sc, .link, earg = .earg)
-        w * dl.dsc * dsc.deta
+        c(w) * dl.dsc * dsc.deta
     }), list( .link = link, .earg = earg, .shape.arg=shape.arg ))),
     weight = eval(substitute(expression({
         ed2l.dsc2 = .shape.arg / sc^2
-        wz = w * dsc.deta^2 * ed2l.dsc2
+        wz = c(w) * dsc.deta^2 * ed2l.dsc2
         wz
     }), list( .earg = earg, .shape.arg=shape.arg ))))
 }
@@ -1496,7 +1509,7 @@ cauchy.control <- function(save.weight = TRUE, ...)
 
 
 
-dbort = function(x, Qsize=1, a=0.5, log = FALSE) {
+dbort = function(x, Qsize = 1, a=0.5, log = FALSE) {
     if (!is.logical(log.arg <- log))
         stop("bad input for argument 'log'")
     rm(log)
@@ -1521,7 +1534,7 @@ dbort = function(x, Qsize=1, a=0.5, log = FALSE) {
 }
 
 
-rbort = function(n, Qsize=1, a=0.5) {
+rbort = function(n, Qsize = 1, a=0.5) {
     if (!is.Numeric(n, integ = TRUE, posit = TRUE, allow = 1))
         stop("bad input for argument 'n'")
     if (!is.Numeric(Qsize, allow = 1, integ = TRUE, posit = TRUE))
@@ -1543,16 +1556,16 @@ rbort = function(n, Qsize=1, a=0.5) {
 }
 
 
- borel.tanner = function(Qsize=1, link = "logit", earg = list(), method.init = 1)
+ borel.tanner = function(Qsize = 1, link = "logit", earg = list(), imethod = 1)
 {
     if (!is.Numeric(Qsize, allow = 1, integ = TRUE, posit = TRUE))
         stop("bad input for argument 'Qsize'")
     if (mode(link) != "character" && mode(link) != "name")
         link = as.character(substitute(link))
     if (!is.list(earg)) earg = list()
-    if (!is.Numeric(method.init, allow = 1, integ = TRUE, posit = TRUE) ||
-       method.init > 4)
-        stop("'method.init' must be 1 or 2, 3 or 4")
+    if (!is.Numeric(imethod, allow = 1, integ = TRUE, posit = TRUE) ||
+       imethod > 4)
+        stop("argument 'imethod' must be 1 or 2, 3 or 4")
 
     new("vglmff",
     blurb = c("Borel-Tanner distribution\n\n",
@@ -1572,7 +1585,7 @@ rbort = function(n, Qsize=1, a=0.5) {
         predictors.names = namesof("a", .link, earg = .earg, tag = FALSE)
 
         if (!length(etastart)) {
-            a.init = switch(as.character( .method.init ),
+            a.init = switch(as.character( .imethod ),
                 "1" = 1 - .Qsize / (y+1/8),
                 "2" = rep(1 - .Qsize / weighted.mean(y,w), len = n),
                 "3" = rep(1 - .Qsize / median(y), len = n),
@@ -1580,7 +1593,7 @@ rbort = function(n, Qsize=1, a=0.5) {
             etastart = theta2eta(a.init, .link, earg = .earg)
         }
     }), list( .link = link, .earg = earg, .Qsize=Qsize,
-              .method.init = method.init ))),
+              .imethod = imethod ))),
     inverse = eval(substitute(function(eta, extra = NULL) {
         a = eta2theta(eta, .link, earg = .earg)
         .Qsize / (1 - a)
@@ -1596,7 +1609,7 @@ rbort = function(n, Qsize=1, a=0.5) {
         aa = eta2theta(eta, .link, earg = .earg)
         if (residuals) stop("loglikelihood residuals not ",
                             "implemented yet") else {
-            sum(w * dbort(x=y, Qsize= .Qsize, a=aa, log = TRUE))
+            sum(w * dbort(x = y, Qsize= .Qsize, a=aa, log = TRUE))
         }
     }, list( .link = link, .earg = earg, .Qsize=Qsize ))),
     vfamily = c("borel.tanner"),
@@ -1604,11 +1617,11 @@ rbort = function(n, Qsize=1, a=0.5) {
         a = eta2theta(eta, .link, earg = .earg)
         dl.da = (y- .Qsize)/a - y 
         da.deta = dtheta.deta(a, .link, earg = .earg)
-        w * dl.da * da.deta
+        c(w) * dl.da * da.deta
     }), list( .link = link, .earg = earg, .Qsize=Qsize ))),
     weight = eval(substitute(expression({
         ed2l.da2 = .Qsize / (a*(1-a))
-        wz = w * da.deta^2 * ed2l.da2
+        wz = c(w) * da.deta^2 * ed2l.da2
         wz
     }), list( .Qsize=Qsize ))))
 }
@@ -1639,14 +1652,14 @@ dfelix = function(x, a=0.25, log = FALSE) {
 
  felix = function(link = "elogit",
             earg=if (link == "elogit") list(min=0, max=0.5) else list(),
-            method.init = 1)
+            imethod = 1)
 {
     if (mode(link) != "character" && mode(link) != "name")
         link = as.character(substitute(link))
     if (!is.list(earg)) earg = list()
-    if (!is.Numeric(method.init, allow = 1, integ = TRUE, posit = TRUE) ||
-       method.init > 4)
-        stop("'method.init' must be 1 or 2, 3 or 4")
+    if (!is.Numeric(imethod, allow = 1, integ = TRUE, posit = TRUE) ||
+       imethod > 4)
+        stop("argument 'imethod' must be 1 or 2, 3 or 4")
 
     new("vglmff",
     blurb = c("Felix distribution\n\n",
@@ -1663,7 +1676,7 @@ dfelix = function(x, a=0.25, log = FALSE) {
 
         if (!length(etastart)) {
             wymean = weighted.mean(y,w)
-            a.init = switch(as.character( .method.init ),
+            a.init = switch(as.character( .imethod ),
                 "1" = (y-1+1/8) / (2*(y+1/8)+1/8),
                 "2" = rep((wymean-1+1/8) / (2*(wymean+1/8)+1/8), len = n),
                 "3" = rep((median(y)-1+1/8) / (2*(median(y)+1/8)+1/8), len = n),
@@ -1671,7 +1684,7 @@ dfelix = function(x, a=0.25, log = FALSE) {
             etastart = theta2eta(a.init, .link, earg = .earg)
         }
     }), list( .link = link, .earg = earg,
-              .method.init = method.init ))),
+              .imethod = imethod ))),
     inverse = eval(substitute(function(eta, extra = NULL) {
         a = eta2theta(eta, .link, earg = .earg)
         1 / (1 - 2*a)
@@ -1686,7 +1699,7 @@ dfelix = function(x, a=0.25, log = FALSE) {
         aa = eta2theta(eta, .link, earg = .earg)
         if (residuals) stop("loglikelihood residuals not ",
                             "implemented yet") else {
-           sum(w * dfelix(x=y, a=aa, log = TRUE))
+           sum(w * dfelix(x = y, a=aa, log = TRUE))
        }
     }, list( .link = link, .earg = earg ))),
     vfamily = c("felix"),
@@ -1694,11 +1707,11 @@ dfelix = function(x, a=0.25, log = FALSE) {
         a = eta2theta(eta, .link, earg = .earg)
         dl.da = (y- 1)/(2*a) - y 
         da.deta = dtheta.deta(a, .link, earg = .earg)
-        w * dl.da * da.deta
+        c(w) * dl.da * da.deta
     }), list( .link = link, .earg = earg ))),
     weight = eval(substitute(expression({
         ed2l.da2 = 1 / (a*(1-2*a))
-        wz = w * da.deta^2 * ed2l.da2
+        wz = c(w) * da.deta^2 * ed2l.da2
         wz
     }), list( .link = link ))))
 }
@@ -1707,11 +1720,11 @@ dfelix = function(x, a=0.25, log = FALSE) {
 
 
 
- betaff = function(A=0, B=1,
+ betaff = function(A=0, B = 1,
           lmu = if (A == 0 & B == 1) "logit" else "elogit", lphi = "loge",
           emu = if (lmu == "elogit") list(min=A, max=B) else list(),
-          ephi=list(),
-          imu = NULL, iphi = NULL, method.init = 1, zero = NULL)
+          ephi = list(),
+          imu = NULL, iphi = NULL, imethod = 1, zero = NULL)
 {
     if (!is.Numeric(A, allow = 1) || !is.Numeric(B, allow = 1) || A >= B)
         stop("A must be < B, and both must be of length one")
@@ -1728,9 +1741,9 @@ dfelix = function(x, a=0.25, log = FALSE) {
         stop("bad input for argument 'imu'")
     if (length(iphi) && !is.Numeric(iphi, posit = TRUE))
         stop("bad input for argument 'iphi'")
-    if (!is.Numeric(method.init, allow = 1, integ = TRUE, posit = TRUE) ||
-       method.init > 2)
-        stop("'method.init' must be 1 or 2")
+    if (!is.Numeric(imethod, allow = 1, integ = TRUE, posit = TRUE) ||
+       imethod > 2)
+        stop("argument 'imethod' must be 1 or 2")
 
     if (!is.list(emu)) emu = list()
     if (!is.list(ephi)) ephi = list()
@@ -1746,7 +1759,7 @@ dfelix = function(x, a=0.25, log = FALSE) {
             ", mu = ", A, " + ", (B-A), " * mu1",
             ", phi > 0\n\n", sep = ""),
             "Links:    ",
-            namesof("mu", lmu, earg = emu),  ", ",
+            namesof("mu",  lmu,  earg = emu),  ", ",
             namesof("phi", lphi, earg = ephi)),
     constraints = eval(substitute(expression({
         constraints = cm.zero.vgam(constraints, x, .zero, M)
@@ -1760,7 +1773,7 @@ dfelix = function(x, a=0.25, log = FALSE) {
                              namesof("phi", .lphi, .ephi, short = TRUE))
         if (!length(etastart)) {
           mu.init = if (is.Numeric( .imu)) .imu else
-                    {if ( .method.init == 1) weighted.mean(y,w) else
+                    {if ( .imethod == 1) weighted.mean(y,w) else
                      median(rep(y,w))}
           mu1.init = (mu.init - .A) / ( .B - .A)  # In (0,1)
           phi.init = if (is.Numeric( .iphi)) .iphi else
@@ -1770,7 +1783,7 @@ dfelix = function(x, a=0.25, log = FALSE) {
           etastart[,2] = theta2eta(phi.init, .lphi, earg = .ephi )
       }
     }), list( .lmu = lmu, .lphi = lphi, .imu=imu, .iphi=iphi,
-              .A = A, .B = B, .emu = emu, .ephi = ephi, .method.init = method.init ))),
+              .A = A, .B = B, .emu = emu, .ephi = ephi, .imethod = imethod ))),
     inverse = eval(substitute(function(eta, extra = NULL) {
        mu = eta2theta(eta[,1], .lmu, .emu )
        mu
@@ -1818,8 +1831,11 @@ dfelix = function(x, a=0.25, log = FALSE) {
                       (1-m1u)*digamma(temp2) +
                       m1u*log(y-.A) + (1-m1u)*log( .B-y) - log( .B -.A)
         }
-        w * cbind(dl.dmu1 * dmu1.dmu * dmu.deta, dl.dphi * dphi.deta)
-    }), list( .lmu = lmu, .lphi = lphi, .A = A, .B = B, .emu = emu, .ephi = ephi,
+        c(w) * cbind(dl.dmu1 * dmu1.dmu * dmu.deta,
+                     dl.dphi * dphi.deta)
+    }), list( .lmu = lmu, .lphi = lphi,
+              .emu = emu, .ephi = ephi,
+              .A = A, .B = B,
               .stdbeta = stdbeta ))),
     weight = eval(substitute(expression({
         d2l.dmu12 = phi^2 * (trigamma(temp1) + trigamma(temp2))
@@ -1830,7 +1846,7 @@ dfelix = function(x, a=0.25, log = FALSE) {
         wz[,iam(1,1,M)] = d2l.dmu12 * dmu1.dmu^2 * dmu.deta^2
         wz[,iam(2,2,M)] = d2l.dphi2 * dphi.deta^2
         wz[,iam(1,2,M)] = d2l.dmu1phi * dmu1.dmu * dmu.deta * dphi.deta
-        w * wz
+        c(w) * wz
     }), list( .A = A, .B = B ))))
 }
 
@@ -1865,11 +1881,11 @@ dfelix = function(x, a=0.25, log = FALSE) {
               "(shape parameters parameterization)\n",
               if (stdbeta)
               paste("y^(shape1-1) * (1-y)^(shape2-1) / B(shape1,shape2),",
-              "0<=y<=1, shape1>0, shape2>0\n\n") else
+              "0 <= y <= 1, shape1>0, shape2>0\n\n") else
               paste("(y-",A,")^(shape1-1) * (",B,
               "-y)^(shape2-1) / [B(shape1,shape2) * (",
               B, "-", A, ")^(shape1+shape2-1)], ",
-               A,"<=y< = ",B," shape1>0, shape2>0\n\n", sep = ""),
+               A," <= y <= ",B," shape1>0, shape2>0\n\n", sep = ""),
               "Links:    ",
               namesof("shape1", lshape1, earg = eshape1),  ", ",
               namesof("shape2", lshape2, earg = eshape2)),
@@ -1935,7 +1951,7 @@ dfelix = function(x, a=0.25, log = FALSE) {
                              dtheta.deta(shapes[,2], .lshape2, earg = .eshape2))
         dl.dshapes = cbind(log(y-.A), log( .B-y)) - digamma(shapes) +
                      digamma(shapes[,1] + shapes[,2]) - log( .B - .A)
-        w * dl.dshapes * dshapes.deta
+        c(w) * dl.dshapes * dshapes.deta
     }), list( .lshape1 = lshape1, .lshape2 = lshape2, .A = A, .B = B, 
               .eshape1 = eshape1, .eshape2 = eshape2 ))),
     weight = expression({
@@ -1949,7 +1965,7 @@ dfelix = function(x, a=0.25, log = FALSE) {
         wz[,iam(2,2,M)] = d2l.dshape22 * dshapes.deta[,2]^2
         wz[,iam(1,2,M)] = d2l.dshape1shape2 * dshapes.deta[,1] * dshapes.deta[,2]
 
-        -w * wz
+        -c(w) * wz
     }))
 }
 
@@ -2028,7 +2044,7 @@ dfelix = function(x, a=0.25, log = FALSE) {
                      digamma(shapes[,1] + shapes[,2]) - log( .B - .A)
         dl.dA = -(shapes[,1]-1) / (y- .A)  + temp1
         dl.dB =  (shapes[,2]-1) / ( .B - y) - temp1
-        w * cbind(dl.dshapes * dshapes.deta, dl.dA, dl.dB)
+        c(w) * cbind(dl.dshapes * dshapes.deta, dl.dA, dl.dB)
     }), list( .link = link, .earg = earg ))), 
     weight = expression({
 
@@ -2060,7 +2076,7 @@ dfelix = function(x, a=0.25, log = FALSE) {
         wz[,iam(4,2,M)] = ed2l.dBshape2 * dshapes.deta[,2]
 
 
-        -w * wz
+        -c(w) * wz
     }))
 }
 
@@ -2090,11 +2106,11 @@ dfelix = function(x, a=0.25, log = FALSE) {
       rate = 1 / mu
       dl.drate = mu - y
       drate.deta = dtheta.deta(rate, "loge")
-      w * dl.drate * drate.deta
+      c(w) * dl.drate * drate.deta
   }),
   weight = expression({
       ed2l.drate2 = -1 / rate^2
-      wz = -w * drate.deta^2 * ed2l.drate2
+      wz = -c(w) * drate.deta^2 * ed2l.drate2
       wz
   }))
 }
@@ -2167,7 +2183,7 @@ dfelix = function(x, a=0.25, log = FALSE) {
     rate <- 1 / (mu - extra$loc)
     dl.drate <- mu - y
     drate.deta <- dtheta.deta(rate, .link, earg = .earg)
-    w * dl.drate * drate.deta
+    c(w) * dl.drate * drate.deta
   }), list( .link = link, .earg = earg ))),
   weight = eval(substitute(expression({
     d2l.drate2 <- -((mu-extra$loc)^2)
@@ -2176,7 +2192,7 @@ dfelix = function(x, a=0.25, log = FALSE) {
       d2rate.deta2 <- d2theta.deta2(rate, .link, earg = .earg)
       wz <- wz - dl.drate * d2rate.deta2
     }
-      w * wz
+      c(w) * wz
   }), list( .link = link, .expected = expected, .earg = earg ))))
 }
 
@@ -2223,19 +2239,19 @@ dfelix = function(x, a=0.25, log = FALSE) {
     loglikelihood= function(mu, y, w, residuals = FALSE, eta, extra = NULL)
         if (residuals) stop("loglikelihood residuals not ",
                             "implemented yet") else {
-        sum(w * dgamma(x=y, shape=mu, scale=1, log = TRUE))
+        sum(w * dgamma(x = y, shape=mu, scale = 1, log = TRUE))
     },
     vfamily = c("gamma1"),
     deriv = eval(substitute(expression({
         shape = mu
         dl.dshape = log(y) - digamma(shape)
         dshape.deta = dtheta.deta(shape, .link, earg = .earg)
-        w * dl.dshape * dshape.deta
+        c(w) * dl.dshape * dshape.deta
     }), list( .link = link, .earg = earg ))),
     weight = expression({
         d2l.dshape = -trigamma(shape)
         wz = -(dshape.deta^2) * d2l.dshape
-        w * wz
+        c(w) * wz
     }))
 }
 
@@ -2262,7 +2278,7 @@ dfelix = function(x, a=0.25, log = FALSE) {
     new("vglmff",
     blurb = c("2-parameter Gamma distribution\n",
             "Links:    ",
-            namesof("rate", lrate, earg = erate), ", ", 
+            namesof("rate",  lrate,  earg = erate), ", ", 
             namesof("shape", lshape, earg = eshape), "\n",
             "Mean:     mu = shape/rate\n",
             "Variance: (mu^2)/shape = shape/rate^2"),
@@ -2309,7 +2325,7 @@ dfelix = function(x, a=0.25, log = FALSE) {
         shape = eta2theta(eta[,2], .lshape, earg = .eshape)
         if (residuals) stop("loglikelihood residuals not ",
                             "implemented yet") else {
-            sum(w * dgamma(x=y, shape=shape, rate=rate, log = TRUE))
+            sum(w * dgamma(x = y, shape = shape, rate=rate, log = TRUE))
         }
     }, list( .lrate = lrate, .lshape = lshape,
              .erate = erate, .eshape = eshape ))),
@@ -2321,7 +2337,8 @@ dfelix = function(x, a=0.25, log = FALSE) {
         dl.dshape = log(y*rate) - digamma(shape)
         dratedeta = dtheta.deta(rate, .lrate, earg = .erate)
         dshape.deta = dtheta.deta(shape, .lshape, earg = .eshape)
-        w * cbind(dl.drate * dratedeta, dl.dshape * dshape.deta)
+        c(w) * cbind(dl.drate * dratedeta,
+                     dl.dshape * dshape.deta)
     }), list( .lrate = lrate, .lshape = lshape,
               .erate = erate, .eshape = eshape ))),
     weight = eval(substitute(expression({
@@ -2338,7 +2355,7 @@ dfelix = function(x, a=0.25, log = FALSE) {
             wz[,iam(1,1,M)] = wz[,iam(1,1,M)] - dl.drate * d2ratedeta2
             wz[,iam(2,2,M)] = wz[,iam(2,2,M)] - dl.dshape * d2shapedeta2
         }
-        w * wz
+        c(w) * wz
     }), list( .lrate = lrate, .lshape = lshape,
               .erate = erate, .eshape = eshape, .expected = expected ))))
 }
@@ -2347,7 +2364,7 @@ dfelix = function(x, a=0.25, log = FALSE) {
 
  gamma2 = function(lmu = "loge", lshape = "loge",
                    emu = list(), eshape = list(),
-                   method.init = 1,
+                   imethod = 1,
                    deviance.arg = FALSE, ishape = NULL, zero = -2)
 {
 
@@ -2359,9 +2376,9 @@ dfelix = function(x, a=0.25, log = FALSE) {
         stop("bad input for argument 'zero'")
     if (length( ishape) && !is.Numeric(ishape, posit = TRUE))
         stop("bad input for argument 'ishape'")
-    if (!is.Numeric(method.init, allow = 1, integ = TRUE, posit = TRUE) ||
-       method.init > 2)
-        stop("'method.init' must be 1 or 2")
+    if (!is.Numeric(imethod, allow = 1, integ = TRUE, posit = TRUE) ||
+       imethod > 2)
+        stop("argument 'imethod' must be 1 or 2")
     if (!is.list(emu)) emu = list()
     if (!is.list(eshape)) eshape = list()
 
@@ -2370,7 +2387,7 @@ dfelix = function(x, a=0.25, log = FALSE) {
     blurb = c("2-parameter Gamma distribution",
             " (McCullagh and Nelder 1989 parameterization)\n",
             "Links:    ",
-            namesof("mu", lmu, earg = emu), ", ", 
+            namesof("mu",    lmu,    earg = emu), ", ", 
             namesof("shape", lshape, earg = eshape), "\n",
             "Mean:     mu\n",
             "Variance: (mu^2)/shape"),
@@ -2382,6 +2399,8 @@ dfelix = function(x, a=0.25, log = FALSE) {
         constraints = cm.zero.vgam(constraints, x, z_Index, M)
     }), list( .zero = zero ))),
     initialize = eval(substitute(expression({
+        Musual <- 2
+
         assign("CQO.FastAlgorithm", ( .lmu == "loge" && .lshape == "loge"),
                envir = VGAM:::VGAMenv)
         if (any(function.name == c("cqo","cao")) &&
@@ -2389,14 +2408,16 @@ dfelix = function(x, a=0.25, log = FALSE) {
             stop("argument zero=-2 is required")
 
         y = as.matrix(y)
-        M = 2 * ncol(y)
+        M = Musual * ncol(y)
         NOS = ncoly = ncol(y)  # Number of species
-        temp1.names = if (NOS == 1) "mu" else paste("mu", 1:NOS, sep = "")
-        temp2.names = if (NOS == 1) "shape" else paste("shape", 1:NOS, sep = "")
+        temp1.names =
+          if (NOS == 1) "mu"    else paste("mu",    1:NOS, sep = "")
+        temp2.names =
+          if (NOS == 1) "shape" else paste("shape", 1:NOS, sep = "")
         predictors.names =
             c(namesof(temp1.names, .lmu,    earg = .emu,    tag = FALSE),
               namesof(temp2.names, .lshape, earg = .eshape, tag = FALSE))
-        predictors.names = predictors.names[interleave.VGAM(M, M = 2)]
+        predictors.names = predictors.names[interleave.VGAM(M, M = Musual)]
 
 
         # Error check
@@ -2404,10 +2425,10 @@ dfelix = function(x, a=0.25, log = FALSE) {
             stop("all responses must be positive") # see @loglikelihood
         if (!length(etastart)) {
             init.shape = matrix(1.0, n, NOS)
-            mymu = y # + 0.167 * (y == 0)  # method.init == 1 (the default)
-            if ( .method.init == 2) {
+            mymu = y # + 0.167 * (y == 0)  # imethod == 1 (the default)
+            if ( .imethod == 2) {
                 for(ii in 1:ncol(y)) {
-                    mymu[,ii] = weighted.mean(y[,ii], w=w)
+                    mymu[,ii] = weighted.mean(y[,ii], w = w)
                 }
             }
             for(spp in 1:NOS) {
@@ -2420,14 +2441,15 @@ dfelix = function(x, a=0.25, log = FALSE) {
             }
             etastart = cbind(theta2eta(mymu, .lmu, earg = .emu ),
                              theta2eta(init.shape, .lshape, earg = .eshape ))
-            etastart = etastart[,interleave.VGAM(M, M = 2), drop = FALSE]
+            etastart = etastart[,interleave.VGAM(M, M = Musual), drop = FALSE]
         }
     }), list( .lmu = lmu, .lshape = lshape, .ishape = ishape, .zero = zero,
               .emu = emu, .eshape = eshape,
-              .method.init = method.init ))),
+              .imethod = imethod ))),
     inverse = eval(substitute(function(eta, extra = NULL) {
-        NOS = ncol(eta) / 2
-        eta2theta(eta[,2*(1:NOS)-1, drop = FALSE], .lmu, earg = .emu )
+        Musual <- 2
+        NOS = ncol(eta) / Musual
+        eta2theta(eta[, 2*(1:NOS)-1, drop = FALSE], .lmu, earg = .emu )
     }, list( .lmu = lmu, .emu = emu ))),
     last = eval(substitute(expression({
         if (exists("CQO.FastAlgorithm", envir = VGAM:::VGAMenv))
@@ -2456,38 +2478,45 @@ dfelix = function(x, a=0.25, log = FALSE) {
     }, list( .lmu = lmu, .emu = emu ))),
     loglikelihood = eval(substitute(
         function(mu, y, w, residuals = FALSE, eta, extra = NULL) {
-        NOS = ncol(eta) / 2
+        Musual <- 2
+        NOS = ncol(eta) / Musual
         mymu = mu  # eta2theta(eta[,2*(1:NOS)-1], .lmu, earg = .emu )
         shapemat = eta2theta(eta[,2*(1:NOS), drop = FALSE], .lshape, earg = .eshape )
         if (residuals) stop("loglikelihood residuals not ",
                             "implemented yet") else {
-            sum(w * dgamma(x=y, shape=c(shapemat), scale=c(mymu/shapemat),
+            sum(w * dgamma(x = y, shape = c(shapemat), scale = c(mymu/shapemat),
                            log = TRUE))
         }
     }, list( .lmu = lmu, .lshape = lshape,
              .emu = emu, .eshape = eshape ))),
     vfamily = c("gamma2"),
     deriv = eval(substitute(expression({
-        NOS = ncol(eta) / 2
-        mymu = eta2theta(eta[,2*(1:NOS)-1], .lmu, earg = .emu )
-        shape = eta2theta(eta[,2*(1:NOS)], .lshape, earg = .eshape )
+        Musual <- 2
+        NOS = ncol(eta) / Musual
+
+        mymu  = eta2theta(eta[,2*(1:NOS)-1], .lmu,    earg = .emu )
+        shape = eta2theta(eta[,2*(1:NOS)],   .lshape, earg = .eshape )
+
         dl.dmu = shape * (y / mymu - 1) / mymu
         dl.dshape = log(y) + log(shape) - log(mymu) + 1 - digamma(shape) -
                     y / mymu
-        dmu.deta = dtheta.deta(mymu, .lmu, earg = .emu )
+
+        dmu.deta    = dtheta.deta(mymu,  .lmu,    earg = .emu )
         dshape.deta = dtheta.deta(shape, .lshape, earg = .eshape )
-        myderiv = w * cbind(dl.dmu * dmu.deta, dl.dshape * dshape.deta)
-        myderiv[,interleave.VGAM(M, M = 2)]
+
+        myderiv = c(w) * cbind(dl.dmu * dmu.deta,
+                               dl.dshape * dshape.deta)
+        myderiv[, interleave.VGAM(M, M = Musual)]
     }), list( .lmu = lmu, .lshape = lshape,
               .emu = emu, .eshape = eshape ))),
     weight = eval(substitute(expression({
         ed2l.dmu2 = shape / (mymu^2)
         ed2l.dshape2 = trigamma(shape) - 1 / shape
-        wz = matrix(as.numeric(NA), n, M)  #2=M; diagonal!
-        NOS = M / 2 
+        wz = matrix(as.numeric(NA), n, M)  # 2 = M; diagonal!
+
         wz[,2*(1:NOS)-1] = ed2l.dmu2 * dmu.deta^2
         wz[,2*(1:NOS)] = ed2l.dshape2 * dshape.deta^2
-        w * wz
+        c(w) * wz
     }), list( .lmu = lmu ))))
 
     if (deviance.arg) ans at deviance = eval(substitute(
@@ -2513,16 +2542,16 @@ dfelix = function(x, a=0.25, log = FALSE) {
 
 
  geometric =function(link = "logit", earg = list(), expected = TRUE,
-                     method.init= 1)
+                     imethod= 1)
 {
     if (!is.logical(expected) || length(expected) != 1)
         stop("bad input for argument 'expected'")
     if (mode(link) != "character" && mode(link) != "name")
         link = as.character(substitute(link))
     if (!is.list(earg)) earg = list()
-    if (!is.Numeric(method.init, allow = 1, integ = TRUE, posit = TRUE) ||
-       method.init > 3)
-        stop("'method.init' must be 1 or 2 or 3")
+    if (!is.Numeric(imethod, allow = 1, integ = TRUE, posit = TRUE) ||
+       imethod > 3)
+        stop("argument 'imethod' must be 1 or 2 or 3")
 
     new("vglmff",
     blurb = c("Geometric distribution (P[Y=y] = prob*(1-prob)^y, y=0,1,2,...)\n",
@@ -2537,14 +2566,14 @@ dfelix = function(x, a=0.25, log = FALSE) {
         if (any(y!=round(y ))) stop("response should be integer-valued")
         predictors.names = namesof("prob", .link, earg = .earg, tag = FALSE)
         if (!length(etastart)) {
-            prob.init = if ( .method.init == 3)
+            prob.init = if ( .imethod == 3)
                             1 / (1 + y + 1/16) else
-                        if ( .method.init == 1)
+                        if ( .imethod == 1)
                             1 / (1 + median(rep(y,w)) + 1/16) else
                         1 / (1 + weighted.mean(y,w) + 1/16)
             etastart = theta2eta(prob.init, .link, earg = .earg)
         }
-    }), list( .link = link, .earg = earg, .method.init = method.init ))),
+    }), list( .link = link, .earg = earg, .imethod = imethod ))),
     inverse = eval(substitute(function(eta, extra = NULL) {
         prob = eta2theta(eta, .link, earg = .earg)
         (1-prob)/prob 
@@ -2553,14 +2582,14 @@ dfelix = function(x, a=0.25, log = FALSE) {
         misc$link =    c(prob = .link)
         misc$earg = list(prob = .earg )
         misc$expected = .expected
-        misc$method.init = .method.init
-    }), list( .link = link, .earg = earg, .expected = expected, .method.init = method.init ))),
+        misc$imethod = .imethod
+    }), list( .link = link, .earg = earg, .expected = expected, .imethod = imethod ))),
     loglikelihood = eval(substitute(
         function(mu, y, w, residuals = FALSE, eta, extra = NULL) {
         prob = eta2theta(eta, .link, earg = .earg)
         if (residuals) stop("loglikelihood residuals not ",
                             "implemented yet") else {
-            sum(w * dgeom(x=y, prob=prob, log = TRUE))
+            sum(w * dgeom(x = y, prob=prob, log = TRUE))
         }
     }, list( .link = link, .earg = earg ))),
     vfamily = c("geometric"),
@@ -2568,14 +2597,14 @@ dfelix = function(x, a=0.25, log = FALSE) {
         prob = eta2theta(eta, .link, earg = .earg)
         dl.dprob = -y/(1-prob) + 1/prob 
         dprobdeta = dtheta.deta(prob, .link, earg = .earg)
-        w * cbind(dl.dprob * dprobdeta)
+        c(w) * cbind(dl.dprob * dprobdeta)
     }), list( .link = link, .earg = earg, .expected = expected ))),
     weight = eval(substitute(expression({
         ed2l.dprob2 = if ( .expected ) 1 / (prob^2 * (1-prob)) else
             y / (1-prob)^2 + 1 / prob^2
         wz = ed2l.dprob2 * dprobdeta^2
         if ( !( .expected )) wz = wz - dl.dprob * d2theta.deta2(prob, .link, earg = .earg)
-        w * wz
+        c(w) * wz
     }), list( .link = link, .earg = earg, .expected = expected ))))
 }
 
@@ -2631,7 +2660,7 @@ rbetageom = function(n, shape1, shape2) {
     if (!is.Numeric(n, integ = TRUE,allow = 1)) stop("bad input for argument 'n'")
     if (!is.Numeric(shape1, pos = TRUE)) stop("bad input for argument 'shape1'")
     if (!is.Numeric(shape2, pos = TRUE)) stop("bad input for argument 'shape2'")
-    rgeom(n=n, prob = rbeta(n=n, shape1=shape1, shape2=shape2))
+    rgeom(n = n, prob = rbeta(n = n, shape1=shape1, shape2=shape2))
 }
 
 
@@ -2640,17 +2669,21 @@ rbetageom = function(n, shape1, shape2) {
 
 interleave.VGAM = function(L, M) c(matrix(1:L, nrow=M, byrow = TRUE))
 
+
+
 negbinomial.control <- function(save.weight = TRUE, ...)
 {
     list(save.weight = save.weight)
 }
 
- negbinomial = function(lmu = "loge", lk = "loge",
-                        emu =list(), ek=list(),
-                        imu = NULL, ik = NULL,
+
+
+ negbinomial = function(lmu = "loge", lsize = "loge",
+                        emu = list(), esize = list(),
+                        imu = NULL,   isize = NULL,
                         quantile.probs = 0.75,
                         nsimEIM = 100, cutoff = 0.995, Maxiter = 5000,
-                        deviance.arg = FALSE, method.init = 1,
+                        deviance.arg = FALSE, imethod = 1,
                         parallel = FALSE,
                         shrinkage.init = 0.95, zero = -2)
 {
@@ -2658,605 +2691,615 @@ negbinomial.control <- function(save.weight = TRUE, ...)
 
 
 
-    if (length(imu) && !is.Numeric(imu, posit = TRUE))
-        stop("bad input for argument 'imu'")
-    if (length(ik) && !is.Numeric(ik, posit = TRUE))
-        stop("bad input for argument 'ik'")
-
-    if (!is.Numeric(cutoff, allow = 1) || cutoff<0.8 || cutoff>=1)
-        stop("range error in the argument 'cutoff'")
-    if (!is.Numeric(Maxiter, integ = TRUE, allow = 1) || Maxiter < 100)
-        stop("bad input for argument 'Maxiter'")
-    if (!is.Numeric(method.init, allow = 1, integ = TRUE, posit = TRUE) ||
-       method.init > 3) stop("argument 'method.init' must be 1 or 2 or 3")
-    if (!is.Numeric(shrinkage.init, allow = 1) || shrinkage.init < 0 ||
-       shrinkage.init > 1) stop("bad input for argument 'shrinkage.init'")
 
-    if (!is.null(nsimEIM)) {
-        if (!is.Numeric(nsimEIM, allow = 1, integ = TRUE))
-            stop("bad input for argument 'nsimEIM'")
-        if (nsimEIM <= 10)
-            warning("argument 'nsimEIM' should be an integer ",
-                     "greater than 10, say")
-    }
 
-    if (mode(lmu) != "character" && mode(lmu) != "name")
-        lmu = as.character(substitute(lmu))
-    if (mode(lk) != "character" && mode(lk) != "name")
-        lk = as.character(substitute(lk))
-    if (!is.list(emu)) emu = list()
-    if (!is.list(ek)) ek = list()
+  lmuuu = lmu
+  emuuu = emu
+  imuuu = imu
+
+
+  if (length(imuuu) && !is.Numeric(imuuu, posit = TRUE))
+    stop("bad input for argument 'imu'")
+  if (length(isize) && !is.Numeric(isize, posit = TRUE))
+    stop("bad input for argument 'isize'")
+
+  if (!is.Numeric(cutoff, allow = 1) || cutoff < 0.8 || cutoff >= 1)
+    stop("range error in the argument 'cutoff'")
+  if (!is.Numeric(Maxiter, integ = TRUE, allow = 1) || Maxiter < 100)
+    stop("bad input for argument 'Maxiter'")
+  if (!is.Numeric(imethod, allow = 1, integ = TRUE, posit = TRUE) ||
+     imethod > 3)
+    stop("argument 'imethod' must be 1 or 2 or 3")
+  if (!is.Numeric(shrinkage.init, allow = 1) || shrinkage.init < 0 ||
+     shrinkage.init > 1)
+    stop("bad input for argument 'shrinkage.init'")
+
+  if (!is.null(nsimEIM)) {
+    if (!is.Numeric(nsimEIM, allow = 1, integ = TRUE))
+      stop("bad input for argument 'nsimEIM'")
+    if (nsimEIM <= 10)
+      warning("argument 'nsimEIM' should be an integer ",
+               "greater than 10, say")
+  }
+
+  if (mode(lmuuu) != "character" && mode(lmuuu) != "name")
+    lmuuu = as.character(substitute(lmuuu))
+  if (mode(lsize) != "character" && mode(lsize) != "name")
+    lsize = as.character(substitute(lsize))
+  if (!is.list(emuuu)) emuuu = list()
+  if (!is.list(esize)) esize = list()
 
 
     if (!is.logical( parallel ) || length( parallel ) != 1)
-        stop("argument 'parallel' must be TRUE or FALSE")
+      stop("argument 'parallel' must be TRUE or FALSE")
     if ( parallel  && length(zero))
-        stop("need to set 'zero = NULL' when parallel = TRUE")
+      stop("need to set 'zero = NULL' when parallel = TRUE")
 
 
 
-    ans = 
-    new("vglmff",
-    blurb = c("Negative-binomial distribution\n\n",
+  ans = 
+  new("vglmff",
+  blurb = c("Negative-binomial distribution\n\n",
             "Links:    ",
-            namesof("mu", lmu, earg = emu), ", ",
-            namesof("k", lk, earg = ek), "\n",
+            namesof("mu",   lmuuu, earg = emuuu), ", ",
+            namesof("size", lsize, earg = esize), "\n",
             "Mean:     mu\n",
-            "Variance: mu * (1 + mu/k)"),
-    constraints = eval(substitute(expression({
-
-        dotzero <- .zero
-        Musual <- 2
-        eval(negzero.expression)
-
-        if ( .parallel && ncol(cbind(y)) > 1)
-            stop("univariate responses needed if parallel = TRUE")
-        constraints = cm.vgam(matrix(1, M, 1), x, .parallel, constraints)
-    }), list( .parallel = parallel, .zero = zero ))),
-    infos = eval(substitute(function(...) {
-      list(Musual = 2,
-           zero = .zero)
-    }, list( .zero = zero ))),
-    initialize = eval(substitute(expression({
-      assign("CQO.FastAlgorithm",
-            ( .lmu == "loge") && ( .lk == "loge"), envir = VGAM:::VGAMenv)
-      if (any(function.name == c("cqo","cao")) &&
-          is.Numeric( .zero, allow = 1) && .zero != -2)
-          stop("argument zero = -2 is required")
-
-      if (any(y < 0))
-        stop("negative values not allowed for the 'negbinomial' family")
-      if (any(round(y) != y))
-        stop("integer-values only allowed for the 'negbinomial' family")
-      y = as.matrix(y) 
-      M = 2 * ncol(y) 
-      NOS = ncoly = ncol(y)  # Number of species
-      predictors.names =
-       c(namesof(if (NOS == 1) "mu" else
-             paste("mu", 1:NOS, sep = ""), .lmu, earg = .emu, tag = FALSE),
-         namesof(if (NOS == 1) "k" else
-             paste("k",  1:NOS, sep = ""), .lk,  earg = .ek,  tag = FALSE))
-      predictors.names = predictors.names[interleave.VGAM(M, M = 2)]
-
-      if (is.null( .nsimEIM )) {
-         save.weight <- control$save.weight <- FALSE
-      }
+            "Variance: mu * (1 + mu / size)"),
+  constraints = eval(substitute(expression({
 
-      if (is.numeric( .mu.init ))
-        MU.INIT <- matrix( .mu.init, nrow(y), ncol(y), byrow = TRUE)
+    dotzero <- .zero
+    Musual <- 2
+    eval(negzero.expression)
 
-      if (!length(etastart)) {
-        mu.init = y
-        for(iii in 1:ncol(y)) {
-            use.this = if ( .method.init == 1) {
-                weighted.mean(y[,iii], w) + 1/16
-            } else if ( .method.init == 3) {
-                c(quantile(y[,iii], probs = .quantile.probs) + 1/16)
-            } else {
-                median(y[,iii]) + 1/16
-            }
+    if ( .parallel && ncol(cbind(y)) > 1)
+      stop("univariate responses needed if parallel = TRUE")
+    constraints = cm.vgam(matrix(1, M, 1), x, .parallel, constraints)
+  }), list( .parallel = parallel, .zero = zero ))),
 
-            if (is.numeric( .mu.init )) {
-                mu.init[, iii] = MU.INIT[, iii]
-            } else {
-              medabsres = median(abs(y[,iii] - use.this)) + 1/32
-              allowfun = function(z, maxtol=1) sign(z)*pmin(abs(z), maxtol)
-              mu.init[,iii] = use.this + (1 - .sinit) * allowfun(y[,iii] -
-                              use.this, maxtol=medabsres)
+  infos = eval(substitute(function(...) {
+    list(Musual = 2,
+         zero = .zero)
+  }, list( .zero = zero ))),
 
-              mu.init[,iii] = abs(mu.init[,iii]) + 1 / 1024
-            }
+  initialize = eval(substitute(expression({
+    Musual <- 2
 
+    assign("CQO.FastAlgorithm",
+          ( .lmuuu == "loge") && ( .lsize == "loge"),
+           envir = VGAM:::VGAMenv)
+    if (any(function.name == c("cqo","cao")) &&
+        is.Numeric( .zero, allow = 1) && .zero != -2)
+        stop("argument zero = -2 is required")
+
+    if (any(y < 0))
+      stop("negative values not allowed for the 'negbinomial' family")
+    if (any(round(y) != y))
+      stop("integer-values only allowed for the 'negbinomial' family")
+
+    y = as.matrix(y) 
+    M = 2 * ncol(y) 
+    NOS = ncoly = ncol(y)  # Number of species
+    predictors.names =
+      c(namesof(if (NOS == 1) "mu" else paste("mu",   1:NOS, sep = ""),
+                .lmuuu, earg = .emuuu, tag = FALSE),
+       namesof(if (NOS == 1) "size" else paste("size", 1:NOS, sep = ""),
+                .lsize, earg = .esize, tag = FALSE))
+    predictors.names = predictors.names[interleave.VGAM(M, M = 2)]
+
+    if (is.null( .nsimEIM )) {
+       save.weight <- control$save.weight <- FALSE
+    }
 
-        }
+    if (is.numeric( .mu.init ))
+      MU.INIT <- matrix( .mu.init, nrow(y), ncol(y), byrow = TRUE)
 
-        if ( is.Numeric( .k.init )) {
-            kay.init = matrix( .k.init, nr=n, nc=NOS, byrow = TRUE)
+    if (!length(etastart)) {
+      mu.init = y
+      for(iii in 1:ncol(y)) {
+        use.this = if ( .imethod == 1) {
+            weighted.mean(y[, iii], w) + 1/16
+        } else if ( .imethod == 3) {
+            c(quantile(y[, iii], probs = .quantile.probs) + 1/16)
         } else {
-            negbinomial.Loglikfun = function(kmat, y, x, w, extraargs) {
-                mu = extraargs
-                sum(w * dnbinom(x=y, mu=mu, size=kmat, log = TRUE))
-            }
-            k.grid = 2^((-7):7)
-            k.grid = 2^(seq(-8, 8, length = 40))
-            kay.init = matrix(0, nr=n, nc=NOS)
-            for(spp. in 1:NOS) {
-                kay.init[,spp.] = getMaxMin(k.grid,
-                                  objfun=negbinomial.Loglikfun,
-                                  y=y[,spp.], x=x, w=w,
-                                  extraargs= mu.init[,spp.])
-            }
+            median(y[, iii]) + 1/16
         }
-        etastart = cbind(theta2eta(mu.init, .lmu, earg = .emu),
-                         theta2eta(kay.init, .lk, earg = .ek))
-        etastart = etastart[,interleave.VGAM(M, M = 2), drop = FALSE]
-      }
-  }), list( .lmu = lmu, .lk = lk,
-            .emu = emu, .ek = ek, .mu.init = imu,
-            .k.init = ik, .quantile.probs = quantile.probs,
-            .sinit = shrinkage.init, .nsimEIM = nsimEIM, .zero = zero,
-            .method.init = method.init ))),
-    inverse = eval(substitute(function(eta, extra = NULL) {
-        NOS = ncol(eta) / 2
-        eta2theta(eta[,2*(1:NOS)-1, drop = FALSE], .lmu, earg = .emu)
-    }, list( .lmu = lmu, .emu = emu, .ek = ek ))),
-    last = eval(substitute(expression({
-        if (exists("CQO.FastAlgorithm", envir = VGAM:::VGAMenv))
-            rm("CQO.FastAlgorithm", envir = VGAM:::VGAMenv)
-        temp0303 = c(rep( .lmu, length = NOS), rep( .lk, length = NOS))
-        names(temp0303) = c(if (NOS == 1) "mu" else paste("mu", 1:NOS, sep = ""),
-                            if (NOS == 1) "k"  else paste("k",  1:NOS, sep = ""))
-        temp0303 = temp0303[interleave.VGAM(M, M = 2)]
-        misc$link = temp0303 # Already named
-        misc$earg = vector("list", M)
-        names(misc$earg) = names(misc$link)
-        for(ii in 1:NOS) {
-            misc$earg[[2*ii-1]] = .emu
-            misc$earg[[2*ii  ]] = .ek
-        }
-        misc$cutoff = .cutoff 
-        misc$method.init = .method.init 
-        misc$nsimEIM = .nsimEIM
-        misc$expected = TRUE
-        misc$shrinkage.init = .sinit
-    }), list( .lmu = lmu, .lk = lk, .cutoff = cutoff,
-              .emu = emu, .ek = ek, .nsimEIM = nsimEIM,
-              .sinit = shrinkage.init,
-              .method.init = method.init ))),
-    link = eval(substitute(function(mu, extra = NULL) {
-      temp = theta2eta(mu, .lmu, earg = .emu)
-      kayy = theta2eta(if (is.numeric( .ik)) .ik else 1.0, .lk, earg = .ek)
-      kayy = 0 * temp + kayy  # Right dimension now.
-      temp = cbind(temp, kayy)
-      temp[, interleave.VGAM(ncol(temp), M = 2), drop = FALSE]
-    }, list( .lmu = lmu, .emu = emu,
-             .lk  = lk,  .ek  =  ek, .ik = ik ))),
-    loglikelihood = eval(substitute(
-        function(mu, y, w, residuals = FALSE, eta, extra = NULL) {
-        NOS = ncol(eta) / 2
-        temp300 = eta[,2*(1:NOS), drop = FALSE]
-        if ( .lk == "loge") {
-            bigval = 28
-            temp300 = ifelse(temp300 >  bigval,  bigval, temp300)
-            temp300 = ifelse(temp300 < -bigval, -bigval, temp300)
-        }
-        kmat = eta2theta(temp300, .lk, earg = .ek)
 
-        if (residuals) stop("loglikelihood residuals not ",
-                            "implemented yet") else
-            sum(w * dnbinom(x=y, mu=mu, size=kmat, log = TRUE))
-    }, list( .lk = lk, .emu = emu, .ek = ek ))),
-    vfamily = c("negbinomial"),
-    deriv = eval(substitute(expression({
-        NOS = ncol(eta) / 2
-        M = ncol(eta)
-        temp3 = eta[,2*(1:NOS), drop = FALSE]
-        bigval = 28
-        temp3 = ifelse(temp3 >  bigval,  bigval, temp3)
-        temp3 = ifelse(temp3 < -bigval, -bigval, temp3)
-        kmat = eta2theta(temp3, .lk, earg = .ek)
-        dl.dmu = y/mu - (y+kmat)/(kmat+mu)
-        dl.dk = digamma(y+kmat) - digamma(kmat) - (y+kmat)/(mu+kmat) + 1 +
-                log(kmat/(kmat+mu))
-        dmu.deta = dtheta.deta(mu, .lmu, earg = .emu)
-        dk.deta = dtheta.deta(kmat, .lk, earg = .ek)
-        dthetas.detas = cbind(dmu.deta, dk.deta)
-        myderiv = w * cbind(dl.dmu, dl.dk) * dthetas.detas
-        myderiv[,interleave.VGAM(M, M = 2)]
-    }), list( .lmu = lmu, .lk = lk, .emu = emu, .ek = ek ))),
-    weight = eval(substitute(expression({
-        wz = matrix(as.numeric(NA), n, M)  # wz is 'diagonal' 
-        if (is.null( .nsimEIM)) {
-            fred2 = dotFortran(name = "enbin9", ans=double(n*NOS),
-                        as.double(kmat), as.double(mu), as.double( .cutoff ),
-                        as.integer(n), ok=as.integer(1), as.integer(NOS),
-                        sumpdf=double(1), as.double( .Machine$double.eps),
-                        as.integer( .Maxiter ))
-            if (fred2$ok != 1)
-                stop("error in Fortran subroutine exnbin9")
-            dim(fred2$ans) = c(n, NOS)
-            ed2l.dk2 = -fred2$ans - 1/kmat + 1/(kmat+mu)
-            wz[,2*(1:NOS)] = dk.deta^2 * ed2l.dk2
+        if (is.numeric( .mu.init )) {
+            mu.init[, iii] = MU.INIT[, iii]
         } else {
-            run.varcov = matrix(0, n, NOS)
-            ind1 = iam(NA, NA, M=M, both = TRUE, diag = TRUE)
-            for(ii in 1:( .nsimEIM )) {
-                ysim = rnbinom(n=n*NOS, mu=c(mu), size=c(kmat))
-                if (NOS > 1) dim(ysim) = c(n, NOS)
-                dl.dk = digamma(ysim+kmat) - digamma(kmat) -
-                        (ysim+kmat)/(mu+kmat) + 1 + log(kmat/(kmat+mu))
-                run.varcov = run.varcov + dl.dk^2
-            }
-            run.varcov = cbind(run.varcov / .nsimEIM)
-            wz[,2*(1:NOS)] = if (intercept.only)
-                matrix(colMeans(run.varcov),
-                       n, ncol(run.varcov), byrow = TRUE) else run.varcov
+          medabsres = median(abs(y[, iii] - use.this)) + 1/32
+          allowfun = function(z, maxtol=1) sign(z)*pmin(abs(z), maxtol)
+          mu.init[, iii] = use.this + (1 - .sinit) * allowfun(y[, iii] -
+                          use.this, maxtol=medabsres)
 
-            wz[,2*(1:NOS)] = wz[,2*(1:NOS)] * dk.deta^2
+          mu.init[, iii] = abs(mu.init[, iii]) + 1 / 1024
         }
-        ed2l.dmu2 = 1/mu - 1/(mu+kmat)
-        wz[,2*(1:NOS)-1] = dmu.deta^2 * ed2l.dmu2
-        w * wz
-    }), list( .cutoff = cutoff, .Maxiter = Maxiter, .nsimEIM = nsimEIM ))))
+      } # of for(iii)
 
-    if (deviance.arg) ans at deviance = eval(substitute(
-        function(mu, y, w, residuals = FALSE, eta, extra = NULL) {
-        NOS = ncol(eta) / 2
-        temp300 =  eta[,2*(1:NOS), drop = FALSE]
-        if ( .lk == "loge") {
-            bigval = 28
-            temp300[temp300 >  bigval] =  bigval
-            temp300[temp300 < -bigval] = -bigval
-        } else stop("can only handle the 'loge' link")
-        k =  eta2theta(temp300, .lk, earg = .ek)
-        devi = 2 * (y*log(ifelse(y < 1, 1, y)/mu) + (y+k)*log((mu+k)/(k+y)))
-        if (residuals)
-           sign(y - mu) * sqrt(abs(devi) * w) else
-           sum(w * devi)
-    }, list( .lk = lk, .emu = emu, .ek = ek )))
+      if ( is.Numeric( .k.init )) {
+        kay.init = matrix( .k.init, nrow = n, ncol = NOS, byrow = TRUE)
+      } else {
+        negbinomial.Loglikfun = function(kmat, y, x, w, extraargs) {
+            mu = extraargs
+            sum(w * dnbinom(x = y, mu = mu, size = kmat, log = TRUE))
+        }
+        k.grid = 2^((-7):7)
+        k.grid = 2^(seq(-8, 8, length = 40))
+        kay.init = matrix(0, nr=n, nc=NOS)
+        for(spp. in 1:NOS) {
+          kay.init[,spp.] = getMaxMin(k.grid,
+                            objfun=negbinomial.Loglikfun,
+                            y = y[,spp.], x = x, w = w,
+                            extraargs= mu.init[,spp.])
+        }
+      }
+      etastart = cbind(theta2eta(mu.init,  .lmuuu, earg = .emuuu),
+                       theta2eta(kay.init, .lsize, earg = .esize))
+      etastart = etastart[,interleave.VGAM(M, M = 2), drop = FALSE]
+      }
+  }), list( .lmuuu = lmuuu, .lsize = lsize,
+            .emuuu = emuuu, .esize = esize,
+            .mu.init = imu,
+            .k.init = isize, .quantile.probs = quantile.probs,
+            .sinit = shrinkage.init, .nsimEIM = nsimEIM,
+            .zero = zero, .imethod = imethod ))),
+  inverse = eval(substitute(function(eta, extra = NULL) {
+      NOS = ncol(eta) / 2
+      eta2theta(eta[, 2*(1:NOS)-1, drop = FALSE],
+                .lmuuu, earg = .emuuu)
+  }, list( .lmuuu = lmuuu, .emuuu = emuuu,
+           .esize = esize ))),
+  last = eval(substitute(expression({
+      if (exists("CQO.FastAlgorithm", envir = VGAM:::VGAMenv))
+          rm("CQO.FastAlgorithm", envir = VGAM:::VGAMenv)
+
+      temp0303 = c(rep( .lmuuu, length = NOS),
+                   rep( .lsize, length = NOS))
+      names(temp0303) = c(if (NOS == 1) "mu"   else
+                          paste("mu",   1:NOS, sep = ""),
+                          if (NOS == 1) "size" else
+                          paste("size", 1:NOS, sep = ""))
+      temp0303 = temp0303[interleave.VGAM(M, M = 2)]
+      misc$link = temp0303 # Already named
+      misc$earg = vector("list", M)
+      names(misc$earg) = names(misc$link)
+      for(ii in 1:NOS) {
+          misc$earg[[2*ii-1]] = .emuuu
+          misc$earg[[2*ii  ]] = .esize
+      }
+      misc$cutoff = .cutoff 
+      misc$imethod = .imethod 
+      misc$nsimEIM = .nsimEIM
+      misc$expected = TRUE
+      misc$shrinkage.init = .sinit
+  }), list( .lmuuu = lmuuu, .lsize = lsize,
+            .emuuu = emuuu, .esize = esize,
+            .cutoff = cutoff,
+            .nsimEIM = nsimEIM,
+            .sinit = shrinkage.init,
+            .imethod = imethod ))),
+  link = eval(substitute(function(mu, extra = NULL) {
+    temp = theta2eta(mu, .lmuuu, earg = .emuuu)
+    kayy = theta2eta(if (is.numeric( .isize)) .isize else 1.0,
+                     .lsize, earg = .esize)
+    kayy = 0 * temp + kayy  # Right dimension now.
+    temp = cbind(temp, kayy)
+    temp[, interleave.VGAM(ncol(temp), M = 2), drop = FALSE]
+  }, list( .lmuuu = lmuuu, .emuuu = emuuu,
+           .lsize = lsize, .esize = esize,
+           .isize = isize ))),
+  loglikelihood = eval(substitute(
+      function(mu, y, w, residuals = FALSE, eta, extra = NULL) {
+      NOS = ncol(eta) / 2
+      temp300 = eta[, 2*(1:NOS), drop = FALSE]
+      if ( .lsize == "loge") {
+          bigval = 28
+          temp300 = ifelse(temp300 >  bigval,  bigval, temp300)
+          temp300 = ifelse(temp300 < -bigval, -bigval, temp300)
+      }
+      kmat = eta2theta(temp300, .lsize, earg = .esize)
+      if (residuals) stop("loglikelihood residuals not ",
+                          "implemented yet") else
+        sum(w * dnbinom(x = y, mu = mu, size = kmat, log = TRUE))
+  }, list( .lsize = lsize, .emu = emu, .esize = esize ))),
+  vfamily = c("negbinomial"),
+  deriv = eval(substitute(expression({
+    NOS = ncol(eta) / 2
+    M = ncol(eta)
+    temp3 = eta[, 2*(1:NOS), drop = FALSE]
+    bigval = 28
+    temp3 = ifelse(temp3 >  bigval,  bigval, temp3)
+    temp3 = ifelse(temp3 < -bigval, -bigval, temp3)
+    kmat = eta2theta(temp3, .lsize, earg = .esize)
+
+    dl.dmu = y/mu - (y+kmat)/(kmat+mu)
+    dl.dk = digamma(y+kmat) - digamma(kmat) - (y+kmat)/(mu+kmat) + 1 +
+            log(kmat/(kmat+mu))
+
+    dmu.deta = dtheta.deta(mu, .lmu, earg = .emu)
+    dk.deta = dtheta.deta(kmat, .lsize, earg = .esize)
+
+    dthetas.detas = cbind(dmu.deta, dk.deta)
+    myderiv = c(w) * cbind(dl.dmu, dl.dk) * dthetas.detas
+    myderiv[, interleave.VGAM(M, M = 2)]
+  }), list( .lmu = lmu, .lsize = lsize, .emu = emu, .esize = esize ))),
+  weight = eval(substitute(expression({
+    wz = matrix(as.numeric(NA), n, M)  # wz is 'diagonal' 
+    if (is.null( .nsimEIM)) {
+      fred2 = dotFortran(name = "enbin9", ans = double(n*NOS),
+                  as.double(kmat), as.double(mu), as.double( .cutoff ),
+                  as.integer(n), ok = as.integer(1), as.integer(NOS),
+                  sumpdf = double(1), as.double( .Machine$double.eps ),
+                  as.integer( .Maxiter ))
+      if (fred2$ok != 1)
+        stop("error in Fortran subroutine exnbin9")
+      dim(fred2$ans) = c(n, NOS)
+      ed2l.dk2 = -fred2$ans - 1/kmat + 1/(kmat+mu)
+      wz[,2*(1:NOS)] = dk.deta^2 * ed2l.dk2
+    } else {
+      run.varcov = matrix(0, n, NOS)
+      ind1 = iam(NA, NA, M = M, both = TRUE, diag = TRUE)
+      for(ii in 1:( .nsimEIM )) {
+        ysim = rnbinom(n = n*NOS, mu = c(mu), size = c(kmat))
+        if (NOS > 1) dim(ysim) = c(n, NOS)
+          dl.dk = digamma(ysim+kmat) - digamma(kmat) -
+                  (ysim+kmat)/(mu+kmat) + 1 + log(kmat/(kmat+mu))
+              run.varcov = run.varcov + dl.dk^2
+          }
+          run.varcov = cbind(run.varcov / .nsimEIM)
+          wz[, 2*(1:NOS)] = if (intercept.only)
+              matrix(colMeans(run.varcov),
+                     n, ncol(run.varcov), byrow = TRUE) else run.varcov
 
-    ans
-}
+          wz[, 2*(1:NOS)] = wz[, 2*(1:NOS)] * dk.deta^2
+      }
+      ed2l.dmu2 = 1/mu - 1/(mu+kmat)
+      wz[, 2*(1:NOS)-1] = dmu.deta^2 * ed2l.dmu2
+      c(w) * wz
+  }), list( .cutoff = cutoff, .Maxiter = Maxiter,
+            .nsimEIM = nsimEIM ))))
 
 
- negbin.ab = function(link.alpha  = "loge", link.k  = "loge",
-                     ealpha=list(), ek=list(),
-                     k.init=1,
-                     zero = 2,
-                     cutoff=0.995)
-{
 
+  if (deviance.arg) ans at deviance = eval(substitute(
+      function(mu, y, w, residuals = FALSE, eta, extra = NULL) {
+      NOS = ncol(eta) / 2
+      temp300 =  eta[,2*(1:NOS), drop = FALSE]
+      if ( .lsize == "loge") {
+          bigval = 28
+          temp300[temp300 >  bigval] =  bigval
+          temp300[temp300 < -bigval] = -bigval
+      } else stop("can only handle the 'loge' link")
+      k =  eta2theta(temp300, .lsize, earg = .esize)
+      devi = 2 * (y*log(ifelse(y < 1, 1, y)/mu) + (y+k)*log((mu+k)/(k+y)))
+      if (residuals)
+         sign(y - mu) * sqrt(abs(devi) * w) else
+         sum(w * devi)
+  }, list( .lsize = lsize, .emu = emu, .esize = esize )))
 
+  ans
+}
 
-    if (!is.Numeric(cutoff, allow = 1) || cutoff<0.8 || cutoff>=1)
-        stop("range error in the argument cutoff")
-    if (length(zero) && !is.Numeric(zero, integer = TRUE, posit = TRUE))
-        stop("bad input for argument 'zero'")
 
-    if (mode(link.alpha) != "character" && mode(link.alpha) != "name")
-        link.alpha = as.character(substitute(link.alpha))
-    if (mode(link.k) != "character" && mode(link.k) != "name")
-        link.k = as.character(substitute(link.k))
-    if (!is.list(ealpha)) ealpha = list()
-    if (!is.list(ek)) ek = list()
 
-    new("vglmff",
-    blurb = c("Negative-binomial distribution\n\n",
-            "Links:    ",
-            namesof("alpha", link.alpha, earg = ealpha), ", ",
-            namesof("k", link.k, earg = ek),
-            "\n",
-            "Mean:     alpha * k",
-            "\n",
-            "Variance: alpha * k * (1 + alpha)"),
-    constraints = eval(substitute(expression({
-        constraints = cm.zero.vgam(constraints, x, .zero, M)
-    }), list( .zero = zero ))),
-    initialize = eval(substitute(expression({
-        if (ncol(cbind(y)) != 1)
-            stop("response must be a vector or a one-column matrix")
-        predictors.names =
-        c(namesof("alpha", .link.alpha, earg = .ealpha, tag = FALSE),
-          namesof("k", .link.k, earg = .ek, tag = FALSE))
 
-        if (!length(etastart)) {
-            etastart = cbind(
-            theta2eta((y + 1/8) / .k.init, .link.alpha, earg = .ealpha),
-            theta2eta( .k.init, .link.k, earg = .ek))
-        }
-    }), list( .link.alpha=link.alpha, .link.k=link.k, .k.init=k.init,
-              .ealpha=ealpha, .ek = ek ))),
-    inverse = eval(substitute(function(eta, extra = NULL) {
-        alpha = eta2theta(eta[,1], .link.alpha, earg = .ealpha)
-        k = eta2theta(eta[,2], .link.k, earg = .ek)
-        alpha * k 
-    }, list( .link.alpha=link.alpha, .link.k=link.k,
-              .ealpha=ealpha, .ek = ek ))),
-    last = eval(substitute(expression({
-        misc$link =    c(alpha = .link.alpha, k = .link.k)
-        misc$earg = list(alpha = .ealpha,     k = .ek )
-    }), list( .link.alpha = link.alpha, .link.k = link.k,
-              .ealpha = ealpha, .ek = ek ))),
-    loglikelihood = eval(substitute(
-            function(mu, y, w, residuals = FALSE, eta, extra = NULL) {
-        alpha = eta2theta(eta[,1], .link.alpha, earg = .ealpha)
-        kvec = eta2theta(eta[,2], .link.k, earg = .ek)
-        if (residuals) stop("loglikelihood residuals not ",
-                            "implemented yet") else {
-            sum(w * dnbinom(x=y, mu=kvec*alpha, size=kvec, log = TRUE))
-        }
-    }, list( .link.alpha=link.alpha, .link.k=link.k,
-              .ealpha=ealpha, .ek = ek ))),
-    vfamily = c("negbin.ab"),
-    deriv = eval(substitute(expression({
-        alpha = eta2theta(eta[,1], .link.alpha, earg = .ealpha)
-        k = eta2theta(eta[,2], .link.k, earg = .ek)
-        dl.dalpha = (y/alpha - k)/(1+alpha)
-        dl.dk = digamma(y+k) - digamma(k) - log1p(alpha)
-        dalpha.deta = dtheta.deta(alpha, .link.alpha, earg = .ealpha)
-        dk.deta = dtheta.deta(k, .link.k, earg = .ek)
-        cbind(w * dl.dalpha * dalpha.deta, w * dl.dk * dk.deta)
-    }), list( .link.alpha=link.alpha, .link.k=link.k,
-              .ealpha=ealpha, .ek = ek ))),
-    weight = eval(substitute(expression({
-        wz = matrix(as.numeric(NA), n, dimm(M))    # 3==dimm(M)
-        ed2l.dalpha2 = k/(alpha*(1+alpha))
-        ed2l.dalphak =  1/(1+alpha)   # Not -1/(1+alpha)
 
-        fred = dotFortran(name = "enbin8",
-                      ans=double(n),
-                      as.double(k),
-                      as.double(1/(1+alpha)),
-                      as.double( .cutoff ),
-                      as.integer(n), ok=as.integer(1), as.integer(1),
-                      sumpdf=double(1), macheps=as.double( .Machine$double.eps))
-        if (fred$ok != 1)
-            stop("error in Fortran subroutine enbin8")
-        ed2l.dk2 = -fred$ans
 
-        wz[,iam(1,1,M)] = dalpha.deta^2 * ed2l.dalpha2
-        wz[,iam(2,2,M)] = dk.deta^2 * ed2l.dk2
-        wz[,iam(1,2,M)] = dk.deta * dalpha.deta * ed2l.dalphak 
 
-        w * wz
-    }), list( .cutoff = cutoff,
-              .ealpha=ealpha, .ek = ek ))))
+polya.control <- function(save.weight = TRUE, ...)
+{
+    list(save.weight = save.weight)
 }
 
 
 
- if (FALSE)
-nbmud = function(lmu = c("loge","identity","reciprocal"),
-                 k.init = 1,
-                 zero = -2,
-                 cutoff = 0.995,
-                 deviance.arg = FALSE)
+ polya <-
+  function(lprob = "logit", lsize = "loge",
+           eprob = list(),  esize = list(),
+           iprob = NULL,    isize = NULL,
+           quantile.probs = 0.75,
+           nsimEIM = 100,
+           deviance.arg = FALSE, imethod = 1,
+           shrinkage.init = 0.95, zero = -2)
 {
-    ans = negbinomial(link.mu = lmu[1],
-                    link.k = "reciprocal",
-                    k.init = k.init,
-                    zero = zero,
-                    cutoff = cutoff,
-                    deviance.arg=deviance.arg)
-    ans at vfamily = "nbmud"
-    ans
-}
 
 
 
+  if (length(iprob) && !is.Numeric(iprob, posit = TRUE))
+    stop("bad input for argument 'iprob'")
+  if (length(isize) && !is.Numeric(isize, posit = TRUE))
+    stop("bad input for argument 'isize'")
 
- if (FALSE)
- neg.binomial = function(link.p = "logit", link.k = "loge",
-                        ep=list(), ek=list(),
-                        zero = 2,
-                        ik = NULL,
-                        cutoff=0.995)
-{
-
+  if (!is.Numeric(imethod, allow = 1, integ = TRUE, posit = TRUE) ||
+     imethod > 3)
+     stop("argument 'imethod' must be 1 or 2 or 3")
+  if (!is.Numeric(shrinkage.init, allow = 1) || shrinkage.init < 0 ||
+     shrinkage.init > 1)
+     stop("bad input for argument 'shrinkage.init'")
 
+  if (!is.Numeric(nsimEIM, allow = 1, integ = TRUE))
+    stop("bad input for argument 'nsimEIM'")
+  if (nsimEIM <= 10)
+    warning("argument 'nsimEIM' should be an integer ",
+            "greater than 10, say")
 
-    if (!is.Numeric(cutoff, allow = 1) || cutoff<0.8 || cutoff>=1)
-        stop("range error in the argument cutoff")
+  if (mode(lprob) != "character" && mode(lprob) != "name")
+    lprob = as.character(substitute(lprob))
+  if (mode(lsize) != "character" && mode(lsize) != "name")
+    lsize = as.character(substitute(lsize))
+  if (!is.list(eprob)) eprob = list()
+  if (!is.list(esize)) esize = list()
 
-    if (mode(link.p) != "character" && mode(link.p) != "name")
-        link.p = as.character(substitute(link.p))
-    if (link.p == "canonical")
-        link.p = "logc"
-    if (mode(link.k) != "character" && mode(link.k) != "name")
-        link.k = as.character(substitute(link.k))
-    if (!is.list(ep)) ep = list()
-    if (!is.list(ek)) ek = list()
 
-    new("vglmff",
-    blurb = c("Negative-binomial distribution\n\n",
+  ans = 
+  new("vglmff",
+  blurb = c("Polya (negative-binomial) distribution\n\n",
             "Links:    ",
-            namesof("p", link.p, earg = ep), ", ",
-            namesof("k", link.k, earg = ek), "; mu=k*(1-p)/p",
-            "\n",
-            "Variance: mu(1 + mu/k)"),
-    constraints = eval(substitute(expression({
-        constraints = cm.zero.vgam(constraints, x, .zero, M)
-    }), list( .zero = zero ))),
-    initialize = eval(substitute(expression({
-        if (ncol(cbind(y)) != 1)
-            stop("response must be a vector or a one-column matrix")
-        y = as.numeric(y)
-        if (any(y < 0))
-            stop("response must be non-negative")
-        if (max(abs(y - round(y )))>0.00001)
-            stop("response must be integer-valued")
+            namesof("prob", lprob, earg = eprob), ", ",
+            namesof("size", lsize, earg = esize), "\n",
+            "Mean:     size * (1 - prob) / prob\n",
+            "Variance: mean / prob"),
+  constraints = eval(substitute(expression({
 
-        predictors.names =
-        c(namesof("p", .link.p, earg = .ep, tag = FALSE),
-          namesof("k", .link.k, earg = .ek, tag = FALSE))
+    dotzero <- .zero
+    Musual <- 2
+    eval(negzero.expression)
 
+  }), list( .zero = zero ))),
 
+  infos = eval(substitute(function(...) {
+    list(Musual = 2,
+         zero = .zero)
+  }, list( .zero = zero ))),
 
-        junk = lm(y ~ x - 1, weight=w, smart= FALSE) # singular.ok = FALSE,
-        var.y.est = summary(junk)$sigma^2
-        mu.adj = fitted(junk)
+  initialize = eval(substitute(expression({
+    Musual = 2
+    if (any(function.name == c("cqo", "cao")))
+      stop("polya() does not work with cqo() or cao(). ",
+           "Try negbinomial()")
+
+    if (any(y < 0))
+      stop("negative values not allowed for the 'polya' family")
+    if (any(round(y) != y))
+      stop("integer-values only allowed for the 'polya' family")
+
+    y = as.matrix(y)
+    M = 2 * ncol(y)
+    NOS = ncoly = ncol(y)  # Number of species
+
+    predictors.names =
+      c(namesof(if (NOS == 1) "prob" else
+                paste("prob", 1:NOS, sep = ""),
+               .lprob, earg = .eprob, tag = FALSE),
+        namesof(if (NOS == 1) "size" else
+                paste("size", 1:NOS, sep = ""),
+               .lsize,  earg = .esize,  tag = FALSE))
+    predictors.names = predictors.names[interleave.VGAM(M, M = 2)]
+
+    if (is.null( .nsimEIM )) {
+       save.weight <- control$save.weight <- FALSE
+    }
 
-        if (FALSE) { 
-            mu = rep(weighted.mean(y, w=w), len = length(y))
-            mu = rep(median(rep(y+0.167, times=w)), len = length(y))
+    
+    PROB.INIT <- if (is.numeric( .pinit )) {
+      matrix( .pinit, nrow(y), ncol(y), byrow = TRUE)
+    } else {
+      NULL
+    }
 
-            k = mean(rep(mu^2 / (var.y.est - mu), w), trim=0.05)
-            k = rep(k, length(mu))
+    if (!length(etastart)) {
+      mu.init = y
+      for(iii in 1:ncol(y)) {
+        use.this = if ( .imethod == 1) {
+          weighted.mean(y[, iii], w) + 1/16
+        } else if ( .imethod == 3) {
+          c(quantile(y[, iii], probs = .quantile.probs) + 1/16)
         } else {
-            mu = mu.adj
-            mu[mu <= 0] = min(mu[mu > 0])
-            k = mu.adj^2 / (var.y.est - mu.adj)
-            k[k <= 0] = quantile(k[k>0], prob=0.02)
+          median(y[, iii]) + 1/16
         }
 
-        if (length( .ik )) {
-            mu = median(rep(y, times=w))
-            k =  rep( .ik , len = length(y))
+        if (FALSE) {
+          mu.init[, iii] = MU.INIT[, iii]
+        } else {
+          medabsres = median(abs(y[, iii] - use.this)) + 1/32
+          allowfun = function(z, maxtol = 1) sign(z) * pmin(abs(z), maxtol)
+          mu.init[, iii] = use.this + (1 - .sinit) * allowfun(y[, iii] -
+                          use.this, maxtol = medabsres)
+
+          mu.init[, iii] = abs(mu.init[, iii]) + 1 / 1024
         }
-    
-        if (!length(etastart)) {
-            prob = k / (k + mu)
-            etastart = cbind(theta2eta(prob, .link.p, earg = .ep),
-                              theta2eta(k, .link.k, earg = .ek))
+      }
+
+
+
+      if ( is.Numeric( .kinit )) {
+        kayy.init = matrix( .kinit, nrow = n, ncol = NOS, byrow = TRUE)
+      } else {
+        negbinomial.Loglikfun = function(kmat, y, x, w, extraargs) {
+            mu = extraargs
+            sum(w * dnbinom(x = y, mu = mu, size = kmat, log = TRUE))
+        }
+        k.grid = 2^((-7):7)
+        k.grid = 2^(seq(-8, 8, length = 40))
+        kayy.init = matrix(0, nrow = n, ncol = NOS)
+        for(spp. in 1:NOS) {
+          kayy.init[,spp.] = getMaxMin(k.grid,
+                             objfun=negbinomial.Loglikfun,
+                             y = y[,spp.], x = x, w = w,
+                             extraargs= mu.init[,spp.])
         }
-    }), list( .link.p=link.p, .link.k=link.k, .ik=ik,
-              .ep = ep, .ek = ek ))),
-    inverse = eval(substitute(function(eta, extra = NULL) {
-        prob = eta2theta(eta[,1], .link.p, earg = .ep)
-        k = eta2theta(eta[,2], .link.k, earg = .ek)
-        k * (1 - prob) / prob
-    }, list( .link.p=link.p, .link.k=link.k,
-              .ep = ep, .ek = ek ))),
-    last = eval(substitute(expression({
-        misc$link =    c(p = .link.p, k = .link.k )
-        misc$earg = list(p = .ep,     k = .ek )
-    }), list( .link.p=link.p, .link.k=link.k,
-              .ep = ep, .ek = ek ))),
-    loglikelihood = eval(substitute(
-        function(mu, y, w, residuals = FALSE, eta, extra = NULL) {
-        prob = eta2theta(eta[,1], .link.p, earg = .ep)
-        k = eta2theta(eta[,2], .link.k, earg = .ek)
-        if (residuals) stop("loglikelihood residuals not ",
-                            "implemented yet") else
-        sum(w * (y * log1p(-prob) + k * log(prob) + lgamma(y+k) -
-                 lgamma(k) - lgamma(y+1 )))
-    }, list( .link.p=link.p, .link.k=link.k,
-              .ep = ep, .ek = ek ))),
-    vfamily = c("neg.binomial"),
-    deriv = eval(substitute(expression({
-        prob = eta2theta(eta[,1], .link.p, earg = .ep)
-        k = eta2theta(eta[,2], .link.k, earg = .ek)
-        dl.dp = k/prob - y/(1-prob)
-        dl.dk = log(prob) + digamma(y+k) - digamma(k)
-        dp.deta = dtheta.deta(prob, .link.p, earg = .ep)
-        dk.deta = dtheta.deta(k, .link.k, earg = .ek)
-        w * cbind(dl.dp * dp.deta, dl.dk * dk.deta)
-    }), list( .link.p=link.p, .link.k=link.k,
-              .ep = ep, .ek = ek ))),
-    weight = eval(substitute(expression({
-        wz = matrix(as.numeric(NA), n, dimm(M))    # 3==dimm(M)
-        d2l.dpk = 1/prob
-
-
-        ed2l.dp2 = -k/(prob^2 * (1-prob))      # "e" for expected value
-        fred = dotFortran(name = "exnbin",
-                      ans=double(n),
-                      as.double(k),
-                      as.double(prob),
-                      as.double( .cutoff ),
-                      as.integer(n), ok=as.integer(1), as.integer(1),
-                      sumpdf=double(1))
-        if (fred$ok != 1)
-            stop("error in Fortran subroutine exnbin")
-
-        ed2l.dk2 = fred$ans
-
-        wz[,iam(1,1,M)] = dp.deta^2 * ed2l.dp2
-        wz[,iam(1,2,M)] = d2l.dpk * dp.deta * dk.deta #ed2l.dpk=d2l.dpk
-        wz[,iam(2,2,M)] = dk.deta^2 * ed2l.dk2
-        wz = -w * wz
-        wz
-    }), list( .cutoff = cutoff,
-              .ep = ep, .ek = ek ))))
-}
+      }
 
+      prob.init = if (length(PROB.INIT)) PROB.INIT else
+                  kayy.init / (kayy.init + mu.init)
 
 
- if (FALSE)
- neg.binomial.k = function(k, link = "logit", earg = list(), expected = TRUE, ...)
-{
+      etastart = cbind(theta2eta(prob.init, .lprob, earg = .eprob),
+                       theta2eta(kayy.init, .lsize, earg = .esize))
+      etastart = etastart[, interleave.VGAM(M, M = Musual), drop = FALSE]
+      }
+  }), list( .lprob = lprob, .lsize = lsize,
+            .eprob = eprob, .esize = esize,
+            .pinit = iprob, .kinit = isize,
+            .quantile.probs = quantile.probs,
+            .sinit = shrinkage.init, .nsimEIM = nsimEIM, .zero = zero,
+            .imethod = imethod ))),
+  inverse = eval(substitute(function(eta, extra = NULL) {
+    Musual = 2
+    NOS = ncol(eta) / Musual
+    pmat = eta2theta(eta[, Musual*(1:NOS) - 1, drop = FALSE],
+                     .lprob, earg = .eprob)
+    kmat = eta2theta(eta[, Musual*(1:NOS)-  0, drop = FALSE],
+                     .lsize, earg = .esize)
+    kmat / (kmat + pmat)
+  }, list( .lprob = lprob, .eprob = eprob,
+           .lsize = lsize, .esize = esize ))),
+  last = eval(substitute(expression({
+    temp0303 = c(rep( .lprob, length = NOS),
+                 rep( .lsize, length = NOS))
+    names(temp0303) =
+      c(if (NOS == 1) "prob" else paste("prob", 1:NOS, sep = ""),
+        if (NOS == 1) "size" else paste("size", 1:NOS, sep = ""))
+    temp0303 = temp0303[interleave.VGAM(M, M = 2)]
+    misc$link = temp0303 # Already named
+
+    misc$earg = vector("list", M)
+    names(misc$earg) = names(misc$link)
+    for(ii in 1:NOS) {
+        misc$earg[[2*ii-1]] = .eprob
+        misc$earg[[2*ii  ]] = .esize
+    }
 
-    if (!is.Numeric(k, allow = 1, posit = TRUE))
-        stop("bad input for argument argument 'k'")
-    if (mode(link) != "character" && mode(link) != "name")
-        link = as.character(substitute(link))
-    if (!is.list(earg)) earg = list()
+    misc$isize = .isize  
+    misc$imethod = .imethod 
+    misc$nsimEIM = .nsimEIM
+    misc$expected = TRUE
+    misc$shrinkage.init = .sinit
+    misc$Musual = 2
+  }), list( .lprob = lprob, .lsize = lsize,
+            .eprob = eprob, .esize = esize,
+            .isize = isize,
+            .nsimEIM = nsimEIM,
+            .sinit = shrinkage.init, .imethod = imethod ))),
 
-    new("vglmff",
-    blurb = c("Negative-binomial distribution with k known and p unknown\n",
-            "(k = ", k, ") ", 
-            if (k == 1) "Geometric\n\n" else "\n\n",
-            "Links:    ",
-            namesof("p", link, earg = earg), "; p = ",k,"/(",k,"+mu)",
-            "\n",
-            "Variance: ",
-            if (k == 1) "Geometric: mu(1+mu)" else 
-                   paste("mu(1 + mu/",k,")", sep = "")),
-    deviance = eval(substitute(
-        function(mu, y, w, residuals = FALSE, eta, extra = NULL) {
-        prob = .k / ( .k + mu)
-        devy = .k * log( .k / ( .k + y))
-        nz = y != 0
-        devy[nz] = devy[nz] + y[nz] * log(y[nz] / ( .k + y[nz]))
-        devmu = y * log1p(-prob) + .k * log(prob)
-        devi = 2 * (devy - devmu)
-        if (residuals)
-           sign(y - mu) * sqrt(abs(devi) * w) else
-           sum(w * devi)
-    }, list( .link = link, .earg = earg, .k = k ))),
-    initialize = eval(substitute(expression({
-        predictors.names = namesof("p", .link, earg = .ep, tag = FALSE)
-        mu = y + 0.167 * (y == 0)
 
-        if (!length(etastart)) {
-            prob = .k / ( .k + mu)
-            etastart = theta2eta(prob, .link, earg = .earg)
-        }
-    }), list( .link = link, .earg = earg, .k = k ))),
-    inverse = eval(substitute(function(eta, extra = NULL) {
-        prob = eta2theta(eta, .link, earg = .earg)
-        .k * (1 - prob) / prob
-    }, list( .link = link, .earg = earg, .k = k ))),
-    last = eval(substitute(expression({
-        misc$link =    c(p = .link)
-        misc$earg = list(p = .earg)
-        misc$k = .k
-    }), list( .link = link, .earg = earg, .k = k ))),
-    loglikelihood = eval(substitute(
-        function(mu, y, w, residuals = FALSE, eta, extra = NULL) {
-        prob = eta2theta(eta, .link, earg = .earg)
-        if (residuals) stop("loglikelihood residuals not ",
-                            "implemented yet") else
-        sum(w * (y * log1p(-prob) + .k * log(prob) + lgamma(y+ .k) -
-                 lgamma( .k ) - lgamma(y+1 )))
-    }, list( .link = link, .earg = earg, .k = k ))),
-    vfamily = c("neg.binomial.k"),
-    deriv = eval(substitute(expression({
-        prob = .k / ( .k + mu)
-        dp.deta = dtheta.deta(prob, .link, earg = .earg)
-        w * ( .k/prob - y/(1-prob)) * dp.deta
-    }), list( .link = link, .earg = earg, .k = k ))),
-    weight = eval(substitute(expression({
-        wz = dp.deta^2 * (y/(1 - prob)^2 + .k/prob^2) 
-        if (! .expected) {
-            d2pdeta2 = d2theta.deta2(prob, .link, earg = .earg)
-            wz = wz - d2pdeta2 * ( .k/prob - y/(1-prob))
-        }
-        w * wz
-    }), list( .link = link, .earg = earg, .k = k, .expected = expected ))))
-}
+  loglikelihood = eval(substitute(
+    function(mu, y, w, residuals = FALSE, eta, extra = NULL) {
+    Musual = 2
+    NOS = ncol(eta) / Musual
+    pmat  = eta2theta(eta[, Musual*(1:NOS) - 1, drop = FALSE],
+                      .lprob, earg = .eprob)
+    temp300 =         eta[, Musual*(1:NOS)    , drop = FALSE]
+    if ( .lsize == "loge") {
+      bigval = 28
+      temp300 = ifelse(temp300 >  bigval,  bigval, temp300)
+      temp300 = ifelse(temp300 < -bigval, -bigval, temp300)
+    }
+    kmat = eta2theta(temp300, .lsize, earg = .esize)
+    if (residuals) stop("loglikelihood residuals not ",
+                        "implemented yet") else
+      sum(w * dnbinom(x = y, prob = pmat, size = kmat, log = TRUE))
+  }, list( .lsize = lsize, .lprob = lprob,
+           .esize = esize, .eprob = eprob ))),
+  vfamily = c("polya"),
+  deriv = eval(substitute(expression({
+    Musual = 2
+    NOS = ncol(eta) / Musual
+    M = ncol(eta)
+
+    pmat  = eta2theta(eta[, Musual*(1:NOS) - 1, drop = FALSE],
+                      .lprob, earg = .eprob)
+    temp3 =           eta[, Musual*(1:NOS)    , drop = FALSE]
+    if ( .lsize == "loge") {
+      bigval = 28
+      temp3 = ifelse(temp3 >  bigval,  bigval, temp3)
+      temp3 = ifelse(temp3 < -bigval, -bigval, temp3)
+    }
+    kmat = eta2theta(temp3, .lsize, earg = .esize)
+
+    dl.dprob = kmat / pmat - y / (1.0 - pmat)
+    dl.dkayy = digamma(y + kmat) - digamma(kmat) + log(pmat)
+
+    dprob.deta = dtheta.deta(pmat, .lprob, earg = .eprob)
+    dkayy.deta = dtheta.deta(kmat, .lsize, earg = .esize)
+    dthetas.detas = cbind(dprob.deta, dkayy.deta)
+    dThetas.detas = dthetas.detas[, interleave.VGAM(M, M = Musual)]
+    myderiv = c(w) * cbind(dl.dprob, dl.dkayy) * dthetas.detas
+    myderiv[, interleave.VGAM(M, M = Musual)]
+  }), list( .lprob = lprob, .lsize = lsize,
+            .eprob = eprob, .esize = esize ))),
+  weight = eval(substitute(expression({
+    wz = matrix(0.0, n, M + M - 1)  # wz is 'tridiagonal' 
+
+    ind1 = iam(NA, NA, M = Musual, both = TRUE, diag = TRUE)
+    mumat = as.matrix(mu)
+
+
+    for(spp. in 1:NOS) {
+      run.varcov = 0
+      kvec = kmat[, spp.]
+      pvec = pmat[, spp.]
+
+      for(ii in 1:( .nsimEIM )) {
+        ysim = rnbinom(n = n, prob = pvec, size = kvec)
+
+        dl.dprob = kvec / pvec - ysim / (1.0 - pvec)
+        dl.dkayy = digamma(ysim + kvec) - digamma(kvec) + log(pvec)
+        temp3 = cbind(dl.dprob, dl.dkayy)
+        run.varcov = run.varcov +
+                     temp3[, ind1$row.index] *
+                     temp3[, ind1$col.index]
+      }
+      run.varcov = cbind(run.varcov / .nsimEIM)
+
+      wz1 = if (intercept.only)
+          matrix(colMeans(run.varcov),
+                 nrow = n, ncol = ncol(run.varcov), byrow = TRUE) else
+          run.varcov
+
+      wz1 = wz1 * dThetas.detas[, Musual * (spp. - 1) + ind1$row] *
+                  dThetas.detas[, Musual * (spp. - 1) + ind1$col]
+
+
+      for(jay in 1:Musual)
+          for(kay in jay:Musual) {
+              cptr = iam((spp. - 1) * Musual + jay,
+                         (spp. - 1) * Musual + kay,
+                         M = M)
+              wz[, cptr] = wz1[, iam(jay, kay, M = Musual)]
+          }
+    } # End of for(spp.) loop
 
 
+    c(w) * wz
+  }), list( .nsimEIM = nsimEIM ))))
+
+
+
+
+  if (deviance.arg) ans at deviance = eval(substitute(
+      function(mu, y, w, residuals = FALSE, eta, extra = NULL) {
+    NOS = ncol(eta) / 2
+    temp300 =  eta[, 2*(1:NOS), drop = FALSE]
+    if ( .lsize == "loge") {
+      bigval = 28
+      temp300[temp300 >  bigval] =  bigval
+      temp300[temp300 < -bigval] = -bigval
+    } else {
+      stop("can only handle the 'loge' link")
+    }
+    kayy =  eta2theta(temp300, .lsize, earg = .esize)
+    devi = 2 * (y * log(ifelse(y < 1, 1, y) / mu) +
+               (y + kayy) * log((mu + kayy) / (kayy + y)))
+    if (residuals)
+      sign(y - mu) * sqrt(abs(devi) * w) else
+      sum(w * devi)
+    }, list( .lsize = lsize, .eprob = eprob,
+             .esize = esize )))
+
+    ans
+} # End of polya()
+
 
 
 
@@ -3295,11 +3338,11 @@ nbmud = function(lmu = c("loge","identity","reciprocal"),
         lambda = mu
         dl.dlambda = -1 + y/lambda
         dlambda.deta = dtheta.deta(theta=lambda, link = "loge", earg = list())
-        w * dl.dlambda * dlambda.deta
+        c(w) * dl.dlambda * dlambda.deta
     }),
     weight = expression({
         d2l.dlambda2 = 1 / lambda
-        w * d2l.dlambda2 * dlambda.deta^2
+        c(w) * d2l.dlambda2 * dlambda.deta^2
     }))
 }
 
@@ -3317,7 +3360,7 @@ nbmud = function(lmu = c("loge","identity","reciprocal"),
 
  studentt <-  function(ldf = "loglog", edf = list(), idf = NULL,
                        tol1 = 0.1,
-                       method.init = 1)
+                       imethod = 1)
 {
 
   ldof <- ldf
@@ -3335,9 +3378,9 @@ nbmud = function(lmu = c("loge","identity","reciprocal"),
   if (!is.Numeric(tol1, posit  = TRUE))
     stop("argument 'tol1' should be positive")
 
-  if (!is.Numeric(method.init, allow = 1, integ = TRUE, posit = TRUE) ||
-     method.init > 3)
-      stop("'method.init' must be 1 or 2 or 3")
+  if (!is.Numeric(imethod, allow = 1, integ = TRUE, posit = TRUE) ||
+     imethod > 3)
+      stop("argument 'imethod' must be 1 or 2 or 3")
 
 
   new("vglmff",
@@ -3361,9 +3404,9 @@ nbmud = function(lmu = c("loge","identity","reciprocal"),
         VarY = var(y)
         MadY = mad(y)
         if (VarY <= (1 + .tol1 )) VarY = 1.12
-        if ( .method.init == 1) {
+        if ( .imethod == 1) {
           2 * VarY / (VarY - 1)
-        } else if ( .method.init == 2) {
+        } else if ( .imethod == 2) {
           ifelse(MadY < 1.05, 30, ifelse(MadY > 1.2, 2, 5))
         } else
           10
@@ -3374,7 +3417,7 @@ nbmud = function(lmu = c("loge","identity","reciprocal"),
                       len = length(y))
     }
   }), list( .ldof = ldof, .edof = edof, .idof = idof,
-            .tol1 = tol1, .method.init = method.init ))), 
+            .tol1 = tol1, .imethod = imethod ))), 
   inverse = eval(substitute(function(eta, extra = NULL) {
     Dof <- eta2theta(eta, .ldof, earg = .edof)
     ans <- 0 * eta
@@ -3384,10 +3427,10 @@ nbmud = function(lmu = c("loge","identity","reciprocal"),
   last = eval(substitute(expression({
     misc$link <-    c(df = .ldof )
     misc$earg <- list(df = .edof )
-    misc$method.init <- .method.init
+    misc$imethod <- .imethod
     misc$expected = TRUE
   }), list( .ldof = ldof,
-            .edof = edof, .method.init = method.init ))),
+            .edof = edof, .imethod = imethod ))),
   loglikelihood = eval(substitute(
     function(mu, y, w, residuals = FALSE, eta, extra = NULL) {
     Dof <-  eta2theta(eta, .ldof, earg = .edof)
@@ -3408,7 +3451,7 @@ nbmud = function(lmu = c("loge","identity","reciprocal"),
     temp1 <-  temp0 * y^2
     dl.ddf <- 0.5 * (-temp0 - log1p(temp1) +
               (Dof + 1) * y^2 / (Dof^2 * (1 + temp1)) + DDS(Dof))
-    w * dl.ddf * ddf.deta
+    c(w) * dl.ddf * ddf.deta
   }), list( .ldof = ldof, .edof = edof ))),
   weight = eval(substitute(expression({
 
@@ -3418,7 +3461,7 @@ nbmud = function(lmu = c("loge","identity","reciprocal"),
     tmp6 = DDS(Dof)
     edl2.dnu2 <- 0.5 * (tmp6 * (const2 * tmp6 - 2 / (Dof + 1)) - DDSp(Dof))
  
-    wz <- w * edl2.dnu2 * ddf.deta^2
+    wz <- c(w) * edl2.dnu2 * ddf.deta^2
     wz
   }), list( .ldof = ldof, .edof = edof ))))
 }
@@ -3452,10 +3495,10 @@ nbmud = function(lmu = c("loge","identity","reciprocal"),
 
 
  studentt3 <- function(llocation = "identity", elocation = list(),
-                       lscale    = "loge",     escale    = list(),
-                       ldf       = "loglog",   edf       = list(),
+                       lscale    = "loge",     escale   = list(),
+                       ldf       = "loglog",   edf      = list(),
                        ilocation = NULL, iscale = NULL, idf = NULL,
-                       method.init = 1,
+                       imethod = 1,
                        zero = -(2:3))
 {
 
@@ -3477,9 +3520,9 @@ nbmud = function(lmu = c("loge","identity","reciprocal"),
     ldof <- as.character(substitute(ldof))
   if (!is.list(edof)) edof <- list()
 
-  if (!is.Numeric(method.init, allow = 1, integ = TRUE, posit = TRUE) ||
-     method.init > 3)
-      stop("'method.init' must be 1 or 2 or 3")
+  if (!is.Numeric(imethod, allow = 1, integ = TRUE, posit = TRUE) ||
+     imethod > 3)
+      stop("argument 'imethod' must be 1 or 2 or 3")
 
   if (length(iloc))
     if (!is.Numeric(iloc))
@@ -3531,8 +3574,8 @@ nbmud = function(lmu = c("loge","identity","reciprocal"),
     if (!length(etastart)) {
 
       init.loc <- if (length( .iloc )) .iloc else {
-        if ( .method.init == 2) apply(y, 2, median) else
-        if ( .method.init == 3) y else {
+        if ( .imethod == 2) apply(y, 2, median) else
+        if ( .imethod == 3) y else {
            colSums(w * y) / sum(w)
         }
       }
@@ -3562,7 +3605,7 @@ nbmud = function(lmu = c("loge","identity","reciprocal"),
   }), list( .lloc = lloc, .eloc = eloc, .iloc = iloc,
             .lsca = lsca, .esca = esca, .isca = isca,
             .ldof = ldof, .edof = edof, .idof = idof,
-            .method.init = method.init ))), 
+            .imethod = imethod ))), 
   inverse = eval(substitute(function(eta, extra = NULL) {
     NOS    <- extra$NOS
     Musual <- extra$Musual
@@ -3592,12 +3635,12 @@ nbmud = function(lmu = c("loge","identity","reciprocal"),
     }
  
     misc$Musual <- Musual
-    misc$method.init <- .method.init
+    misc$imethod <- .imethod
     misc$expected = TRUE
   }), list( .lloc = lloc, .eloc = eloc,
             .lsca = lsca, .esca = esca,
             .ldof = ldof, .edof = edof,
-            .method.init = method.init ))),
+            .imethod = imethod ))),
   loglikelihood = eval(substitute(
     function(mu, y, w, residuals = FALSE, eta, extra = NULL) {
     NOS <- extra$NOS
@@ -3634,9 +3677,9 @@ nbmud = function(lmu = c("loge","identity","reciprocal"),
                      (Dof+1) * zedd^2 / (Dof^2 * (1 + temp1)) +
                      digamma((Dof+1)/2) - digamma(Dof/2))
  
-    ans <- w * cbind(dl.dloc * dloc.deta,
-                     dl.dsca * dsca.deta,
-                     dl.ddof * ddof.deta)
+    ans <- c(w) * cbind(dl.dloc * dloc.deta,
+                        dl.dsca * dsca.deta,
+                        dl.ddof * ddof.deta)
     ans <- ans[, interleave.VGAM(ncol(ans), M = Musual)]
     ans
   }), list( .lloc = lloc, .eloc = eloc,
@@ -3682,7 +3725,7 @@ nbmud = function(lmu = c("loge","identity","reciprocal"),
   while (all(wz[, ncol(wz)] == 0))
     wz <- wz[, -ncol(wz)]
 
-    w * wz
+    c(w) * wz
   }), list( .lloc = lloc, .eloc = eloc,
             .lsca = lsca, .esca = esca,
             .ldof = ldof, .edof = edof ))))
@@ -3694,9 +3737,9 @@ nbmud = function(lmu = c("loge","identity","reciprocal"),
 
  studentt2 <- function(df = Inf,
                        llocation = "identity", elocation = list(),
-                       lscale    = "loge",     escale    = list(),
+                       lscale    = "loge",     escale   = list(),
                        ilocation = NULL, iscale = NULL,
-                       method.init = 1,
+                       imethod = 1,
                        zero = -2)
 {
 
@@ -3719,9 +3762,9 @@ nbmud = function(lmu = c("loge","identity","reciprocal"),
     if (!is.Numeric(doff, posit = TRUE))
     stop("argument 'df' must be positive")
 
-  if (!is.Numeric(method.init, allow = 1, integ = TRUE, posit = TRUE) ||
-     method.init > 3)
-      stop("argument 'method.init' must be 1 or 2 or 3")
+  if (!is.Numeric(imethod, allow = 1, integ = TRUE, posit = TRUE) ||
+     imethod > 3)
+      stop("argument 'imethod' must be 1 or 2 or 3")
 
   if (length(iloc))
     if (!is.Numeric(iloc))
@@ -3768,8 +3811,8 @@ nbmud = function(lmu = c("loge","identity","reciprocal"),
     if (!length(etastart)) {
 
       init.loc <- if (length( .iloc )) .iloc else {
-        if ( .method.init == 2) apply(y, 2, median) else
-        if ( .method.init == 3) y else {
+        if ( .imethod == 2) apply(y, 2, median) else
+        if ( .imethod == 3) y else {
            colSums(w * y) / sum(w)
         }
       }
@@ -3788,7 +3831,7 @@ nbmud = function(lmu = c("loge","identity","reciprocal"),
   }), list( .lloc = lloc, .eloc = eloc, .iloc = iloc,
             .lsca = lsca, .esca = esca, .isca = isca,
             .doff = doff,
-            .method.init = method.init ))), 
+            .imethod = imethod ))), 
   inverse = eval(substitute(function(eta, extra = NULL) {
     NOS <- extra$NOS
     Musual <- extra$Musual
@@ -3816,12 +3859,12 @@ nbmud = function(lmu = c("loge","identity","reciprocal"),
     misc$Musual <- Musual
     misc$simEIM <- TRUE
     misc$df <- .doff
-    misc$method.init <- .method.init
+    misc$imethod <- .imethod
     misc$expected = TRUE
   }), list( .lloc = lloc, .eloc = eloc,
             .lsca = lsca, .esca = esca,
             .doff = doff,
-            .method.init = method.init ))),
+            .imethod = imethod ))),
   loglikelihood = eval(substitute(
     function(mu, y, w, residuals = FALSE, eta, extra = NULL) {
     NOS <- extra$NOS
@@ -3855,8 +3898,8 @@ nbmud = function(lmu = c("loge","identity","reciprocal"),
     dl.dlocat[!is.finite(Dof)] <- zedd / Sca  # Adjust for df=Inf
     dl.dscale <- zedd * dl.dlocat - 1 / Sca
  
-    ans <- w * cbind(dl.dlocat * dlocat.deta,
-                     dl.dscale * dscale.deta)
+    ans <- c(w) * cbind(dl.dlocat * dlocat.deta,
+                        dl.dscale * dscale.deta)
     ans <- ans[, interleave.VGAM(ncol(ans), M = Musual)]
     ans
   }), list( .lloc = lloc, .eloc = eloc,
@@ -3877,7 +3920,7 @@ nbmud = function(lmu = c("loge","identity","reciprocal"),
     wz = matrix(as.numeric(NA), n, M)  #2=M; diagonal!
     wz[, Musual*(1:NOS) - 1] = ed2l.dlocat2 * dlocat.deta^2
     wz[, Musual*(1:NOS)    ] = ed2l.dscale2 * dscale.deta^2
-    w * wz
+    c(w) * wz
   }), list( .lloc = lloc, .eloc = eloc,
             .lsca = lsca, .esca = esca,
             .doff = doff  ))))
@@ -3933,12 +3976,12 @@ nbmud = function(lmu = c("loge","identity","reciprocal"),
     mydf <- eta2theta(eta, .link, earg = .earg)
     dl.dv <- (log(y / 2) - digamma(mydf / 2)) / 2
     dv.deta <- dtheta.deta(mydf, .link, earg = .earg)
-    w * dl.dv * dv.deta
+    c(w) * dl.dv * dv.deta
   }), list( .link = link, .earg = earg ))),
   weight = eval(substitute(expression({
     ed2l.dv2 <- -trigamma(mydf / 2) / 4
     wz <- -ed2l.dv2 * dv.deta^2
-    wz * w
+    c(w) * wz
   }), list( .link = link, .earg = earg ))))
 }
 
@@ -4023,7 +4066,7 @@ rsimplex = function(n, mu = 0.5, dispersion = 1) {
  simplex = function(lmu = "logit", lsigma = "loge",
                     emu = list(), esigma = list(),
                     imu = NULL, isigma = NULL,
-                    method.init = 1, shrinkage.init = 0.95,
+                    imethod = 1, shrinkage.init = 0.95,
                     zero = 2) {
 
 
@@ -4031,13 +4074,16 @@ rsimplex = function(n, mu = 0.5, dispersion = 1) {
       lmu = as.character(substitute(lmu))
   if (mode(lsigma) != "character" && mode(lsigma) != "name")
       lsigma = as.character(substitute(lsigma))
+
   if (!is.list(emu)) emu = list()
   if (!is.list(esigma)) esigma = list()
-  if (!is.Numeric(method.init, allow = 1, integ = TRUE, posit = TRUE) ||
-       method.init > 3)
-      stop("'method.init' must be 1 or 2 or 3")
+
+  if (!is.Numeric(imethod, allow = 1, integ = TRUE, posit = TRUE) ||
+       imethod > 3)
+      stop("argument 'imethod' must be 1 or 2 or 3")
   if (!is.Numeric(shrinkage.init, allow = 1) || shrinkage.init < 0 ||
        shrinkage.init > 1) stop("bad input for argument 'shrinkage.init'")
+
     if (length(zero) && !is.Numeric(zero, integer = TRUE, posit = TRUE))
         stop("bad input for argument 'zero'")
 
@@ -4069,15 +4115,15 @@ rsimplex = function(n, mu = 0.5, dispersion = 1) {
           (((y - mu) / (mu * (1 - mu)))^2) / (y * (1 - y))
 
       if (!length(etastart)) {
-          use.this = if ( .method.init == 3) weighted.mean(y, w) else
-                     if ( .method.init == 1) median(y) else
+          use.this = if ( .imethod == 3) weighted.mean(y, w) else
+                     if ( .imethod == 1) median(y) else
                                              mean(y, trim = 0.1)
           init.mu = (1 - .sinit) * y + .sinit * use.this
           mu.init = rep(if (length( .imu )) .imu else init.mu, length = n)
           sigma.init = if (length( .isigma )) rep( .isigma, leng = n) else {
           use.this = deeFun(y, mu=init.mu)
-          rep(sqrt( if ( .method.init == 3) weighted.mean(use.this, w) else
-                    if ( .method.init == 1) median(use.this) else
+          rep(sqrt( if ( .imethod == 3) weighted.mean(use.this, w) else
+                    if ( .imethod == 1) median(use.this) else
                                             mean(use.this, trim = 0.1)),
               length = n)
           }
@@ -4087,7 +4133,7 @@ rsimplex = function(n, mu = 0.5, dispersion = 1) {
   }), list( .lmu = lmu, .lsigma = lsigma,
             .emu = emu, .esigma = esigma,
             .imu = imu, .isigma = isigma,
-            .sinit = shrinkage.init, .method.init = method.init ))),
+            .sinit = shrinkage.init, .imethod = imethod ))),
   inverse = eval(substitute(function(eta, extra = NULL) {
       eta2theta(eta[,1], .lmu, earg = .emu)
   }, list( .lmu = lmu, .emu = emu ))),
@@ -4096,19 +4142,18 @@ rsimplex = function(n, mu = 0.5, dispersion = 1) {
       misc$earg = list(mu = .emu, sigma = .esigma)
       misc$imu    = .imu
       misc$isigma = .isigma
-      misc$method.init = .method.init
+      misc$imethod = .imethod
       misc$shrinkage.init = .sinit
   }), list( .lmu = lmu, .lsigma = lsigma,
             .imu = imu, .isigma = isigma,
             .emu = emu, .esigma = esigma,
-            .sinit = shrinkage.init, .method.init = method.init ))),
+            .sinit = shrinkage.init, .imethod = imethod ))),
   loglikelihood = eval(substitute(
     function(mu, y, w, residuals = FALSE, eta, extra = NULL) {
       sigma = eta2theta(eta[,2], .lsigma, earg = .esigma)
-      if (residuals)
-        stop("loglikelihood residuals not ",
-                            "implemented yet") else {
-        sum(w * dsimplex(y, mu, sigma, log = TRUE))
+      if (residuals) stop("loglikelihood residuals not ",
+                          "implemented yet") else {
+        sum(w * dsimplex(x = y, mu = mu, dispersion = sigma, log = TRUE))
       }
   }, list( .lsigma = lsigma, .emu = emu,
            .esigma = esigma ))),
@@ -4132,7 +4177,7 @@ rsimplex = function(n, mu = 0.5, dispersion = 1) {
       eim11 = 3 / (mu * (1 - mu)) + 1 / (sigma^2 * (mu * (1 - mu))^3)
       wz[, iam(1, 1, M)] = eim11 * dmu.deta^2
       wz[, iam(2, 2, M)] = (2 / sigma^2) * dsigma.deta^2
-      w * wz
+      c(w) * wz
   }), list( .lmu = lmu, .lsigma = lsigma,
             .emu = emu, .esigma = esigma ))))
 }
@@ -4145,7 +4190,7 @@ rsimplex = function(n, mu = 0.5, dispersion = 1) {
 
 
  rig = function(lmu = "identity", llambda = "loge",
-               emu = list(), elambda=list(), imu = NULL, ilambda=1)
+               emu = list(), elambda = list(), imu = NULL, ilambda=1)
 {
 
     if (mode(lmu) != "character" && mode(lmu) != "name")
@@ -4245,7 +4290,7 @@ rsimplex = function(n, mu = 0.5, dispersion = 1) {
             for(ii in 1:ncol(wz))
                 wz[,ii] = sum(wz[,ii]) / sumw
             pooled.weight = TRUE
-            wz = w * wz   # Put back the weights
+            wz = c(w) * wz   # Put back the weights
         } else
             pooled.weight = FALSE
 
@@ -4281,33 +4326,33 @@ rsimplex = function(n, mu = 0.5, dispersion = 1) {
                              median(y), length = n)
             etastart = theta2eta(theta.init, .link.theta, earg = .earg)
         }
-    }), list( .link.theta=link.theta, .earg = earg,
+    }), list( .link.theta = link.theta, .earg = earg,
               .init.theta=init.theta ))),
     inverse = eval(substitute(function(eta, extra = NULL) {
         theta = eta2theta(eta, .link.theta, earg = .earg)
         tan(theta)
-    }, list( .link.theta=link.theta, .earg = earg ))),
+    }, list( .link.theta = link.theta, .earg = earg ))),
     last = eval(substitute(expression({
         misc$link = c(theta= .link.theta )
         misc$earg = list(theta= .earg )
         misc$expected = TRUE
-    }), list( .link.theta=link.theta, .earg = earg ))),
+    }), list( .link.theta = link.theta, .earg = earg ))),
     loglikelihood = eval(substitute(function(mu, y, w, residuals = FALSE, eta, extra = NULL) {
         theta = eta2theta(eta, .link.theta, earg = .earg)
         if (residuals) stop("loglikelihood residuals not ",
                             "implemented yet") else
         sum(w * (theta*y + log(cos(theta)) - log(cosh(pi*y/2 ))))
-    }, list( .link.theta=link.theta, .earg = earg ))),
+    }, list( .link.theta = link.theta, .earg = earg ))),
     vfamily = c("hypersecant"),
     deriv = eval(substitute(expression({
         theta = eta2theta(eta, .link.theta, earg = .earg)
         dl.dthetas =  y - tan(theta)
         dparam.deta = dtheta.deta(theta, .link.theta, earg = .earg)
-        w * dl.dthetas * dparam.deta
-    }), list( .link.theta=link.theta, .earg = earg ))),
+        c(w) * dl.dthetas * dparam.deta
+    }), list( .link.theta = link.theta, .earg = earg ))),
     weight = expression({
         d2l.dthetas2 =  1 / cos(theta)^2
-        wz = w * d2l.dthetas2 * dparam.deta^2
+        wz = c(w) * d2l.dthetas2 * dparam.deta^2
         wz
     }))
 }
@@ -4345,34 +4390,34 @@ rsimplex = function(n, mu = 0.5, dispersion = 1) {
 
             etastart = theta2eta(theta.init, .link.theta, earg = .earg)
         }
-    }), list( .link.theta=link.theta, .earg = earg,
+    }), list( .link.theta = link.theta, .earg = earg,
               .init.theta=init.theta ))),
     inverse = eval(substitute(function(eta, extra = NULL) {
         theta = eta2theta(eta, .link.theta, earg = .earg)
         0.5 + theta/pi
-    }, list( .link.theta=link.theta, .earg = earg ))),
+    }, list( .link.theta = link.theta, .earg = earg ))),
     last = eval(substitute(expression({
         misc$link = c(theta= .link.theta)
         misc$earg = list(theta= .earg )
         misc$expected = TRUE
-    }), list( .link.theta=link.theta, .earg = earg ))),
+    }), list( .link.theta = link.theta, .earg = earg ))),
     loglikelihood = eval(substitute(function(mu, y, w, residuals = FALSE, eta, extra = NULL) {
         theta = eta2theta(eta, .link.theta, earg = .earg)
         if (residuals) stop("loglikelihood residuals not ",
                             "implemented yet") else
         sum(w * (log(cos(theta)) + (-0.5+theta/pi)*log(y) +
                 (-0.5-theta/pi)*log1p(-y )))
-    }, list( .link.theta=link.theta, .earg = earg ))),
+    }, list( .link.theta = link.theta, .earg = earg ))),
     vfamily = c("hypersecant.1"),
     deriv = eval(substitute(expression({
         theta = eta2theta(eta, .link.theta, earg = .earg)
         dl.dthetas =  -tan(theta) + log(y/(1-y)) / pi 
         dparam.deta = dtheta.deta(theta, .link.theta, earg = .earg)
-        w * dl.dthetas * dparam.deta
-    }), list( .link.theta=link.theta, .earg = earg ))),
+        c(w) * dl.dthetas * dparam.deta
+    }), list( .link.theta = link.theta, .earg = earg ))),
     weight = expression({
         d2l.dthetas2 =  1 / cos(theta)^2
-        wz = w * d2l.dthetas2 * dparam.deta^2
+        wz = c(w) * d2l.dthetas2 * dparam.deta^2
         wz
     }))
 }
@@ -4380,7 +4425,7 @@ rsimplex = function(n, mu = 0.5, dispersion = 1) {
 
 
  leipnik = function(lmu = "logit", llambda = "loge",
-                    emu = list(), elambda=list(), imu = NULL, ilambda = NULL)
+                    emu = list(), elambda = list(), imu = NULL, ilambda = NULL)
 {
 
 
@@ -4446,10 +4491,11 @@ rsimplex = function(n, mu = 0.5, dispersion = 1) {
     vfamily = c("leipnik"),
     deriv = eval(substitute(expression({
         lambda = eta2theta(eta[,2], .llambda, earg = .elambda)
-        dl.dthetas = w * cbind(dl.dmu = lambda*(y-mu) / (y*(1-y)+(y-mu)^2),
-                               dl.dlambda= -0.5 * log1p((y-mu)^2 / (y*(1-y))) -
-                               0.5*digamma((lambda+1)/2) +
-                               0.5*digamma(1+lambda/2))
+        dl.dthetas =
+          c(w) * cbind(dl.dmu = lambda*(y-mu) / (y*(1-y)+(y-mu)^2),
+                       dl.dlambda= -0.5 * log1p((y-mu)^2 / (y*(1-y))) -
+                         0.5*digamma((lambda+1)/2) +
+                         0.5*digamma(1+lambda/2))
         dmu.deta = dtheta.deta(mu, .lmu, earg = .emu)
         dlambda.deta = dtheta.deta(lambda, .llambda, earg = .elambda)
         dtheta.detas = cbind(dmu.deta, dlambda.deta)
@@ -4460,10 +4506,10 @@ rsimplex = function(n, mu = 0.5, dispersion = 1) {
         if (is.R()) {
             denominator = y*(1-y) + (y-mu)^2
             d2l.dthetas2 =  array(NA, c(n,2,2))
-            d2l.dthetas2[,1,1] = w * lambda*(-y*(1-y)+(y-mu)^2)/denominator^2
+            d2l.dthetas2[,1,1] = c(w) * lambda*(-y*(1-y)+(y-mu)^2)/denominator^2
             d2l.dthetas2[,1,2] = 
-            d2l.dthetas2[,2,1] = w * (y-mu) / denominator
-            d2l.dthetas2[,2,2] = w * (-0.25*trigamma((lambda+1)/2) +
+            d2l.dthetas2[,2,1] = c(w) * (y-mu) / denominator
+            d2l.dthetas2[,2,2] = c(w) * (-0.25*trigamma((lambda+1)/2) +
                                        0.25*trigamma(1+lambda/2))
         } else {
             d2l.dthetas2 =  attr(eval.d3, "hessian")
@@ -4486,7 +4532,7 @@ rsimplex = function(n, mu = 0.5, dispersion = 1) {
             for(ii in 1:ncol(wz))
                 wz[,ii] = sum(wz[,ii]) / sumw
             pooled.weight = TRUE
-            wz = w * wz   # Put back the weights
+            wz = c(w) * wz   # Put back the weights
         } else
             pooled.weight = FALSE
 
@@ -4501,7 +4547,7 @@ rsimplex = function(n, mu = 0.5, dispersion = 1) {
 
  invbinomial = function(lrho = "elogit", llambda = "loge",
           erho=if (lrho == "elogit") list(min = 0.5, max = 1) else list(),
-          elambda=list(),
+          elambda = list(),
           irho = NULL,
           ilambda = NULL,
           zero = NULL)
@@ -4580,7 +4626,8 @@ rsimplex = function(n, mu = 0.5, dispersion = 1) {
                      log(rho)
         drho.deta = dtheta.deta(rho, .lrho, earg = .erho)
         dlambda.deta = dtheta.deta(lambda, .llambda, earg = .elambda)
-        w * cbind( dl.drho * drho.deta, dl.dlambda * dlambda.deta )
+        c(w) * cbind(dl.drho * drho.deta,
+                     dl.dlambda * dlambda.deta )
     }), list( .llambda = llambda, .lrho=lrho,
               .elambda = elambda, .erho=erho ))),
     weight = eval(substitute(expression({
@@ -4594,7 +4641,7 @@ rsimplex = function(n, mu = 0.5, dispersion = 1) {
 
         d2rhodeta2 = d2theta.deta2(rho, .lrho, earg = .erho)
         d2lambda.deta2 = d2theta.deta2(lambda, .llambda, earg = .elambda)
-        wz = w * wz
+        wz = c(w) * wz
 
         if (intercept.only) {
             pooled.weight = TRUE
@@ -4616,7 +4663,7 @@ rsimplex = function(n, mu = 0.5, dispersion = 1) {
                       etheta = list(),
                       ilambda = NULL, itheta = NULL,
                       use.approx = TRUE,
-                      method.init = 1, zero=1)
+                      imethod = 1, zero=1)
 {
 
 
@@ -4628,9 +4675,9 @@ rsimplex = function(n, mu = 0.5, dispersion = 1) {
         stop("bad input for argument 'zero'")
     if (!is.list(elambda)) elambda = list()
     if (!is.list(etheta)) etheta = list()
-    if (!is.Numeric(method.init, allow = 1, integ = TRUE, posit = TRUE) ||
-       method.init > 2)
-        stop("'method.init' must be 1 or 2")
+    if (!is.Numeric(imethod, allow = 1, integ = TRUE, posit = TRUE) ||
+       imethod > 2)
+        stop("argument 'imethod' must be 1 or 2")
     if (!is.logical(use.approx) || length(use.approx) != 1)
         stop("'use.approx' must be logical value")
 
@@ -4650,9 +4697,9 @@ rsimplex = function(n, mu = 0.5, dispersion = 1) {
         predictors.names =
            c(namesof("lambda", .llambda, earg = .elambda, tag = FALSE),
              namesof("theta",  .ltheta,  earg = .etheta,  tag = FALSE))
-        init.lambda = if ( .method.init == 1)
+        init.lambda = if ( .imethod == 1)
             1 - sqrt(weighted.mean(y,w) / var(y)) else 0.5
-        init.theta  = if ( .method.init == 1)
+        init.theta  = if ( .imethod == 1)
             sqrt((0.01+weighted.mean(y,w)^3)/var(y)) else
             median(y)*(1-init.lambda)
         if (init.theta <= 0)
@@ -4674,7 +4721,7 @@ rsimplex = function(n, mu = 0.5, dispersion = 1) {
         }
     }), list( .ltheta=ltheta, .llambda = llambda,
               .etheta=etheta, .elambda = elambda,
-              .method.init = method.init,
+              .imethod = imethod,
               .itheta=itheta, .ilambda=ilambda )) ),
     inverse = eval(substitute(function(eta, extra = NULL) {
         lambda = eta2theta(eta[,1], .llambda, earg = .elambda)
@@ -4711,7 +4758,8 @@ rsimplex = function(n, mu = 0.5, dispersion = 1) {
         dl.dtheta = -1 + (y-1)/(theta+y*lambda) + 1/theta
         dTHETA.deta = dtheta.deta(theta, .ltheta, earg = .etheta)
         dlambda.deta = dtheta.deta(lambda, .llambda, earg = .elambda)
-        w * cbind( dl.dlambda * dlambda.deta, dl.dtheta * dTHETA.deta )
+        c(w) * cbind(dl.dlambda * dlambda.deta,
+                     dl.dtheta * dTHETA.deta )
     }), list( .ltheta=ltheta, .llambda = llambda,
               .etheta=etheta, .elambda = elambda ))),
     weight = eval(substitute(expression({
@@ -4724,7 +4772,7 @@ rsimplex = function(n, mu = 0.5, dispersion = 1) {
             wz[,iam(1,1,M)] = d2l.dlambda2 * dlambda.deta^2
             wz[,iam(2,2,M)] = d2l.dtheta2 * dTHETA.deta^2
             wz[,iam(1,2,M)] = d2l.dthetalambda * dTHETA.deta * dlambda.deta
-            wz = w * wz
+            wz = c(w) * wz
         } else {
             d2l.dlambda2 = -y^2 * (y-1) / (theta+y*lambda)^2
             d2l.dtheta2 = -(y-1)/(theta+y*lambda)^2 - 1 / theta^2
@@ -4737,14 +4785,14 @@ rsimplex = function(n, mu = 0.5, dispersion = 1) {
             d2lambdadeta2 = d2theta.deta2(lambda, .llambda, earg = .elambda)
             wz[,iam(1,1,M)] = wz[,iam(1,1,M)] - dl.dlambda * d2lambdadeta2
             wz[,iam(2,2,M)] = wz[,iam(2,2,M)] - dl.dtheta * d2THETA.deta2
-            wz = w * wz
+            wz = c(w) * wz
 
             if (intercept.only) {
                 sumw = sum(w)
                 for(ii in 1:ncol(wz))
                     wz[,ii] = sum(wz[,ii]) / sumw
                 pooled.weight = TRUE
-                wz = w * wz   # Put back the weights
+                wz = c(w) * wz   # Put back the weights
             } else
                 pooled.weight = FALSE
             }
@@ -4759,39 +4807,47 @@ rsimplex = function(n, mu = 0.5, dispersion = 1) {
 
 
 
-dlgamma = function(x, location=0, scale=1, k=1, log = FALSE) {
-    if (!is.logical(log.arg <- log))
-        stop("bad input for argument 'log'")
-    rm(log)
+dlgamma = function(x, location = 0, scale = 1, k = 1, log = FALSE) {
+  if (!is.logical(log.arg <- log))
+    stop("bad input for argument 'log'")
+  rm(log)
 
-    if (!is.Numeric(scale, posit = TRUE)) stop("bad input for argument 'scale'")
-    if (!is.Numeric(k, posit = TRUE)) stop("bad input for argument 'k'")
-    z = (x-location) / scale
-    if (log.arg) {
-        k * z - exp(z) - log(scale) - lgamma(k)
-    } else {
-        exp(k * z - exp(z)) / (scale * gamma(k))
-    }
+  if (!is.Numeric(scale, posit = TRUE))
+    stop("bad input for argument 'scale'")
+  if (!is.Numeric(k, posit = TRUE))
+    stop("bad input for argument 'k'")
+  z = (x-location) / scale
+  if (log.arg) {
+    k * z - exp(z) - log(scale) - lgamma(k)
+  } else {
+    exp(k * z - exp(z)) / (scale * gamma(k))
+  }
 }
-plgamma = function(q, location=0, scale=1, k=1) {
-    if (!is.Numeric(scale, posit = TRUE)) stop("bad input for argument 'scale'")
-    if (!is.Numeric(k, posit = TRUE)) stop("bad input for argument 'k'")
-    z = (q-location)/scale
-    pgamma(exp(z), k)
+plgamma = function(q, location = 0, scale = 1, k=1) {
+  if (!is.Numeric(scale, posit = TRUE))
+  stop("bad input for argument 'scale'")
+  if (!is.Numeric(k, posit = TRUE))
+  stop("bad input for argument 'k'")
+  z = (q-location)/scale
+  pgamma(exp(z), k)
 }
-qlgamma = function(p, location=0, scale=1, k=1) {
-    if (!is.Numeric(scale, posit = TRUE)) stop("bad input for argument 'scale'")
-    if (!is.Numeric(k, posit = TRUE)) stop("bad input for argument 'k'")
-    q = qgamma(p, k)
-    location + scale * log(q)
+qlgamma = function(p, location = 0, scale = 1, k=1) {
+  if (!is.Numeric(scale, posit = TRUE))
+    stop("bad input for argument 'scale'")
+  if (!is.Numeric(k, posit = TRUE))
+    stop("bad input for argument 'k'")
+  q = qgamma(p, k)
+  location + scale * log(q)
 }
-rlgamma = function(n, location=0, scale=1, k=1) {
-    if (!is.Numeric(n, posit = TRUE, integ = TRUE, allow = 1)) 
-        stop("bad input for argument 'n'")
-    if (!is.Numeric(scale, posit = TRUE)) stop("bad input for argument 'scale'")
-    if (!is.Numeric(k, posit = TRUE)) stop("bad input for argument 'k'")
-    y = rgamma(n, k)
-    location + scale * log(y)
+rlgamma = function(n, location = 0, scale = 1, k=1) {
+  if (!is.Numeric(n, posit = TRUE, integ = TRUE, allow = 1)) 
+    stop("bad input for argument 'n'")
+  if (!is.Numeric(scale, posit = TRUE))
+    stop("bad input for argument 'scale'")
+  if (!is.Numeric(k, posit = TRUE))
+    stop("bad input for argument 'k'")
+  y = rgamma(n, k)
+  location + scale * log(y)
 }
 
 
@@ -4833,7 +4889,7 @@ rlgamma = function(n, location=0, scale=1, k=1) {
         kk = eta2theta(eta, .link, earg = .earg)
         if (residuals) stop("loglikelihood residuals not ",
                             "implemented yet") else {
-            sum(w * dlgamma(x=y, location=0, scale=1, k=kk, log = TRUE))
+            sum(w * dlgamma(x = y, location = 0, scale = 1, k=kk, log = TRUE))
         }
     }, list( .link = link, .earg = earg ))),
     vfamily = c("lgammaff"),
@@ -4841,11 +4897,11 @@ rlgamma = function(n, location=0, scale=1, k=1) {
         k = eta2theta(eta, .link, earg = .earg) 
         dl.dk = y - digamma(k)
         dk.deta = dtheta.deta(k, .link, earg = .earg)
-        w * dl.dk * dk.deta
+        c(w) * dl.dk * dk.deta
     }), list( .link = link, .earg = earg ))),
     weight = eval(substitute(expression({
         ed2l.dk2 = trigamma(k)
-        wz = w * dk.deta^2 * ed2l.dk2
+        wz = c(w) * dk.deta^2 * ed2l.dk2
         wz
     }), list( .link = link, .earg = earg ))))
 }
@@ -4858,7 +4914,7 @@ rlgamma = function(n, location=0, scale=1, k=1) {
 
  lgamma3ff = function(llocation = "identity", lscale = "loge", lshape = "loge",
                      elocation = list(), escale = list(), eshape = list(),
-                     ilocation = NULL, iscale = NULL, ishape=1, zero = NULL)
+                     ilocation = NULL, iscale = NULL, ishape = 1, zero = NULL)
 {
     if (mode(llocation) != "character" && mode(llocation) != "name")
         llocation = as.character(substitute(llocation))
@@ -4928,7 +4984,7 @@ rlgamma = function(n, location=0, scale=1, k=1) {
         kk = eta2theta(eta[,3], .lshape, earg = .eshape)
         if (residuals) stop("loglikelihood residuals not ",
                             "implemented yet") else {
-            sum(w * dlgamma(x=y, location=aa, scale=bb, k=kk, log = TRUE))
+            sum(w * dlgamma(x = y, location=aa, scale=bb, k=kk, log = TRUE))
         }
     }, list( .llocation = llocation, .lscale = lscale, .lshape = lshape,
              .elocation = elocation, .escale = escale, .eshape = eshape ))),
@@ -4944,7 +5000,9 @@ rlgamma = function(n, location=0, scale=1, k=1) {
         da.deta = dtheta.deta(a, .llocation, earg = .elocation)
         db.deta = dtheta.deta(b, .lscale, earg = .escale)
         dk.deta = dtheta.deta(k, .lshape, earg = .eshape)
-        w * cbind(dl.da * da.deta, dl.db * db.deta, dl.dk * dk.deta)
+        c(w) * cbind(dl.da * da.deta,
+                     dl.db * db.deta,
+                     dl.dk * dk.deta)
     }), list( .llocation = llocation, .lscale = lscale, .lshape = lshape,
               .elocation = elocation, .escale = escale, .eshape = eshape ))),
     weight = eval(substitute(expression({
@@ -4961,7 +5019,7 @@ rlgamma = function(n, location=0, scale=1, k=1) {
         wz[,iam(1,2,M)] = ed2l.dadb * da.deta * db.deta
         wz[,iam(1,3,M)] = ed2l.dadk * da.deta * dk.deta
         wz[,iam(2,3,M)] = ed2l.dbdk * db.deta * dk.deta
-        wz = w * wz
+        wz = c(w) * wz
         wz
     }), list( .llocation = llocation, .lscale = lscale, .lshape = lshape,
               .elocation = elocation, .escale = escale, .eshape = eshape ))))
@@ -5060,7 +5118,9 @@ rlgamma = function(n, location=0, scale=1, k=1) {
         da.deta = dtheta.deta(a, .llocation, earg = .elocation)
         db.deta = dtheta.deta(b, .lscale, earg = .escale)
         dk.deta = dtheta.deta(k, .lshape, earg = .eshape)
-        w * cbind(dl.da * da.deta, dl.db * db.deta, dl.dk * dk.deta)
+        c(w) * cbind(dl.da * da.deta,
+                     dl.db * db.deta,
+                     dl.dk * dk.deta)
     }), list( .llocation = llocation, .lscale = lscale, .lshape = lshape,
               .elocation = elocation, .escale = escale, .eshape = eshape ))),
     weight = eval(substitute(expression({
@@ -5078,7 +5138,7 @@ rlgamma = function(n, location=0, scale=1, k=1) {
         wz[,iam(1,2,M)] = ed2l.dadb * da.deta * db.deta
         wz[,iam(1,3,M)] = ed2l.dadk * da.deta * dk.deta
         wz[,iam(2,3,M)] = ed2l.dbdk * db.deta * dk.deta
-        wz = w * wz
+        wz = c(w) * wz
         wz
     }), list( .llocation = llocation, .lscale = lscale, .lshape = lshape,
               .elocation = elocation, .escale = escale, .eshape = eshape ))))
@@ -5086,7 +5146,7 @@ rlgamma = function(n, location=0, scale=1, k=1) {
 
 
 
-dgengamma = function(x, scale=1, d=1, k=1, log = FALSE) {
+dgengamma = function(x, scale = 1, d = 1, k = 1, log = FALSE) {
     if (!is.logical(log.arg <- log))
         stop("bad input for argument 'log'")
     rm(log)
@@ -5118,7 +5178,7 @@ dgengamma = function(x, scale=1, d=1, k=1, log = FALSE) {
 
 
 
-pgengamma = function(q, scale=1, d=1, k=1) {
+pgengamma = function(q, scale = 1, d = 1, k=1) {
     if (!is.Numeric(scale, posit = TRUE))
       stop("bad input for argument 'scale'")
     if (!is.Numeric(d, posit = TRUE))
@@ -5130,7 +5190,7 @@ pgengamma = function(q, scale=1, d=1, k=1) {
 }
 
 
-qgengamma = function(p, scale=1, d=1, k=1) {
+qgengamma = function(p, scale = 1, d = 1, k=1) {
     if (!is.Numeric(scale, posit = TRUE))
       stop("bad input for argument 'scale'")
     if (!is.Numeric(d, posit = TRUE))
@@ -5142,7 +5202,7 @@ qgengamma = function(p, scale=1, d=1, k=1) {
 }
 
 
-rgengamma = function(n, scale=1, d=1, k=1) {
+rgengamma = function(n, scale = 1, d = 1, k=1) {
     if (!is.Numeric(n, posit = TRUE, integ = TRUE, allow = 1)) 
         stop("bad input for 'n'")
     if (!is.Numeric(scale, posit = TRUE))
@@ -5158,7 +5218,7 @@ rgengamma = function(n, scale=1, d=1, k=1) {
 
 
  gengamma = function(lscale = "loge", ld = "loge", lk = "loge",
-                  escale = list(), ed=list(), ek=list(),
+                  escale = list(), ed = list(), ek = list(),
                   iscale = NULL, id = NULL, ik = NULL, zero = NULL)
 {
     if (mode(lscale) != "character" && mode(lscale) != "name")
@@ -5230,7 +5290,7 @@ rgengamma = function(n, scale=1, d=1, k=1) {
         k = eta2theta(eta[,3], .lk, earg = .ek)
         if (residuals) stop("loglikelihood residuals not ",
                             "implemented yet") else {
-            sum(w * dgengamma(x=y, scale=b, d=d, k=k, log = TRUE))
+            sum(w * dgengamma(x = y, scale=b, d=d, k=k, log = TRUE))
         }
     }, list( .lscale = lscale, .ld = ld, .lk = lk,
              .escale = escale, .ed = ed, .ek = ek ))),
@@ -5247,7 +5307,9 @@ rgengamma = function(n, scale=1, d=1, k=1) {
         db.deta = dtheta.deta(b, .lscale, earg = .escale)
         dd.deta = dtheta.deta(d, .ld, earg = .ed)
         dk.deta = dtheta.deta(k, .lk, earg = .ek)
-        w * cbind(dl.db * db.deta, dl.dd * dd.deta, dl.dk * dk.deta)
+        c(w) * cbind(dl.db * db.deta,
+                     dl.dd * dd.deta,
+                     dl.dk * dk.deta)
     }), list( .lscale = lscale, .ld = ld, .lk = lk,
               .escale = escale, .ed = ed, .ek = ek ))),
     weight = eval(substitute(expression({
@@ -5264,7 +5326,7 @@ rgengamma = function(n, scale=1, d=1, k=1) {
         wz[,iam(1,2,M)] = ed2l.dbdd * db.deta * dd.deta
         wz[,iam(1,3,M)] = ed2l.dbdk * db.deta * dk.deta
         wz[,iam(2,3,M)] = ed2l.dddk * dd.deta * dk.deta
-        wz = w * wz
+        wz = c(w) * wz
         wz
     }), list( .lscale = lscale, .ld = ld, .lk = lk,
               .escale = escale, .ed = ed, .ek = ek ))))
@@ -5328,7 +5390,7 @@ plog  = function(q, prob, log.p = FALSE) {
     seqp = rep(prob, floorq)
     onevector = (seqp^seqq / seqq) / (-log1p(-seqp))
     rlist =  dotC(name = "tyee_C_cum8sum",
-                  as.double(onevector), answer=double(N),
+                  as.double(onevector), answer = double(N),
                   as.integer(N), as.double(seqq),
                   as.integer(length(onevector)), notok=integer(1))
     if (rlist$notok != 0) stop("error in 'cum8sum'")
@@ -5388,7 +5450,7 @@ rlog = function(n, prob, Smallno=1.0e-6) {
     a = -1 / log1p(-prob)
     mean = a*prob/(1-prob)    # E(Y)
     sigma = sqrt(a*prob*(1-a*prob)) / (1-prob)   # sd(Y)
-    ymax = dlog(x=1, prob)
+    ymax = dlog(x = 1, prob)
     while(ptr2 < n) {
         Lower = 0.5 # A continuity correction is used = 1 - 0.5.
         Upper = mean + 5 * sigma
@@ -5424,7 +5486,7 @@ rlog = function(n, prob, Smallno=1.0e-6) {
     if (!is.list(earg)) earg = list()
 
     new("vglmff",
-    blurb = c("Logarithmic distribution f(y) = a * c^y / y, y=1,2,3,...,\n",
+    blurb = c("Logarithmic distribution f(y) = a * c^y / y, y = 1,2,3,...,\n",
             "            0 < c < 1, a = -1 / log(1-c)  \n\n",
             "Link:    ", namesof("c", link, earg = earg), "\n", "\n",
             "Mean:    a * c / (1 - c)", "\n"),
@@ -5438,7 +5500,7 @@ rlog = function(n, prob, Smallno=1.0e-6) {
                 sum(w * (log(a) + y * log(cc) - log(y)))
             }
             c.init = if (length( .init.c )) .init.c else
-                getInitVals(gvals=seq(0.05, 0.95, len=9), llfun=llfun, y=y, w=w)
+                getInitVals(gvals=seq(0.05, 0.95, len=9), llfun=llfun, y = y, w = w)
             c.init = rep(c.init, length=length(y))
             etastart = theta2eta(c.init, .link, earg = .earg)
         }
@@ -5457,8 +5519,9 @@ rlog = function(n, prob, Smallno=1.0e-6) {
         function(mu, y, w, residuals = FALSE, eta, extra = NULL) {
         cc = eta2theta(eta, .link, earg = .earg)
         a = -1 / log1p(-cc)
-        if (residuals) stop("loglikelihood residuals not implemented yet") else {
-            sum(w * dlog(x=y, prob=-expm1(-1/a), log = TRUE))
+        if (residuals) stop("loglikelihood residuals ",
+                            "not implemented yet") else {
+            sum(w * dlog(x = y, prob=-expm1(-1/a), log = TRUE))
         }
     }, list( .link = link, .earg = earg ))),
     vfamily = c("logff"),
@@ -5467,11 +5530,11 @@ rlog = function(n, prob, Smallno=1.0e-6) {
         a = -1 / log1p(-cc)
         dl.dc = 1 / ((1-cc) * log1p(-cc)) + y / cc
         dc.deta = dtheta.deta(cc, .link, earg = .earg)
-        w * dl.dc * dc.deta
+        c(w) * dl.dc * dc.deta
     }), list( .link = link, .earg = earg ))),
     weight = eval(substitute(expression({
         ed2l.dc2 = a * (1 - a * cc) / (cc * (1-cc)^2)
-        wz = w * dc.deta^2 * ed2l.dc2
+        wz = c(w) * dc.deta^2 * ed2l.dc2
         wz
     }), list( .link = link, .earg = earg ))))
 }
@@ -5530,7 +5593,7 @@ rlog = function(n, prob, Smallno=1.0e-6) {
                              if ( .delta.known) NULL else delta.init)
                              
         }
-    }), list( .link.gamma=link.gamma, .earg = earg,
+    }), list( .link.gamma = link.gamma, .earg = earg,
              .delta.known=delta.known,
              .delta=delta,
              .idelta=idelta,
@@ -5542,17 +5605,17 @@ rlog = function(n, prob, Smallno=1.0e-6) {
 
 
         NA * mygamma
-    }, list( .link.gamma=link.gamma, .earg = earg,
+    }, list( .link.gamma = link.gamma, .earg = earg,
              .delta.known=delta.known,
              .delta=delta ))),
     last = eval(substitute(expression({
         misc$link = if ( .delta.known) NULL else c(delta = "identity")
         misc$link = c(gamma = .link.gamma, misc$link)
         misc$earg = if ( .delta.known) list(gamma = .earg) else
-                    list(gamma = .earg, delta=list())
+                    list(gamma = .earg, delta = list())
         if ( .delta.known)
             misc$delta = .delta
-    }), list( .link.gamma=link.gamma, .earg = earg,
+    }), list( .link.gamma = link.gamma, .earg = earg,
              .delta.known=delta.known,
              .delta=delta ))),
     loglikelihood = eval(substitute(
@@ -5560,9 +5623,10 @@ rlog = function(n, prob, Smallno=1.0e-6) {
         eta = as.matrix(eta)
         mygamma = eta2theta(eta[,1], .link.gamma, earg = .earg)
         delta = if ( .delta.known) .delta else eta[,2]
-        if (residuals) stop("loglikelihood residuals not implemented yet") else
+        if (residuals) stop("loglikelihood residuals ",
+                            "not implemented yet") else
         sum(w * 0.5 * (log(mygamma) -3*log(y-delta) - mygamma / (y-delta )))
-    }, list( .link.gamma=link.gamma, .earg = earg,
+    }, list( .link.gamma = link.gamma, .earg = earg,
              .delta.known=delta.known,
              .delta=delta ))),
     vfamily = c("levy"),
@@ -5574,9 +5638,9 @@ rlog = function(n, prob, Smallno=1.0e-6) {
             dl.ddelta  = (3 - mygamma / (y-delta)) / (2 * (y-delta))
         dl.dgamma = 0.5 * (1 / mygamma - 1 / (y-delta))
         dgamma.deta = dtheta.deta(mygamma, .link.gamma, earg = .earg)
-        w * cbind(dl.dgamma * dgamma.deta, 
-                  if ( .delta.known) NULL else dl.ddelta)
-    }), list( .link.gamma=link.gamma, .earg = earg,
+        c(w) * cbind(dl.dgamma * dgamma.deta, 
+                     if ( .delta.known) NULL else dl.ddelta)
+    }), list( .link.gamma = link.gamma, .earg = earg,
              .delta.known=delta.known,
              .delta=delta ))),
     weight = eval(substitute(expression({
@@ -5586,9 +5650,9 @@ rlog = function(n, prob, Smallno=1.0e-6) {
             wz[,iam(1,2,M)] =  3 * dgamma.deta
             wz[,iam(2,2,M)] =  21
         }
-        wz = w * wz / (2 * mygamma^2) 
+        wz = c(w) * wz / (2 * mygamma^2) 
         wz
-    }), list( .link.gamma=link.gamma, .earg = earg,
+    }), list( .link.gamma = link.gamma, .earg = earg,
              .delta.known=delta.known,
              .delta=delta ))))
 }
@@ -5599,7 +5663,7 @@ rlog = function(n, prob, Smallno=1.0e-6) {
  if (FALSE) 
  stoppa = function(y0,
                   link.alpha = "loge",
-                  link.theta = "loge", ealpha=list(), etheta = list(),
+                  link.theta = "loge", ealpha = list(), etheta = list(),
                   ialpha = NULL,
                   itheta=1.0,
                   zero = NULL)
@@ -5636,7 +5700,7 @@ rlog = function(n, prob, Smallno=1.0e-6) {
             qvec = c( .25, .5, .75)   # Arbitrary; could be made an argument
             init.theta = if (length( .itheta)) .itheta else 1
             xvec = log1p(-qvec^(1/init.theta))
-            fit0 = lsfit(x=xvec, y=log(quantile(y, qvec))-log(y0), intercept = FALSE)
+            fit0 = lsfit(x = xvec, y=log(quantile(y, qvec))-log(y0), intercept = FALSE)
         }
 
         extra$y0 = y0
@@ -5647,25 +5711,26 @@ rlog = function(n, prob, Smallno=1.0e-6) {
             etastart = cbind(theta2eta(alpha, .link.alpha, earg = .ealpha),
                              theta2eta(theta, .link.theta, earg = .etheta))
         }
-    }), list( .link.theta=link.theta, .link.alpha=link.alpha,
+    }), list( .link.theta = link.theta, .link.alpha = link.alpha,
             .y0=y0,
             .itheta=itheta, .ialpha=ialpha ))),
     inverse = eval(substitute(function(eta, extra = NULL) {
         alpha = eta2theta(eta[,1], .link.alpha, earg = .ealpha)
         theta = eta2theta(eta[,2], .link.theta, earg = .etheta)
         theta * extra$y0 * beta(1-1/alpha, theta)
-    }, list( .link.theta=link.theta, .link.alpha=link.alpha ))),
+    }, list( .link.theta = link.theta, .link.alpha = link.alpha ))),
     last = eval(substitute(expression({
         misc$link = c(alpha= .link.alpha, theta= .link.theta)
-    }), list( .link.theta=link.theta, .link.alpha=link.alpha ))),
+    }), list( .link.theta = link.theta, .link.alpha = link.alpha ))),
     loglikelihood = eval(substitute(
             function(mu, y, w, residuals = FALSE, eta, extra = NULL) {
         alpha = eta2theta(eta[,1], .link.alpha, earg = .ealpha)
         theta = eta2theta(eta[,2], .link.theta, earg = .etheta)
-        if (residuals) stop("loglikelihood residuals not implemented yet") else
+        if (residuals) stop("loglikelihood residuals ",
+                            "not implemented yet") else
         sum(w*(log(theta*alpha) + alpha*log(extra$y0) -(alpha+1)*log(y)+
                (theta-1) * log1p(-(y/extra$y0)^(-alpha))))
-    }, list( .link.theta=link.theta, .link.alpha=link.alpha ))),
+    }, list( .link.theta = link.theta, .link.alpha = link.alpha ))),
     vfamily = c("stoppa"),
     deriv = eval(substitute(expression({
         alpha = eta2theta(eta[,1], .link.alpha, earg = .ealpha)
@@ -5678,8 +5743,9 @@ rlog = function(n, prob, Smallno=1.0e-6) {
         dl.dtheta = 1/theta + temp8b
         dalpha.deta = dtheta.deta(alpha, .link.alpha, earg = .ealpha)
         dTHETA.deta = dtheta.deta(theta, .link.theta, earg = .etheta)
-        w * cbind( dl.dalpha * dalpha.deta, dl.dtheta * dTHETA.deta )
-    }), list( .link.theta=link.theta, .link.alpha=link.alpha ))),
+        c(w) * cbind( dl.dalpha * dalpha.deta,
+                      dl.dtheta * dTHETA.deta )
+    }), list( .link.theta = link.theta, .link.alpha = link.alpha ))),
     weight = eval(substitute(expression({
         ed2l.dalpha = 1/alpha^2 + theta * (2 * log(extra$y0) * (digamma(2)-
                       digamma(theta+4)) - (trigamma(1) +
@@ -5691,20 +5757,20 @@ rlog = function(n, prob, Smallno=1.0e-6) {
         wz[,iam(1,1,M)] = ed2l.dalpha * dalpha.deta^2
         wz[,iam(2,2,M)] = ed2l.dtheta * dTHETA.deta^2
         wz[,iam(1,2,M)] = ed2l.dalpha * dTHETA.deta * dalpha.deta
-        wz = w * wz
+        wz = c(w) * wz
         wz
-    }), list( .link.theta=link.theta, .link.alpha=link.alpha ))) )
+    }), list( .link.theta = link.theta, .link.alpha = link.alpha ))) )
 }
 
 
 
 
-dlino = function(x, shape1, shape2, lambda=1, log = FALSE) {
+dlino = function(x, shape1, shape2, lambda = 1, log = FALSE) {
     if (!is.logical(log.arg <- log))
         stop("bad input for argument 'log'")
     rm(log)
 
-    loglik =  dbeta(x=x, shape1=shape1, shape2=shape2, log = TRUE) +
+    loglik =  dbeta(x = x, shape1=shape1, shape2=shape2, log = TRUE) +
               shape1 * log(lambda) -
               (shape1+shape2) * log1p(-(1-lambda)*x)
     if (log.arg) loglik else exp(loglik)
@@ -5742,7 +5808,7 @@ rlino = function(n, shape1, shape2, lambda=1) {
         stop("bad input for argument 'shape2'")
     if (!is.Numeric(lambda, posit = TRUE)) 
         stop("bad input for argument 'lambda'")
-    Y = rbeta(n=n, shape1=shape1, shape2=shape2)
+    Y = rbeta(n = n, shape1=shape1, shape2=shape2)
     Y / (lambda + (1-lambda)*Y)
 }
 
@@ -5751,8 +5817,8 @@ rlino = function(n, shape1, shape2, lambda=1) {
  lino = function(lshape1 = "loge",
                  lshape2 = "loge",
                  llambda = "loge",
-                 eshape1=list(), eshape2=list(), elambda=list(),
-                 ishape1 = NULL, ishape2 = NULL, ilambda=1, zero = NULL)
+                 eshape1 = list(), eshape2 = list(), elambda = list(),
+                 ishape1 = NULL, ishape2 = NULL, ilambda = 1, zero = NULL)
 {
     if (mode(lshape1) != "character" && mode(lshape1) != "name")
         lshape1 = as.character(substitute(lshape1))
@@ -5817,7 +5883,7 @@ rlino = function(n, shape1, shape2, lambda=1) {
              .eshape1 = eshape1, .eshape2 = eshape2, .elambda = elambda ))),
     last = eval(substitute(expression({
         misc$link = c(shape1 = .lshape1, shape2 = .lshape2, lambda = .llambda)
-        misc$earg =list(shape1 = .eshape1, shape2 = .eshape2, lambda = .elambda)
+        misc$earg = list(shape1 = .eshape1, shape2 = .eshape2, lambda = .elambda)
     }), list( .lshape1 = lshape1, .lshape2 = lshape2, .llambda = llambda,
               .eshape1 = eshape1, .eshape2 = eshape2, .elambda = elambda ))),
     loglikelihood = eval(substitute(
@@ -5825,7 +5891,8 @@ rlino = function(n, shape1, shape2, lambda=1) {
         sh1 = eta2theta(eta[,1], .lshape1, earg = .eshape1)
         sh2 = eta2theta(eta[,2], .lshape2, earg = .eshape2)
         lambda = eta2theta(eta[,3], .llambda, earg = .elambda)
-        if (residuals) stop("loglikelihood residuals not implemented yet") else {
+        if (residuals) stop("loglikelihood residuals ",
+                            "not implemented yet") else {
             sum(w * dlino(y, shape1=sh1, shape2=sh2, lambda=lambda, log = TRUE))
         }
     }, list( .lshape1 = lshape1, .lshape2 = lshape2, .llambda = llambda,
@@ -5843,9 +5910,9 @@ rlino = function(n, shape1, shape2, lambda=1) {
         dsh1.deta = dtheta.deta(sh1, .lshape1, earg = .eshape1)
         dsh2.deta = dtheta.deta(sh2, .lshape2, earg = .eshape2)
         dlambda.deta = dtheta.deta(lambda, .llambda, earg = .elambda)
-        w * cbind( dl.dsh1 * dsh1.deta,
-                   dl.dsh2 * dsh2.deta,
-                   dl.dlambda * dlambda.deta)
+        c(w) * cbind( dl.dsh1 * dsh1.deta,
+                      dl.dsh2    * dsh2.deta,
+                      dl.dlambda * dlambda.deta)
     }), list( .lshape1 = lshape1, .lshape2 = lshape2, .llambda = llambda,
               .eshape1 = eshape1, .eshape2 = eshape2, .elambda = elambda ))),
     weight = eval(substitute(expression({
@@ -5863,7 +5930,7 @@ rlino = function(n, shape1, shape2, lambda=1) {
         wz[,iam(1,2,M)] = ed2l.dsh1sh2 * dsh1.deta * dsh2.deta
         wz[,iam(1,3,M)] = ed2l.dsh1lambda * dsh1.deta * dlambda.deta
         wz[,iam(2,3,M)] = ed2l.dsh2lambda * dsh2.deta * dlambda.deta
-        wz = w * wz
+        wz = c(w) * wz
         wz
     }), list( .lshape1 = lshape1, .lshape2 = lshape2, .llambda = llambda,
               .eshape1 = eshape1, .eshape2 = eshape2, .elambda = elambda ))))
@@ -5874,8 +5941,8 @@ rlino = function(n, shape1, shape2, lambda=1) {
                      link.scale = "loge",
                      link.p = "loge",
                      link.q = "loge",
-                     earg.a=list(), earg.scale = list(),
-                     earg.p=list(), earg.q=list(),
+                     earg.a = list(), earg.scale = list(),
+                     earg.p = list(), earg.q = list(),
                      init.a = NULL,
                      init.scale = NULL,
                      init.p=1.0,
@@ -5920,7 +5987,7 @@ rlino = function(n, shape1, shape2, lambda=1) {
             qvec = c( .25, .5, .75)   # Arbitrary; could be made an argument
             init.q = if (length( .init.q)) .init.q else 1
             xvec = log( (1-qvec)^(-1/ init.q ) - 1 )
-            fit0 = lsfit(x=xvec, y=log(quantile(y, qvec )))
+            fit0 = lsfit(x = xvec, y=log(quantile(y, qvec )))
         }
 
         if (!length(etastart)) {
@@ -5936,7 +6003,7 @@ rlino = function(n, shape1, shape2, lambda=1) {
                              theta2eta(qq, .link.q, earg = .earg.q))
         }
     }), list( .link.a = link.a, .link.scale = link.scale,
-              .link.p=link.p, .link.q=link.q,
+              .link.p = link.p, .link.q = link.q,
               .earg.a = earg.a, .earg.scale = earg.scale, 
               .earg.p=earg.p, .earg.q=earg.q,
               .init.a = init.a, .init.scale = init.scale, 
@@ -5950,7 +6017,7 @@ rlino = function(n, shape1, shape2, lambda=1) {
     }, list( .link.a = link.a, .link.scale = link.scale,
               .earg.a = earg.a, .earg.scale = earg.scale, 
               .earg.p=earg.p, .earg.q=earg.q,
-             .link.p=link.p, .link.q=link.q ))),
+             .link.p = link.p, .link.q = link.q ))),
     last = eval(substitute(expression({
         misc$link = c(a= .link.a, scale= .link.scale,
                       p= .link.p, q= .link.q)
@@ -5959,21 +6026,22 @@ rlino = function(n, shape1, shape2, lambda=1) {
     }), list( .link.a = link.a, .link.scale = link.scale,
               .earg.a = earg.a, .earg.scale = earg.scale, 
               .earg.p=earg.p, .earg.q=earg.q,
-              .link.p=link.p, .link.q=link.q ))),
+              .link.p = link.p, .link.q = link.q ))),
     loglikelihood = eval(substitute(
             function(mu, y, w, residuals = FALSE, eta, extra = NULL) {
         aa = eta2theta(eta[,1], .link.a, earg = .earg.a)
         scale = eta2theta(eta[,2], .link.scale, earg = .earg.scale)
         parg = eta2theta(eta[,3], .link.p, earg = .earg.p)
         qq = eta2theta(eta[,4], .link.q, earg = .earg.q)
-        if (residuals) stop("loglikelihood residuals not implemented yet") else {
+        if (residuals) stop("loglikelihood residuals ",
+                            "not implemented yet") else {
             sum(w*(log(aa) + (aa*parg-1)*log(y) - aa*parg*log(scale) +
                    -lbeta(parg, qq) - (parg+qq)*log1p((y/scale)^aa)))
         }
     }, list( .link.a = link.a, .link.scale = link.scale,
               .earg.a = earg.a, .earg.scale = earg.scale, 
               .earg.p=earg.p, .earg.q=earg.q,
-            .link.p=link.p, .link.q=link.q ))),
+            .link.p = link.p, .link.q = link.q ))),
     vfamily = c("genbetaII"),
     deriv = eval(substitute(expression({
         aa = eta2theta(eta[,1], .link.a, earg = .earg.a)
@@ -5996,12 +6064,14 @@ rlino = function(n, shape1, shape2, lambda=1) {
         dscale.deta = dtheta.deta(scale, .link.scale, earg = .earg.scale)
         dp.deta = dtheta.deta(parg, .link.p, earg = .earg.p)
         dq.deta = dtheta.deta(qq, .link.q, earg = .earg.q)
-        w * cbind( dl.da * da.deta, dl.dscale * dscale.deta,
-                   dl.dp * dp.deta, dl.dq * dq.deta )
+        c(w) * cbind( dl.da * da.deta,
+                      dl.dscale * dscale.deta,
+                      dl.dp * dp.deta,
+                      dl.dq * dq.deta )
     }), list( .link.a = link.a, .link.scale = link.scale,
               .earg.a = earg.a, .earg.scale = earg.scale, 
               .earg.p=earg.p, .earg.q=earg.q,
-              .link.p=link.p, .link.q=link.q ))),
+              .link.p = link.p, .link.q = link.q ))),
     weight = eval(substitute(expression({
         temp5  = trigamma(parg + qq)
         temp5a = trigamma(parg)
@@ -6030,40 +6100,40 @@ rlino = function(n, shape1, shape2, lambda=1) {
         wz[,iam(2,3,M)] = ed2l.dscalep * dscale.deta * dp.deta
         wz[,iam(2,4,M)] = ed2l.dscaleq * dscale.deta * dq.deta
         wz[,iam(3,4,M)] = ed2l.dpq * dp.deta * dq.deta
-        wz = w * wz
+        wz = c(w) * wz
         wz
     }), list( .link.a = link.a, .link.scale = link.scale,
               .earg.a = earg.a, .earg.scale = earg.scale, 
               .earg.p=earg.p, .earg.q=earg.q,
-              .link.p=link.p, .link.q=link.q ))))
+              .link.p = link.p, .link.q = link.q ))))
 }
 
 
-rsinmad <- function(n, a, scale=1, q.arg)
+rsinmad <- function(n, a, scale = 1, q.arg)
     qsinmad(runif(n), a, scale, q.arg)
 
-rlomax <- function(n, scale=1, q.arg)
-    rsinmad(n, a=1, scale, q.arg)
+rlomax <- function(n, scale = 1, q.arg)
+    rsinmad(n, a = 1, scale, q.arg)
 
-rfisk <- function(n, a, scale=1)
+rfisk <- function(n, a, scale = 1)
     rsinmad(n, a, scale, q.arg=1)
 
-rparalogistic <- function(n, a, scale=1)
+rparalogistic <- function(n, a, scale = 1)
     rsinmad(n, a, scale, a)
 
-rdagum <- function(n, a, scale=1, p.arg)
-    qdagum(runif(n), a, scale=1, p.arg)
+rdagum <- function(n, a, scale = 1, p.arg)
+    qdagum(runif(n), a, scale = 1, p.arg)
 
-rinvlomax <- function(n, scale=1, p.arg)
-    rdagum(n, a=1, scale, p.arg)
+rinvlomax <- function(n, scale = 1, p.arg)
+    rdagum(n, a = 1, scale, p.arg)
 
-rinvparalogistic <- function(n, a, scale=1)
+rinvparalogistic <- function(n, a, scale = 1)
     rdagum(n, a, scale, a)
 
 
 
 
-qsinmad <- function(p, a, scale=1, q.arg) {
+qsinmad <- function(p, a, scale = 1, q.arg) {
     bad = (p < 0) | (p > 1)
     ans = NA * p
     a = rep(a, len = length(p))[!bad]
@@ -6074,16 +6144,16 @@ qsinmad <- function(p, a, scale=1, q.arg) {
     ans
 }
 
-qlomax <- function(p, scale=1, q.arg)
-    qsinmad(p, a=1, scale, q.arg)
+qlomax <- function(p, scale = 1, q.arg)
+    qsinmad(p, a = 1, scale, q.arg)
 
-qfisk <- function(p, a, scale=1)
+qfisk <- function(p, a, scale = 1)
     qsinmad(p, a, scale, q.arg=1)
 
-qparalogistic <- function(p, a, scale=1)
+qparalogistic <- function(p, a, scale = 1)
     qsinmad(p, a, scale, a)
 
-qdagum <- function(p, a, scale=1, p.arg) {
+qdagum <- function(p, a, scale = 1, p.arg) {
     bad = (p < 0) | (p > 1)
     ans = NA * p
     a = rep(a, len = length(p))[!bad]
@@ -6094,10 +6164,10 @@ qdagum <- function(p, a, scale=1, p.arg) {
     ans
 }
 
-qinvlomax <- function(p, scale=1, p.arg)
-    qdagum(p, a=1, scale, p.arg)
+qinvlomax <- function(p, scale = 1, p.arg)
+    qdagum(p, a = 1, scale, p.arg)
 
-qinvparalogistic <- function(p, a, scale=1)
+qinvparalogistic <- function(p, a, scale = 1)
     qdagum(p, a, scale, a)
 
 
@@ -6105,7 +6175,7 @@ qinvparalogistic <- function(p, a, scale=1)
 
 
 
-psinmad <- function(q, a, scale=1, q.arg) {
+psinmad <- function(q, a, scale = 1, q.arg) {
     zero = q <= 0
     a = rep(a, len = length(q))[!zero]
     scale = rep(scale, len = length(q))[!zero]
@@ -6116,18 +6186,18 @@ psinmad <- function(q, a, scale=1, q.arg) {
     ans
 }
 
-plomax = function(q, scale=1, q.arg)
-    psinmad(q, a=1, scale, q.arg)
+plomax = function(q, scale = 1, q.arg)
+    psinmad(q, a = 1, scale, q.arg)
 
-pfisk = function(q, a, scale=1)
+pfisk = function(q, a, scale = 1)
     psinmad(q, a, scale, q.arg=1)
 
-pparalogistic = function(q, a, scale=1)
+pparalogistic = function(q, a, scale = 1)
     psinmad(q, a, scale, a)
 
 
 
-pdagum <- function(q, a, scale=1, p.arg) {
+pdagum <- function(q, a, scale = 1, p.arg) {
     zero <- q <= 0
     a <- rep(a, len = length(q))[!zero]
     scale <- rep(scale, len = length(q))[!zero]
@@ -6138,15 +6208,15 @@ pdagum <- function(q, a, scale=1, p.arg) {
     ans
 }
 
-pinvlomax <- function(q, scale=1, p.arg)
-    pdagum(q, a=1, scale, p.arg)
+pinvlomax <- function(q, scale = 1, p.arg)
+    pdagum(q, a = 1, scale, p.arg)
 
-pinvparalogistic <- function(q, a, scale=1)
+pinvparalogistic <- function(q, a, scale = 1)
     pdagum(q, a, scale, a)
 
 
 
-dsinmad <- function(x, a, scale=1, q.arg, log = FALSE) {
+dsinmad <- function(x, a, scale = 1, q.arg, log = FALSE) {
     if (!is.logical(log.arg <- log))
         stop("bad input for argument 'log'")
     rm(log)
@@ -6164,18 +6234,18 @@ dsinmad <- function(x, a, scale=1, q.arg, log = FALSE) {
     if (log.arg) Loglik else exp(Loglik)
 }
 
-dlomax <- function(x, scale=1, q.arg, log = FALSE)
-    dsinmad(x, a=1, scale, q.arg, log=log)
+dlomax <- function(x, scale = 1, q.arg, log = FALSE)
+    dsinmad(x, a = 1, scale, q.arg, log = log)
 
-dfisk <- function(x, a, scale=1, log = FALSE)
-    dsinmad(x, a, scale, q.arg=1, log=log)
+dfisk <- function(x, a, scale = 1, log = FALSE)
+    dsinmad(x, a, scale, q.arg = 1, log = log)
 
-dparalogistic <- function(x, a, scale=1, log = FALSE)
-    dsinmad(x, a, scale, a, log=log)
+dparalogistic <- function(x, a, scale = 1, log = FALSE)
+    dsinmad(x, a, scale, a, log = log)
 
 
 
-ddagum <- function(x, a, scale=1, p.arg, log = FALSE) {
+ddagum <- function(x, a, scale = 1, p.arg, log = FALSE) {
     if (!is.logical(log.arg <- log))
         stop("bad input for argument 'log'")
     rm(log)
@@ -6195,18 +6265,18 @@ ddagum <- function(x, a, scale=1, p.arg, log = FALSE) {
 
 }
 
-dinvlomax <- function(x, scale=1, p.arg, log = FALSE)
-    ddagum(x, a=1, scale, p.arg, log=log)
+dinvlomax <- function(x, scale = 1, p.arg, log = FALSE)
+    ddagum(x, a = 1, scale, p.arg, log = log)
 
-dinvparalogistic <- function(x, a, scale=1, log = FALSE)
-    ddagum(x, a, scale, a, log=log)
+dinvparalogistic <- function(x, a, scale = 1, log = FALSE)
+    ddagum(x, a, scale, a, log = log)
 
 
 
  sinmad = function(link.a = "loge",
                   link.scale = "loge",
                   link.q = "loge",
-                  earg.a=list(), earg.scale = list(), earg.q=list(),
+                  earg.a = list(), earg.scale = list(), earg.q = list(),
                   init.a = NULL, 
                   init.scale = NULL,
                   init.q=1.0, 
@@ -6248,7 +6318,7 @@ dinvparalogistic <- function(x, a, scale=1, log = FALSE)
             qvec = c( .25, .5, .75)   # Arbitrary; could be made an argument
             init.q = if (length( .init.q)) .init.q else 1
             xvec = log( (1-qvec)^(-1/ init.q ) - 1 )
-            fit0 = lsfit(x=xvec, y=log(quantile(y, qvec )))
+            fit0 = lsfit(x = xvec, y=log(quantile(y, qvec )))
         }
 
         if (!length(etastart)) {
@@ -6262,7 +6332,7 @@ dinvparalogistic <- function(x, a, scale=1, log = FALSE)
                              theta2eta(qq, .link.q, earg = .earg.q))
         }
     }), list( .link.a = link.a, .link.scale = link.scale,
-              .link.q=link.q,
+              .link.q = link.q,
               .earg.a = earg.a, .earg.scale = earg.scale, 
               .earg.q=earg.q,
               .init.a = init.a, .init.scale = init.scale, 
@@ -6275,24 +6345,25 @@ dinvparalogistic <- function(x, a, scale=1, log = FALSE)
     }, list( .link.a = link.a, .link.scale = link.scale,
               .earg.a = earg.a, .earg.scale = earg.scale, 
               .earg.q=earg.q,
-             .link.q=link.q ))),
+             .link.q = link.q ))),
     last = eval(substitute(expression({
         misc$link = c(a= .link.a, scale= .link.scale, q= .link.q)
         misc$earg = list(a= .earg.a, scale= .earg.scale, q= .earg.q)
     }), list( .link.a = link.a, .link.scale = link.scale,
               .earg.a = earg.a, .earg.scale = earg.scale, 
               .earg.q=earg.q,
-              .link.q=link.q ))),
+              .link.q = link.q ))),
     loglikelihood = eval(substitute(
             function(mu, y, w, residuals = FALSE, eta, extra = NULL) {
         aa = eta2theta(eta[,1], .link.a, earg = .earg.a)
         scale = eta2theta(eta[,2], .link.scale, earg = .earg.scale)
         parg = 1
         qq = eta2theta(eta[,3], .link.q, earg = .earg)
-        if (residuals) stop("loglikelihood residuals not implemented yet") else {
-            sum(w * dsinmad(x=y, a=aa, scale=scale, q.arg=qq, log = TRUE))
+        if (residuals) stop("loglikelihood residuals ",
+                            "not implemented yet") else {
+            sum(w * dsinmad(x = y, a=aa, scale = scale, q.arg=qq, log = TRUE))
         }
-    }, list( .link.a = link.a, .link.scale = link.scale, .link.q=link.q,
+    }, list( .link.a = link.a, .link.scale = link.scale, .link.q = link.q,
              .earg.a = earg.a, .earg.scale = earg.scale, .earg.q=earg.q ))),
     vfamily = c("sinmad"),
     deriv = eval(substitute(expression({
@@ -6312,12 +6383,13 @@ dinvparalogistic <- function(x, a, scale=1, log = FALSE)
         da.deta = dtheta.deta(aa, .link.a, earg = .earg.a)
         dscale.deta = dtheta.deta(scale, .link.scale, earg = .earg.scale)
         dq.deta = dtheta.deta(qq, .link.q, earg = .earg.q)
-        w * cbind( dl.da * da.deta, dl.dscale * dscale.deta,
-                   dl.dq * dq.deta )
+        c(w) * cbind( dl.da * da.deta,
+                     dl.dscale * dscale.deta,
+                     dl.dq * dq.deta )
     }), list( .link.a = link.a, .link.scale = link.scale,
               .earg.a = earg.a, .earg.scale = earg.scale, 
               .earg.q=earg.q,
-              .link.q=link.q ))),
+              .link.q = link.q ))),
     weight = eval(substitute(expression({
         ed2l.da = (1 + parg+qq + parg * qq * (trigamma(parg) + trigamma(qq) +
                   (temp3b - temp3a + (parg-qq)/(parg*qq))^2 - 
@@ -6335,19 +6407,19 @@ dinvparalogistic <- function(x, a, scale=1, log = FALSE)
         wz[,iam(1,2,M)] = ed2l.dascale * da.deta * dscale.deta
         wz[,iam(1,3,M)] = ed2l.daq * da.deta * dq.deta
         wz[,iam(2,3,M)] = ed2l.dscaleq * dscale.deta * dq.deta
-        wz = w * wz
+        wz = c(w) * wz
         wz
     }), list( .link.a = link.a, .link.scale = link.scale,
               .earg.a = earg.a, .earg.scale = earg.scale, 
               .earg.q=earg.q,
-              .link.q=link.q ))))
+              .link.q = link.q ))))
 }
 
 
  dagum = function(link.a = "loge",
                   link.scale = "loge",
                   link.p = "loge",
-                  earg.a=list(), earg.scale = list(), earg.p=list(),
+                  earg.a = list(), earg.scale = list(), earg.p = list(),
                   init.a = NULL, 
                   init.scale = NULL,
                   init.p=1.0, 
@@ -6390,7 +6462,7 @@ dinvparalogistic <- function(x, a, scale=1, log = FALSE)
             qvec = c( .25, .5, .75)   # Arbitrary; could be made an argument
             init.p = if (length( .init.p)) .init.p else 1
             xvec = log( qvec^(-1/ init.p ) - 1 )
-            fit0 = lsfit(x=xvec, y=log(quantile(y, qvec )))
+            fit0 = lsfit(x = xvec, y=log(quantile(y, qvec )))
         }
 
         if (!length(etastart)) {
@@ -6404,7 +6476,7 @@ dinvparalogistic <- function(x, a, scale=1, log = FALSE)
                              theta2eta(parg, .link.p, earg = .earg.p))
         }
     }), list( .link.a = link.a, .link.scale = link.scale,
-              .link.p=link.p,
+              .link.p = link.p,
               .earg.a = earg.a, .earg.scale = earg.scale, 
               .earg.p=earg.p,
               .init.a = init.a, .init.scale = init.scale, 
@@ -6418,24 +6490,25 @@ dinvparalogistic <- function(x, a, scale=1, log = FALSE)
     }, list( .link.a = link.a, .link.scale = link.scale,
               .earg.a = earg.a, .earg.scale = earg.scale, 
               .earg.p=earg.p,
-             .link.p=link.p ))),
+             .link.p = link.p ))),
     last = eval(substitute(expression({
         misc$link = c(a= .link.a, scale= .link.scale, p= .link.p )
         misc$earg = list(a= .earg.a, scale= .earg.scale, p= .earg.p)
     }), list( .link.a = link.a, .link.scale = link.scale,
               .earg.a = earg.a, .earg.scale = earg.scale, 
               .earg.p=earg.p,
-              .link.p=link.p ))),
+              .link.p = link.p ))),
     loglikelihood = eval(substitute(
             function(mu, y, w, residuals = FALSE, eta, extra = NULL) {
         aa = eta2theta(eta[,1], .link.a, earg = .earg.a)
         scale = eta2theta(eta[,2], .link.scale, earg = .earg.scale)
         parg = eta2theta(eta[,3], .link.p, earg = .earg.p)
         qq = 1
-        if (residuals) stop("loglikelihood residuals not implemented yet") else {
-            sum(w * ddagum(x=y, a=aa, scale=scale, p.arg=parg, log = TRUE))
+        if (residuals) stop("loglikelihood residuals ",
+                            "not implemented yet") else {
+            sum(w * ddagum(x = y, a=aa, scale = scale, p.arg=parg, log = TRUE))
         }
-    }, list( .link.a = link.a, .link.scale = link.scale, .link.p=link.p, 
+    }, list( .link.a = link.a, .link.scale = link.scale, .link.p = link.p, 
              .earg.a = earg.a, .earg.scale = earg.scale, .earg.p=earg.p ))),
     vfamily = c("dagum"),
     deriv = eval(substitute(expression({
@@ -6455,12 +6528,13 @@ dinvparalogistic <- function(x, a, scale=1, log = FALSE)
         da.deta = dtheta.deta(aa, .link.a, earg = .earg.a)
         dscale.deta = dtheta.deta(scale, .link.scale, earg = .earg.scale)
         dp.deta = dtheta.deta(parg, .link.p, earg = .earg.p)
-        w * cbind( dl.da * da.deta, dl.dscale * dscale.deta,
-                   dl.dp * dp.deta )
+        c(w) * cbind( dl.da * da.deta,
+                     dl.dscale * dscale.deta,
+                     dl.dp * dp.deta )
     }), list( .link.a = link.a, .link.scale = link.scale,
               .earg.a = earg.a, .earg.scale = earg.scale, 
               .earg.p=earg.p,
-              .link.p=link.p ))),
+              .link.p = link.p ))),
     weight = eval(substitute(expression({
         ed2l.da = (1 + parg+qq + parg * qq * (trigamma(parg) + trigamma(qq) + 
                   (temp3b - temp3a + (parg-qq)/(parg*qq))^2 - 
@@ -6478,18 +6552,18 @@ dinvparalogistic <- function(x, a, scale=1, log = FALSE)
         wz[,iam(1,2,M)] = ed2l.dascale * da.deta * dscale.deta
         wz[,iam(1,3,M)] = ed2l.dap * da.deta * dp.deta
         wz[,iam(2,3,M)] = ed2l.dscalep * dscale.deta * dp.deta
-        wz = w * wz
+        wz = c(w) * wz
         wz
     }), list( .link.a = link.a, .link.scale = link.scale,
               .earg.a = earg.a, .earg.scale = earg.scale, 
               .earg.p=earg.p,
-              .link.p=link.p ))))
+              .link.p = link.p ))))
 }
 
 
 
  betaII = function(link.scale = "loge", link.p = "loge", link.q = "loge",
-                   earg.scale = list(), earg.p=list(), earg.q=list(),
+                   earg.scale = list(), earg.p = list(), earg.q = list(),
                    init.scale = NULL, init.p=1.0, init.q=1.0, zero = NULL)
 {
 
@@ -6527,7 +6601,7 @@ dinvparalogistic <- function(x, a, scale=1, log = FALSE)
             qvec = c( .25, .5, .75)   # Arbitrary; could be made an argument
             init.q = if (length( .init.q)) .init.q else 1
             xvec = log( (1-qvec)^(-1/ init.q ) - 1 )
-            fit0 = lsfit(x=xvec, y=log(quantile(y, qvec )))
+            fit0 = lsfit(x = xvec, y=log(quantile(y, qvec )))
         }
 
         if (!length(etastart)) {
@@ -6540,7 +6614,7 @@ dinvparalogistic <- function(x, a, scale=1, log = FALSE)
                            theta2eta(qq, .link.q, earg = .earg.q))
         }
     }), list( .link.scale = link.scale,
-              .link.p=link.p, .link.q=link.q,
+              .link.p = link.p, .link.q = link.q,
               .earg.scale = earg.scale, 
               .earg.p=earg.p, .earg.q=earg.q,
               .init.scale = init.scale, 
@@ -6554,27 +6628,28 @@ dinvparalogistic <- function(x, a, scale=1, log = FALSE)
     }, list( .link.scale = link.scale,
               .earg.scale = earg.scale, 
               .earg.p=earg.p, .earg.q=earg.q,
-             .link.p=link.p, .link.q=link.q ))),
+             .link.p = link.p, .link.q = link.q ))),
     last = eval(substitute(expression({
         misc$link = c(scale= .link.scale, p= .link.p, q= .link.q)
         misc$earg = list(scale= .earg.scale, p= .earg.p, q= .earg.q)
     }), list( .link.scale = link.scale,
               .earg.scale = earg.scale, 
               .earg.p=earg.p, .earg.q=earg.q,
-              .link.p=link.p, .link.q=link.q ))),
+              .link.p = link.p, .link.q = link.q ))),
     loglikelihood = eval(substitute(
             function(mu, y, w, residuals = FALSE, eta, extra = NULL) {
         aa = 1
         scale = eta2theta(eta[,1], .link.scale, earg = .earg.scale)
         parg = eta2theta(eta[,2], .link.p, earg = .earg.p)
         qq = eta2theta(eta[,3], .link.q, earg = .earg.q)
-        if (residuals) stop("loglikelihood residuals not implemented yet") else
+        if (residuals) stop("loglikelihood residuals ",
+                            "not implemented yet") else
             sum(w*(log(aa) + (aa*parg-1)*log(y) - aa*parg*log(scale) +
                   (-lbeta(parg, qq)) - (parg+qq)*log1p((y/scale)^aa)))
     }, list( .link.scale = link.scale,
               .earg.scale = earg.scale, 
               .earg.p=earg.p, .earg.q=earg.q,
-             .link.p=link.p, .link.q=link.q ))),
+             .link.p = link.p, .link.q = link.q ))),
     vfamily = c("betaII"),
     deriv = eval(substitute(expression({
         aa = 1
@@ -6595,12 +6670,13 @@ dinvparalogistic <- function(x, a, scale=1, log = FALSE)
         dscale.deta = dtheta.deta(scale, .link.scale, earg = .earg.scale)
         dp.deta = dtheta.deta(parg, .link.p, earg = .earg.p)
         dq.deta = dtheta.deta(qq, .link.q, earg = .earg.q)
-        w * cbind( dl.dscale * dscale.deta,
-                   dl.dp * dp.deta, dl.dq * dq.deta )
+        c(w) * cbind( dl.dscale * dscale.deta,
+                      dl.dp * dp.deta,
+                      dl.dq * dq.deta )
     }), list( .link.scale = link.scale,
               .earg.scale = earg.scale, 
               .earg.p=earg.p, .earg.q=earg.q,
-              .link.p=link.p, .link.q=link.q ))),
+              .link.p = link.p, .link.q = link.q ))),
     weight = eval(substitute(expression({
         temp5  = trigamma(parg + qq)
         ed2l.dscale = aa^2 * parg * qq / (scale^2 * (1+parg+qq))
@@ -6616,19 +6692,19 @@ dinvparalogistic <- function(x, a, scale=1, log = FALSE)
         wz[,iam(1,2,M)] = ed2l.dscalep * dscale.deta * dp.deta
         wz[,iam(1,3,M)] = ed2l.dscaleq * dscale.deta * dq.deta
         wz[,iam(2,3,M)] = ed2l.dpq * dp.deta * dq.deta
-        wz = w * wz
+        wz = c(w) * wz
         wz
     }), list( .link.scale = link.scale,
               .earg.scale = earg.scale, 
               .earg.p=earg.p, .earg.q=earg.q,
-              .link.p=link.p, .link.q=link.q ))))
+              .link.p = link.p, .link.q = link.q ))))
 }
 
 
 
  lomax = function(link.scale = "loge",
                  link.q = "loge",
-                 earg.scale = list(), earg.q=list(),
+                 earg.scale = list(), earg.q = list(),
                  init.scale = NULL,
                  init.q=1.0, 
                  zero = NULL)
@@ -6664,7 +6740,7 @@ dinvparalogistic <- function(x, a, scale=1, log = FALSE)
             qvec = c( .25, .5, .75)   # Arbitrary; could be made an argument
             init.q = if (length( .init.q)) .init.q else 1
             xvec = log( (1-qvec)^(-1/ init.q ) - 1 )
-            fit0 = lsfit(x=xvec, y=log(quantile(y, qvec )))
+            fit0 = lsfit(x = xvec, y=log(quantile(y, qvec )))
         }
 
         if (!length(etastart)) {
@@ -6674,19 +6750,19 @@ dinvparalogistic <- function(x, a, scale=1, log = FALSE)
           etastart = cbind(theta2eta(scale, .link.scale, earg = .earg.scale),
                            theta2eta(qq, .link.q, earg = .earg.q))
         }
-    }), list( .link.scale = link.scale, .link.q=link.q,
+    }), list( .link.scale = link.scale, .link.q = link.q,
               .earg.scale = earg.scale, .earg.q=earg.q,
               .init.scale = init.scale, .init.q=init.q ))),
     inverse = eval(substitute(function(eta, extra = NULL) {
         scale = eta2theta(eta[,1], .link.scale, earg = .earg.scale)
         qq = eta2theta(eta[,2], .link.q, earg = .earg.q)
         scale/(qq-1)
-    }, list( .link.scale = link.scale, .link.q=link.q,
+    }, list( .link.scale = link.scale, .link.q = link.q,
              .earg.scale = earg.scale, .earg.q=earg.q ))),
     last = eval(substitute(expression({
         misc$link = c(scale= .link.scale, q= .link.q)
         misc$earg = list(scale= .earg.scale, q= .earg.q)
-    }), list( .link.scale = link.scale, .link.q=link.q,
+    }), list( .link.scale = link.scale, .link.q = link.q,
               .earg.scale = earg.scale, .earg.q=earg.q ))),
     loglikelihood = eval(substitute(
             function(mu, y, w, residuals = FALSE, eta, extra = NULL) {
@@ -6694,10 +6770,11 @@ dinvparalogistic <- function(x, a, scale=1, log = FALSE)
         scale = eta2theta(eta[,1], .link.scale, earg = .earg.scale)
         parg = 1
         qq = eta2theta(eta[,2], .link.q, earg = .earg.q)
-        if (residuals) stop("loglikelihood residuals not implemented yet") else {
-            sum(w * dlomax(x=y, scale=scale, q.arg=qq, log = TRUE))
+        if (residuals) stop("loglikelihood residuals ",
+                            "not implemented yet") else {
+            sum(w * dlomax(x = y, scale = scale, q.arg=qq, log = TRUE))
         }
-    }, list( .link.scale = link.scale, .link.q=link.q,
+    }, list( .link.scale = link.scale, .link.q = link.q,
              .earg.scale = earg.scale, .earg.q=earg.q ))),
     vfamily = c("lomax"),
     deriv = eval(substitute(expression({
@@ -6711,9 +6788,9 @@ dinvparalogistic <- function(x, a, scale=1, log = FALSE)
         dl.dq = digamma(parg + qq) - digamma(qq) - log1p(temp2)
         dscale.deta = dtheta.deta(scale, .link.scale, earg = .earg.scale)
         dq.deta = dtheta.deta(qq, .link.q, earg = .earg.q)
-        w * cbind( dl.dscale * dscale.deta,
-                   dl.dq * dq.deta )
-    }), list( .link.scale = link.scale, .link.q=link.q,
+        c(w) * cbind( dl.dscale * dscale.deta,
+                      dl.dq * dq.deta )
+    }), list( .link.scale = link.scale, .link.q = link.q,
               .earg.scale = earg.scale, .earg.q=earg.q ))),
     weight = eval(substitute(expression({
         ed2l.dscale = aa^2 * parg * qq / (scale^2 * (1+parg+qq))
@@ -6723,16 +6800,16 @@ dinvparalogistic <- function(x, a, scale=1, log = FALSE)
         wz[,iam(1,1,M)] = ed2l.dscale * dscale.deta^2
         wz[,iam(2,2,M)] = ed2l.dq * dq.deta^2
         wz[,iam(1,2,M)] = ed2l.dscaleq * dscale.deta * dq.deta
-        wz = w * wz
+        wz = c(w) * wz
         wz
-    }), list( .link.scale = link.scale, .link.q=link.q,
+    }), list( .link.scale = link.scale, .link.q = link.q,
               .earg.scale = earg.scale, .earg.q=earg.q ))))
 }
 
 
  fisk = function(link.a = "loge",
                  link.scale = "loge",
-                 earg.a=list(), earg.scale = list(),
+                 earg.a = list(), earg.scale = list(),
                  init.a = NULL, 
                  init.scale = NULL,
                  zero = NULL)
@@ -6765,7 +6842,7 @@ dinvparalogistic <- function(x, a, scale=1, log = FALSE)
         if (!length( .init.scale )) {
             qvec = c( .25, .5, .75)   # Arbitrary; could be made an argument
             xvec = log( 1/qvec - 1 )
-            fit0 = lsfit(x=xvec, y=log(quantile(y, qvec )))
+            fit0 = lsfit(x = xvec, y=log(quantile(y, qvec )))
         }
 
         if (!length(etastart)) {
@@ -6797,8 +6874,9 @@ dinvparalogistic <- function(x, a, scale=1, log = FALSE)
         aa = eta2theta(eta[,1], .link.a, earg = .earg)
         scale = eta2theta(eta[,2], .link.scale, earg = .earg.scale)
         parg = qq = 1
-        if (residuals) stop("loglikelihood residuals not implemented yet") else {
-            sum(w * dfisk(x=y, a=aa, scale=scale, log = TRUE))
+        if (residuals) stop("loglikelihood residuals ",
+                            "not implemented yet") else {
+            sum(w * dfisk(x = y, a=aa, scale = scale, log = TRUE))
         }
     }, list( .link.a = link.a, .link.scale = link.scale,
              .earg.a = earg.a, .earg.scale = earg.scale ))),
@@ -6817,7 +6895,8 @@ dinvparalogistic <- function(x, a, scale=1, log = FALSE)
         dl.dscale = (aa/scale) * (-parg + (parg+qq) / (1+1/temp2))
         da.deta = dtheta.deta(aa, .link.a, earg = .earg.a)
         dscale.deta = dtheta.deta(scale, .link.scale, earg = .earg.scale)
-        w * cbind( dl.da * da.deta, dl.dscale * dscale.deta )
+        c(w) * cbind( dl.da * da.deta,
+                      dl.dscale * dscale.deta )
     }), list( .link.a = link.a, .link.scale = link.scale,
               .earg.a = earg.a, .earg.scale = earg.scale ))),
     weight = eval(substitute(expression({
@@ -6831,7 +6910,7 @@ dinvparalogistic <- function(x, a, scale=1, log = FALSE)
         wz[,iam(1,1,M)] = ed2l.da * da.deta^2
         wz[,iam(2,2,M)] = ed2l.dscale * dscale.deta^2
         wz[,iam(1,2,M)] = ed2l.dascale * da.deta * dscale.deta
-        wz = w * wz
+        wz = c(w) * wz
         wz
     }), list( .link.a = link.a, .link.scale = link.scale,
               .earg.a = earg.a, .earg.scale = earg.scale ))))
@@ -6840,7 +6919,7 @@ dinvparalogistic <- function(x, a, scale=1, log = FALSE)
 
  invlomax = function(link.scale = "loge",
                      link.p = "loge",
-                     earg.scale = list(), earg.p=list(),
+                     earg.scale = list(), earg.p = list(),
                      init.scale = NULL,
                      init.p=1.0, 
                      zero = NULL)
@@ -6876,7 +6955,7 @@ dinvparalogistic <- function(x, a, scale=1, log = FALSE)
             qvec = c( .25, .5, .75)   # Arbitrary; could be made an argument
             init.p = if (length( .init.p)) .init.p else 1
             xvec = log( qvec^(-1/ init.p ) - 1 )
-            fit0 = lsfit(x=xvec, y=log(quantile(y, qvec )))
+            fit0 = lsfit(x = xvec, y=log(quantile(y, qvec )))
         }
         if (!length(etastart)) {
           scale = rep(if (length( .init.scale )) .init.scale else
@@ -6886,7 +6965,7 @@ dinvparalogistic <- function(x, a, scale=1, log = FALSE)
                            theta2eta(parg, .link.p, earg = .earg.p))
         }
     }), list( .link.scale = link.scale,
-              .link.p=link.p,
+              .link.p = link.p,
               .earg.scale = earg.scale, 
               .earg.p=earg.p,
               .init.scale = init.scale, 
@@ -6896,23 +6975,24 @@ dinvparalogistic <- function(x, a, scale=1, log = FALSE)
     }, list( .link.scale = link.scale,
               .earg.scale = earg.scale, 
               .earg.p=earg.p,
-             .link.p=link.p ))),
+             .link.p = link.p ))),
     last = eval(substitute(expression({
         misc$link = c(scale= .link.scale, p= .link.p )
         misc$earg = list(scale= .earg.scale, p= .earg.p )
     }), list( .link.scale = link.scale,
               .earg.scale = earg.scale, 
               .earg.p=earg.p,
-              .link.p=link.p ))),
+              .link.p = link.p ))),
     loglikelihood = eval(substitute(
             function(mu, y, w, residuals = FALSE, eta, extra = NULL) {
         aa = qq = 1
         scale = eta2theta(eta[,1], .link.scale, earg = .earg.scale)
         parg = eta2theta(eta[,2], .link.p, earg = .earg.p)
-        if (residuals) stop("loglikelihood residuals not implemented yet") else {
-           sum(w * dinvlomax(x=y, scale=scale, p.arg=parg, log = TRUE))
+        if (residuals) stop("loglikelihood residuals ",
+                            "not implemented yet") else {
+           sum(w * dinvlomax(x = y, scale = scale, p.arg=parg, log = TRUE))
         }
-    }, list( .link.scale = link.scale, .link.p=link.p,
+    }, list( .link.scale = link.scale, .link.p = link.p,
              .earg.scale = earg.scale, .earg.p=earg.p ))),
     vfamily = c("invlomax"),
     deriv = eval(substitute(expression({
@@ -6927,9 +7007,9 @@ dinvparalogistic <- function(x, a, scale=1, log = FALSE)
         dl.dp = aa * temp1 + digamma(parg + qq) - digamma(parg) - log1p(temp2)
         dscale.deta = dtheta.deta(scale, .link.scale, earg = .earg.scale)
         dp.deta = dtheta.deta(parg, .link.p, earg = .earg.p)
-        w * cbind( dl.dscale * dscale.deta,
-                   dl.dp * dp.deta )
-    }), list( .link.scale = link.scale, .link.p=link.p,
+        c(w) * cbind( dl.dscale * dscale.deta,
+                      dl.dp * dp.deta )
+    }), list( .link.scale = link.scale, .link.p = link.p,
               .earg.scale = earg.scale, .earg.p=earg.p ))),
     weight = eval(substitute(expression({
         ed2l.dscale = aa^2 * parg * qq / (scale^2 * (1+parg+qq))
@@ -6939,16 +7019,16 @@ dinvparalogistic <- function(x, a, scale=1, log = FALSE)
         wz[,iam(1,1,M)] = ed2l.dscale * dscale.deta^2
         wz[,iam(2,2,M)] = ed2l.dp * dp.deta^2
         wz[,iam(1,2,M)] = ed2l.dscalep * dscale.deta * dp.deta
-        wz = w * wz
+        wz = c(w) * wz
         wz
-    }), list( .link.scale = link.scale, .link.p=link.p,
+    }), list( .link.scale = link.scale, .link.p = link.p,
               .earg.scale = earg.scale, .earg.p=earg.p ))))
 }
 
 
  paralogistic = function(link.a = "loge",
                          link.scale = "loge",
-                         earg.a=list(), earg.scale = list(), 
+                         earg.a = list(), earg.scale = list(), 
                          init.a=1.0,
                          init.scale = NULL,
                          zero = NULL)
@@ -6984,7 +7064,7 @@ dinvparalogistic <- function(x, a, scale=1, log = FALSE)
             qvec = c( .25, .5, .75)   # Arbitrary; could be made an argument
             init.a = if (length( .init.a)) .init.a else 1
             xvec = log( (1-qvec)^(-1/ init.a ) - 1 )
-            fit0 = lsfit(x=xvec, y=log(quantile(y, qvec )))
+            fit0 = lsfit(x = xvec, y=log(quantile(y, qvec )))
         }
 
         if (!length(etastart)) {
@@ -7017,8 +7097,9 @@ dinvparalogistic <- function(x, a, scale=1, log = FALSE)
         scale = eta2theta(eta[,2], .link.scale, earg = .earg.scale)
         parg = 1
         qq = aa
-        if (residuals) stop("loglikelihood residuals not implemented yet") else {
-            sum(w * dparalogistic(x=y, a=aa, scale=scale, log = TRUE))
+        if (residuals) stop("loglikelihood residuals ",
+                            "not implemented yet") else {
+            sum(w * dparalogistic(x = y, a=aa, scale = scale, log = TRUE))
         }
     }, list( .link.a = link.a, .link.scale = link.scale,
               .earg.a = earg.a, .earg.scale = earg.scale ))),
@@ -7038,7 +7119,8 @@ dinvparalogistic <- function(x, a, scale=1, log = FALSE)
         dl.dscale = (aa/scale) * (-parg + (parg+qq) / (1+1/temp2))
         da.deta = dtheta.deta(aa, .link.a, earg = .earg.a)
         dscale.deta = dtheta.deta(scale, .link.scale, earg = .earg.scale)
-        w * cbind( dl.da * da.deta, dl.dscale * dscale.deta)
+        c(w) * cbind( dl.da * da.deta,
+                   dl.dscale * dscale.deta)
     }), list( .link.a = link.a, .link.scale = link.scale,
               .earg.a = earg.a, .earg.scale = earg.scale ))),
     weight = eval(substitute(expression({
@@ -7052,7 +7134,7 @@ dinvparalogistic <- function(x, a, scale=1, log = FALSE)
         wz[,iam(1,1,M)] = ed2l.da * da.deta^2
         wz[,iam(2,2,M)] = ed2l.dscale * dscale.deta^2
         wz[,iam(1,2,M)] = ed2l.dascale * da.deta * dscale.deta
-        wz = w * wz
+        wz = c(w) * wz
         wz
     }), list( .link.a = link.a, .link.scale = link.scale,
               .earg.a = earg.a, .earg.scale = earg.scale ))))
@@ -7061,7 +7143,7 @@ dinvparalogistic <- function(x, a, scale=1, log = FALSE)
 
  invparalogistic = function(link.a = "loge",
                             link.scale = "loge",
-                    earg.a=list(), earg.scale = list(), 
+                    earg.a = list(), earg.scale = list(), 
                             init.a=1.0, 
                             init.scale = NULL,
                             zero = NULL)
@@ -7096,7 +7178,7 @@ dinvparalogistic <- function(x, a, scale=1, log = FALSE)
             qvec = c( .25, .5, .75)   # Arbitrary; could be made an argument
             init.p = if (length( .init.a)) .init.a else 1
             xvec = log( qvec^(-1/ init.p ) - 1 )
-            fit0 = lsfit(x=xvec, y=log(quantile(y, qvec )))
+            fit0 = lsfit(x = xvec, y=log(quantile(y, qvec )))
         }
 
         qq = 1
@@ -7131,8 +7213,9 @@ dinvparalogistic <- function(x, a, scale=1, log = FALSE)
         scale = eta2theta(eta[,2], .link.scale, earg = .earg.scale)
         parg = aa
         qq = 1
-        if (residuals) stop("loglikelihood residuals not implemented yet") else {
-            sum(w * dinvparalogistic(x=y, a=aa, scale=scale, log = TRUE))
+        if (residuals) stop("loglikelihood residuals ",
+                            "not implemented yet") else {
+            sum(w * dinvparalogistic(x = y, a=aa, scale = scale, log = TRUE))
         }
     }, list( .link.a = link.a, .link.scale = link.scale,
              .earg.a = earg.a, .earg.scale = earg.scale ))),
@@ -7152,7 +7235,8 @@ dinvparalogistic <- function(x, a, scale=1, log = FALSE)
         dl.dscale = (aa/scale) * (-parg + (parg+qq) / (1+1/temp2))
         da.deta = dtheta.deta(aa, .link.a, earg = .earg.a)
         dscale.deta = dtheta.deta(scale, .link.scale, earg = .earg.scale)
-        w * cbind( dl.da * da.deta, dl.dscale * dscale.deta )
+        c(w) * cbind( dl.da * da.deta,
+                      dl.dscale * dscale.deta )
     }), list( .link.a = link.a, .link.scale = link.scale,
               .earg.a = earg.a, .earg.scale = earg.scale ))),
     weight = eval(substitute(expression({
@@ -7166,7 +7250,7 @@ dinvparalogistic <- function(x, a, scale=1, log = FALSE)
         wz[,iam(1,1,M)] = ed2l.da * da.deta^2
         wz[,iam(2,2,M)] = ed2l.dscale * dscale.deta^2
         wz[,iam(1,2,M)] = ed2l.dascale * da.deta * dscale.deta
-        wz = w * wz
+        wz = c(w) * wz
         wz
     }), list( .link.a = link.a, .link.scale = link.scale,
               .earg.a = earg.a, .earg.scale = earg.scale ))))
@@ -7176,8 +7260,8 @@ dinvparalogistic <- function(x, a, scale=1, log = FALSE)
 
  if (FALSE)
  genlognormal = function(link.sigma = "loge", link.r = "loge",
-                        esigma=list(), er=list(),
-                        init.sigma=1, init.r=1, zero = NULL)
+                        esigma = list(), er = list(),
+                        init.sigma = 1, init.r = 1, zero = NULL)
 {
 warning("2/4/04; doesn't work, possibly because first derivs are ",
         "not continuous (sign() is used). Certainly, the derivs wrt ",
@@ -7225,27 +7309,28 @@ warning("2/4/04; doesn't work, possibly because first derivs are ",
                              sigma=sigma.init,
                              r = r.init)
         }
-    }), list( .link.sigma=link.sigma, .link.r=link.r,
+    }), list( .link.sigma = link.sigma, .link.r = link.r,
              .init.sigma=init.sigma, .init.r=init.r ))),
     inverse = eval(substitute(function(eta, extra = NULL) {
         mymu = eta2theta(eta[,1], "identity", earg = list())
         sigma = eta2theta(eta[,2], .link.sigma, earg = .esigma)
         r = eta2theta(eta[,3], .link.r, earg = .er)
         r
-    }, list( .link.sigma=link.sigma, .link.r=link.r ))),
+    }, list( .link.sigma = link.sigma, .link.r = link.r ))),
     last = eval(substitute(expression({
         misc$link = c(loc = "identity", "sigma" = .link.sigma, r = .link.r )
         misc$expected = TRUE
-    }), list( .link.sigma=link.sigma, .link.r=link.r ))),
+    }), list( .link.sigma = link.sigma, .link.r = link.r ))),
     loglikelihood = eval(substitute(
         function(mu, y, w, residuals = FALSE, eta, extra = NULL) {
         mymu = eta2theta(eta[,1], "identity", earg = list())
         sigma = eta2theta(eta[,2], .link.sigma, earg = .esigma)
         r = eta2theta(eta[,3], .link.r, earg = .er)
         temp89 = (abs(log(y)-mymu)/sigma)^r
-        if (residuals) stop("loglikelihood residuals not implemented yet") else
+        if (residuals) stop("loglikelihood residuals ",
+                            "not implemented yet") else
         sum(w * (-log(r^(1/r) * sigma) - lgamma(1+1/r) - temp89/r))
-    }, list( .link.sigma=link.sigma, .link.r=link.r ))),
+    }, list( .link.sigma = link.sigma, .link.r = link.r ))),
     vfamily = c("genlognormal3"),
     deriv = eval(substitute(expression({
         mymu = eta2theta(eta[,1], "identity", earg = list())
@@ -7262,10 +7347,10 @@ warning("2/4/04; doesn't work, possibly because first derivs are ",
         dmymu.deta = dtheta.deta(mymu, "identity", earg = list())
         dsigma.deta = dtheta.deta(sigma, .link.sigma, earg = .esigma)
         dr.deta = dtheta.deta(r, .link.r, earg = .er)
-        w * cbind(dl.dmymu * dmymu.deta, 
-                  dl.dsigma * dsigma.deta, 
-                  dl.dr * dr.deta)
-    }), list( .link.sigma=link.sigma, .link.r=link.r ))),
+        c(w) * cbind(dl.dmymu * dmymu.deta, 
+                     dl.dsigma * dsigma.deta, 
+                     dl.dr * dr.deta)
+    }), list( .link.sigma = link.sigma, .link.r = link.r ))),
     weight = expression({
         wz = matrix(0, n, 6)  # 5 will have small savings of 1 column
         B = log(r) + digamma(ss)
@@ -7277,7 +7362,7 @@ warning("2/4/04; doesn't work, possibly because first derivs are ",
         wz[,iam(2,2,M)] = ed2l.dsigma2 * dsigma.deta^2
         wz[,iam(3,3,M)] = ed2l.dr2 * dr.deta^2
         wz[,iam(2,3,M)] = ed2l.dsigmar * dsigma.deta * dr.deta
-        wz = w * wz
+        wz = c(w) * wz
         wz
     }))
 }
@@ -7331,7 +7416,8 @@ warning("2/4/04; doesn't work, possibly because first derivs are ",
     loglikelihood = eval(substitute(
         function(mu, y, w, residuals = FALSE, eta, extra = NULL){
         shapes = eta2theta(eta, .link, earg = .earg)
-        if (residuals) stop("loglikelihood residuals not implemented yet") else {
+        if (residuals) stop("loglikelihood residuals ",
+                            "not implemented yet") else {
             sum(w *((shapes[,1]-1) * log(y) - lbeta(shapes[,1], shapes[,2]) -
                    (shapes[,2]+shapes[,1]) * log1p(y)))
         }
@@ -7344,7 +7430,7 @@ warning("2/4/04; doesn't work, possibly because first derivs are ",
                            digamma(shapes[,1]+shapes[,2]),
                            - log1p(y) - digamma(shapes[,2]) + 
                            digamma(shapes[,1]+shapes[,2]))
-        w * dl.dshapes * dshapes.deta
+        c(w) * dl.dshapes * dshapes.deta
     }), list( .link = link, .earg = earg ))),
     weight = expression({
         temp2 = trigamma(shapes[,1]+shapes[,2])
@@ -7357,7 +7443,7 @@ warning("2/4/04; doesn't work, possibly because first derivs are ",
         wz[,iam(2,2,M)] = d2l.dshape22 * dshapes.deta[,2]^2
         wz[,iam(1,2,M)] = d2l.dshape1shape2 * dshapes.deta[,1] * dshapes.deta[,2]
 
-        -w * wz
+        -c(w) * wz
     }))
 }
 
@@ -7391,7 +7477,7 @@ rmaxwell = function(n, a) {
     if (!is.Numeric(n, posit = TRUE, allow = 1)) 
         stop("bad input for argument 'n'")
     if (any(a <= 0)) stop("argument 'a' must be positive")
-    sqrt(2 * rgamma(n=n, 1.5) / a)
+    sqrt(2 * rgamma(n = n, 1.5) / a)
 }
 
 qmaxwell = function(p, a) {
@@ -7433,19 +7519,20 @@ qmaxwell = function(p, a) {
     loglikelihood = eval(substitute(
         function(mu, y, w, residuals = FALSE, eta, extra = NULL) {
         aa = eta2theta(eta, .link, earg = .earg)
-        if (residuals) stop("loglikelihood residuals not implemented yet") else
-            sum(w * dmaxwell(x=y, a=aa, log = TRUE))
+        if (residuals) stop("loglikelihood residuals ",
+                            "not implemented yet") else
+            sum(w * dmaxwell(x = y, a=aa, log = TRUE))
     }, list( .link = link, .earg = earg ))),
     vfamily = c("maxwell"),
     deriv = eval(substitute(expression({
         a = eta2theta(eta, .link, earg = .earg)
         dl.da = 1.5 / a - 0.5 * y^2
         da.deta = dtheta.deta(a, .link, earg = .earg)
-        w * dl.da * da.deta
+        c(w) * dl.da * da.deta
     }), list( .link = link, .earg = earg ))),
     weight = eval(substitute(expression({
         ed2l.da2 = 1.5 / a^2
-        wz = w * da.deta^2 * ed2l.da2
+        wz = c(w) * da.deta^2 * ed2l.da2
         wz
     }), list( .link = link, .earg = earg ))))
 }
@@ -7453,7 +7540,7 @@ qmaxwell = function(p, a) {
 
 
 
-dnaka = function(x, shape, scale=1, log = FALSE) {
+dnaka = function(x, shape, scale = 1, log = FALSE) {
     if (!is.logical(log.arg <- log))
         stop("bad input for argument 'log'")
     rm(log)
@@ -7462,14 +7549,14 @@ dnaka = function(x, shape, scale=1, log = FALSE) {
 
     logdensity = rep(log(0), len = L)
     xok = (x > 0)
-    logdensity[xok] = dgamma(x=x[xok]^2, shape=shape[xok],
-                             scale=scale[xok]/shape[xok], log = TRUE) +
+    logdensity[xok] = dgamma(x = x[xok]^2, shape = shape[xok],
+                             scale = scale[xok]/shape[xok], log = TRUE) +
                       log(2) + log(x[xok])
     if (log.arg) logdensity else exp(logdensity)
 }
 
 
-pnaka = function(q, shape, scale=1) {
+pnaka = function(q, shape, scale = 1) {
     if (!is.Numeric(q))
         stop("bad input for argument 'q'")
     if (!is.Numeric(shape, posit = TRUE))
@@ -7482,7 +7569,7 @@ pnaka = function(q, shape, scale=1) {
 }
 
 
-qnaka = function(p, shape, scale=1, ...) {
+qnaka = function(p, shape, scale = 1, ...) {
     if (!is.Numeric(p, posit = TRUE) || max(p) >= 1)
         stop("bad input for argument 'p'")
     if (!is.Numeric(shape, posit = TRUE))
@@ -7490,23 +7577,25 @@ qnaka = function(p, shape, scale=1, ...) {
     if (!is.Numeric(scale, posit = TRUE))
         stop("bad input for argument 'scale'")
     L = max(length(p), length(shape), length(scale))
-    p = rep(p, len = L); shape = rep(shape, len = L); scale = rep(scale, len = L);
+    p = rep(p, len = L); shape = rep(shape, len = L);
+    scale = rep(scale, len = L);
     ans = rep(0.0, len = L)
-    myfun = function(x, shape, scale=1, p)
-        pnaka(q=x, shape=shape, scale=scale) - p
+    myfun = function(x, shape, scale = 1, p)
+        pnaka(q=x, shape = shape, scale = scale) - p
     for(ii in 1:L) {
         EY = sqrt(scale[ii]/shape[ii]) * gamma(shape[ii]+0.5) / gamma(shape[ii])
         Upper = 5 * EY
-        while(pnaka(q=Upper, shape=shape[ii], scale=scale[ii]) < p[ii])
+        while(pnaka(q=Upper, shape = shape[ii], scale = scale[ii]) < p[ii])
             Upper = Upper + scale[ii]
-        ans[ii] = uniroot(f=myfun, lower=0, upper=Upper,
-                         shape=shape[ii], scale=scale[ii], p=p[ii], ...)$root
+        ans[ii] = uniroot(f = myfun, lower = 0, upper = Upper,
+                          shape = shape[ii], scale = scale[ii],
+                          p = p[ii], ...)$root
     }
     ans
 }
 
 
-rnaka = function(n, shape, scale=1, Smallno=1.0e-6) {
+rnaka = function(n, shape, scale = 1, Smallno=1.0e-6) {
     if (!is.Numeric(n, posit = TRUE, integ = TRUE))
         stop("bad input for argument 'n'")
     if (!is.Numeric(scale, posit = TRUE, allow = 1))
@@ -7519,14 +7608,16 @@ rnaka = function(n, shape, scale=1, Smallno=1.0e-6) {
     ans = rep(0.0, len = n)
 
     ptr1 = 1; ptr2 = 0
-    ymax = dnaka(x=sqrt(scale*(1 - 0.5/shape)), shape=shape, scale=scale)
+    ymax = dnaka(x = sqrt(scale * (1 - 0.5 / shape)),
+                 shape = shape, scale = scale)
     while(ptr2 < n) {
-        EY = sqrt(scale/shape) * gamma(shape+0.5) / gamma(shape)
+        EY = sqrt(scale / shape) * gamma(shape + 0.5) / gamma(shape)
         Upper = EY + 5 * scale
-        while(pnaka(q=Upper, shape=shape, scale=scale) < 1-Smallno)
+        while(pnaka(q=Upper, shape = shape, scale = scale) < 1-Smallno)
             Upper = Upper + scale
         x = runif(2*n, min=0, max=Upper)
-        index = runif(2*n, max=ymax) < dnaka(x, shape=shape, scale=scale)
+        index = runif(2*n, max=ymax) < dnaka(x, shape = shape,
+                                             scale = scale)
         sindex = sum(index)
         if (sindex) {
             ptr2 = min(n, ptr1 + sindex - 1)
@@ -7543,7 +7634,7 @@ rnaka = function(n, shape, scale=1, Smallno=1.0e-6) {
 
 
  nakagami = function(lshape = "loge", lscale = "loge",
-                     eshape = list(), escale = list(), ishape = NULL, iscale=1) {
+                     eshape = list(), escale = list(), ishape = NULL, iscale = 1) {
     if (mode(lshape) != "character" && mode(lshape) != "name")
         lshape = as.character(substitute(lshape))
     if (mode(lscale) != "character" && mode(lscale) != "name")
@@ -7598,8 +7689,9 @@ rnaka = function(n, shape, scale=1, Smallno=1.0e-6) {
         function(mu, y, w, residuals = FALSE, eta, extra = NULL) {
         shape = eta2theta(eta[,1], .lshape, earg = .eshape)
         scale = eta2theta(eta[,2], .lscale, earg = .escale)
-        if (residuals) stop("loglikelihood residuals not implemented yet") else
-            sum(w * dnaka(x=y, shape=shape, scale=scale, log = TRUE))
+        if (residuals) stop("loglikelihood residuals ",
+                            "not implemented yet") else
+            sum(w * dnaka(x = y, shape = shape, scale = scale, log = TRUE))
     }, list( .lscale = lscale, .lshape = lshape,
              .escale = escale, .eshape = eshape ))),
     vfamily = c("nakagami"),
@@ -7611,7 +7703,8 @@ rnaka = function(n, shape, scale=1, Smallno=1.0e-6) {
         dl.dscale = -shape/Scale + shape * (y/Scale)^2
         dshape.deta = dtheta.deta(shape, .lshape, earg = .eshape)
         dscale.deta = dtheta.deta(Scale, .lscale, earg = .escale)
-        w * cbind(dl.dshape * dshape.deta, dl.dscale * dscale.deta)
+        c(w) * cbind(dl.dshape * dshape.deta,
+                     dl.dscale * dscale.deta)
     }), list( .lscale = lscale, .lshape = lshape,
               .escale = escale, .eshape = eshape ))),
     weight = eval(substitute(expression({
@@ -7620,7 +7713,7 @@ rnaka = function(n, shape, scale=1, Smallno=1.0e-6) {
         wz = matrix(as.numeric(NA), n, M)  # diagonal
         wz[,iam(1,1,M)] = d2l.dshape2 * dshape.deta^2
         wz[,iam(2,2,M)] = d2l.dscale2 * dscale.deta^2
-        w * wz
+        c(w) * wz
     }), list( .lscale = lscale, .lshape = lshape,
               .escale = escale, .eshape = eshape ))))
 }
@@ -7705,8 +7798,9 @@ rrayleigh = function(n, scale = 1) {
     loglikelihood = eval(substitute(
         function(mu, y, w, residuals = FALSE, eta, extra = NULL) {
         Scale = eta2theta(eta, .lscale, earg = .escale)
-        if (residuals) stop("loglikelihood residuals not implemented yet") else {
-            sum(w * drayleigh(x=y, scale = Scale, log = TRUE))
+        if (residuals) stop("loglikelihood residuals ",
+                            "not implemented yet") else {
+            sum(w * drayleigh(x = y, scale = Scale, log = TRUE))
         }
     }, list( .lscale = lscale, .escale = escale ))),
     vfamily = c("rayleigh"),
@@ -7714,12 +7808,12 @@ rrayleigh = function(n, scale = 1) {
         Scale = eta2theta(eta, .lscale, earg = .escale)
         dl.dScale = ((y/Scale)^2 - 2) / Scale
         dScale.deta = dtheta.deta(Scale, .lscale, earg = .escale)
-        w * dl.dScale * dScale.deta
+        c(w) * dl.dScale * dScale.deta
     }), list( .lscale = lscale, .escale = escale ))),
     weight = eval(substitute(expression({
         d2l.dScale2 = (3 * (y/Scale)^2 - 2) / Scale^2
         ed2l.dScale2 = 4 / Scale^2
-        wz = w * dScale.deta^2 *
+        wz = c(w) * dScale.deta^2 *
              ((1 - .nrfs) * d2l.dScale2 + .nrfs * ed2l.dScale2)
         wz
     }), list( .lscale = lscale, .escale = escale, .nrfs = nrfs ))))
@@ -7729,7 +7823,7 @@ rrayleigh = function(n, scale = 1) {
 
 
 
-dparetoIV = function(x, location=0, scale=1, inequality=1, shape=1, log = FALSE) {
+dparetoIV = function(x, location = 0, scale = 1, inequality = 1, shape = 1, log = FALSE) {
     if (!is.logical(log.arg <- log))
         stop("bad input for argument 'log'")
     rm(log)
@@ -7749,7 +7843,7 @@ dparetoIV = function(x, location=0, scale=1, inequality=1, shape=1, log = FALSE)
     if (log.arg) logdensity else exp(logdensity)
 }
 
-pparetoIV = function(q, location=0, scale=1, inequality=1, shape=1) {
+pparetoIV = function(q, location = 0, scale = 1, inequality = 1, shape=1) {
     if (!is.Numeric(q)) stop("bad input for argument 'q'")
     if (!is.Numeric(scale, posit = TRUE)) 
         stop("bad input for argument 'scale'")
@@ -7769,7 +7863,7 @@ pparetoIV = function(q, location=0, scale=1, inequality=1, shape=1) {
     answer
 }
 
-qparetoIV = function(p, location=0, scale=1, inequality=1, shape=1) {
+qparetoIV = function(p, location = 0, scale = 1, inequality = 1, shape=1) {
     if (!is.Numeric(p, posit = TRUE) || any(p >= 1)) 
         stop("bad input for argument 'p'")
     if (!is.Numeric(scale, posit = TRUE)) 
@@ -7781,7 +7875,7 @@ qparetoIV = function(p, location=0, scale=1, inequality=1, shape=1) {
     location + scale * (-1 + (1-p)^(-1/shape))^inequality
 }
 
-rparetoIV = function(n, location=0, scale=1, inequality=1, shape=1) {
+rparetoIV = function(n, location = 0, scale = 1, inequality = 1, shape=1) {
     if (!is.Numeric(n, posit = TRUE, integ = TRUE, allow = 1)) 
         stop("bad input for argument n")
     if (!is.Numeric(scale, posit = TRUE)) stop("bad input for argument 'scale'")
@@ -7792,59 +7886,63 @@ rparetoIV = function(n, location=0, scale=1, inequality=1, shape=1) {
 }
 
 
-dparetoIII = function(x, location=0, scale=1, inequality=1, log = FALSE)
-    dparetoIV(x=x, location=location, scale=scale, inequality=inequality,
-              shape=1, log=log)
+dparetoIII = function(x, location = 0, scale = 1, inequality = 1, log = FALSE)
+    dparetoIV(x = x, location=location, scale = scale, inequality=inequality,
+              shape = 1, log = log)
 
-pparetoIII = function(q, location=0, scale=1, inequality=1)
-    pparetoIV(q=q, location=location, scale=scale, inequality=inequality,
+pparetoIII = function(q, location = 0, scale = 1, inequality=1)
+    pparetoIV(q=q, location=location, scale = scale, inequality=inequality,
               shape=1)
 
-qparetoIII = function(p, location=0, scale=1, inequality=1)
-    qparetoIV(p=p, location=location, scale=scale, inequality=inequality,
+qparetoIII = function(p, location = 0, scale = 1, inequality=1)
+    qparetoIV(p=p, location=location, scale = scale, inequality=inequality,
               shape=1)
 
-rparetoIII = function(n, location=0, scale=1, inequality=1)
-    rparetoIV(n=n, location=location, scale=scale, inequality=inequality,
+rparetoIII = function(n, location = 0, scale = 1, inequality=1)
+    rparetoIV(n = n, location=location, scale = scale, inequality=inequality,
               shape=1)
 
 
 
-dparetoII = function(x, location=0, scale=1, shape=1, log = FALSE)
-    dparetoIV(x=x, location=location, scale=scale, inequality=1, shape=shape,
-              log=log)
+dparetoII = function(x, location = 0, scale = 1, shape = 1, log = FALSE)
+    dparetoIV(x = x, location=location, scale = scale,
+              inequality = 1, shape = shape,
+              log = log)
 
-pparetoII = function(q, location=0, scale=1, shape=1)
-    pparetoIV(q=q, location=location, scale=scale, inequality=1, shape=shape)
+pparetoII = function(q, location = 0, scale = 1, shape=1)
+    pparetoIV(q=q, location=location, scale = scale,
+              inequality = 1, shape = shape)
 
-qparetoII = function(p, location=0, scale=1, shape=1)
-    qparetoIV(p=p, location=location, scale=scale, inequality=1, shape=shape)
+qparetoII = function(p, location = 0, scale = 1, shape=1)
+    qparetoIV(p=p, location=location, scale = scale,
+              inequality = 1, shape = shape)
 
-rparetoII = function(n, location=0, scale=1, shape=1)
-    rparetoIV(n=n, location=location, scale=scale, inequality=1, shape=shape)
+rparetoII = function(n, location = 0, scale = 1, shape=1)
+    rparetoIV(n = n, location=location, scale = scale,
+              inequality = 1, shape = shape)
 
 
-dparetoI = function(x, scale=1, shape=1)
-    dparetoIV(x=x, location=scale, scale=scale, inequality=1, shape=shape)
+dparetoI = function(x, scale = 1, shape=1)
+    dparetoIV(x = x, location=scale, scale = scale, inequality = 1, shape = shape)
 
-pparetoI = function(q, scale=1, shape=1)
-    pparetoIV(q=q, location=scale, scale=scale, inequality=1, shape=shape)
+pparetoI = function(q, scale = 1, shape=1)
+    pparetoIV(q=q, location=scale, scale = scale, inequality = 1, shape = shape)
 
-qparetoI = function(p, scale=1, shape=1)
-    qparetoIV(p=p, location=scale, scale=scale, inequality=1, shape=shape)
+qparetoI = function(p, scale = 1, shape=1)
+    qparetoIV(p=p, location=scale, scale = scale, inequality = 1, shape = shape)
 
-rparetoI = function(n, scale=1, shape=1)
-    rparetoIV(n=n, location=scale, scale=scale, inequality=1, shape=shape)
+rparetoI = function(n, scale = 1, shape=1)
+    rparetoIV(n = n, location=scale, scale = scale, inequality = 1, shape = shape)
 
 
 
- paretoIV = function(location=0,
+ paretoIV = function(location = 0,
                     lscale = "loge",
                     linequality = "loge",
                     lshape = "loge",
-                    escale = list(), einequality=list(), eshape = list(),
-                    iscale=1, iinequality=1, ishape = NULL,
-                    method.init = 1) {
+                    escale = list(), einequality = list(), eshape = list(),
+                    iscale = 1, iinequality = 1, ishape = NULL,
+                    imethod = 1) {
     if (mode(lscale) != "character" && mode(lscale) != "name")
         lscale = as.character(substitute(lscale))
     if (mode(linequality) != "character" && mode(linequality) != "name")
@@ -7859,10 +7957,10 @@ rparetoI = function(n, scale=1, shape=1)
         stop("argument 'iinequality' must be positive")
     if (is.Numeric(ishape) && any(ishape <= 0))
         stop("argument 'ishape' must be positive")
-    if (!is.Numeric(method.init, allow = 1, integ = TRUE) || method.init>2)
-        stop("bad input for argument 'method.init'")
+    if (!is.Numeric(imethod, allow = 1, integ = TRUE) || imethod>2)
+        stop("bad input for argument 'imethod'")
     if (linequality == "nloge" && location != 0)
-        warning("The Burr distribution has 'location=0' and 'linequality=nloge'")
+        warning("The Burr distribution has 'location = 0' and 'linequality=nloge'")
     if (!is.list(escale)) escale = list()
     if (!is.list(einequality)) einequality = list()
     if (!is.list(eshape)) eshape = list()
@@ -7892,9 +7990,9 @@ rparetoI = function(n, scale=1, shape=1)
             shape.init = if (length( .ishape)) .ishape else NULL
             if (!length(shape.init)) {
                 zedd = (y - location) / scale.init
-                if ( .method.init == 1) {
-                    A1 = weighted.mean(1/(1 + zedd^(1/inequality.init)), w=w)
-                    A2 = weighted.mean(1/(1 + zedd^(1/inequality.init))^2, w=w)
+                if ( .imethod == 1) {
+                    A1 = weighted.mean(1/(1 + zedd^(1/inequality.init)), w = w)
+                    A2 = weighted.mean(1/(1 + zedd^(1/inequality.init))^2, w = w)
                 } else {
                     A1 = median(1/(1 + zedd^(1/inequality.init )))
                     A2 = median(1/(1 + zedd^(1/inequality.init))^2)
@@ -7907,8 +8005,8 @@ rparetoI = function(n, scale=1, shape=1)
               theta2eta(rep(shape.init, len = n), .lshape, earg = .eshape))
         }
     }), list( .location = location, .lscale = lscale,
-             .linequality=linequality, .lshape = lshape, .method.init = method.init,
-             .escale = escale, .einequality=einequality, .eshape = eshape,
+             .linequality = linequality, .lshape = lshape, .imethod = imethod,
+             .escale = escale, .einequality = einequality, .eshape = eshape,
              .iscale = iscale, .iinequality=iinequality, .ishape = ishape ))),
     inverse = eval(substitute(function(eta, extra = NULL) {
         location = extra$location
@@ -7916,16 +8014,16 @@ rparetoI = function(n, scale=1, shape=1)
         inequality = eta2theta(eta[,2], .linequality, earg = .einequality)
         shape = eta2theta(eta[,3], .lshape, earg = .eshape)
         location + Scale * NA
-    }, list( .lscale = lscale, .linequality=linequality, .lshape = lshape,
-             .escale = escale, .einequality=einequality, .eshape = eshape ))),
+    }, list( .lscale = lscale, .linequality = linequality, .lshape = lshape,
+             .escale = escale, .einequality = einequality, .eshape = eshape ))),
     last = eval(substitute(expression({
-        misc$link=c("scale" = .lscale, "inequality" = .linequality,
+        misc$link = c("scale" = .lscale, "inequality" = .linequality,
                     "shape" = .lshape)
         misc$earg = list(scale = .escale, inequality= .einequality,
                          shape = .eshape)
         misc$location = extra$location # Use this for prediction
-    }), list( .lscale = lscale,  .linequality=linequality, .lshape = lshape,
-              .escale = escale, .einequality=einequality, .eshape = eshape ))),
+    }), list( .lscale = lscale,  .linequality = linequality, .lshape = lshape,
+              .escale = escale, .einequality = einequality, .eshape = eshape ))),
     loglikelihood = eval(substitute(
         function(mu, y, w, residuals = FALSE, eta, extra = NULL) {
         location = extra$location
@@ -7933,12 +8031,13 @@ rparetoI = function(n, scale=1, shape=1)
         inequality = eta2theta(eta[,2], .linequality, earg = .einequality)
         shape = eta2theta(eta[,3], .lshape, earg = .eshape)
         zedd = (y - location) / Scale
-        if (residuals) stop("loglikelihood residuals not implemented yet") else {
-            sum(w * dparetoIV(x=y, location=location, scale=Scale,
-                              inequality=inequality, shape=shape, log = TRUE))
+        if (residuals) stop("loglikelihood residuals ",
+                            "not implemented yet") else {
+            sum(w * dparetoIV(x = y, location=location, scale=Scale,
+                              inequality=inequality, shape = shape, log = TRUE))
         }
-    }, list( .lscale = lscale,  .linequality=linequality, .lshape = lshape,
-             .escale = escale, .einequality=einequality, .eshape = eshape ))),
+    }, list( .lscale = lscale,  .linequality = linequality, .lshape = lshape,
+             .escale = escale, .einequality = einequality, .eshape = eshape ))),
     vfamily = c("paretoIV"),
     deriv = eval(substitute(expression({
         location = extra$location
@@ -7954,11 +8053,11 @@ rparetoI = function(n, scale=1, shape=1)
         dscale.deta = dtheta.deta(Scale, .lscale, earg = .escale)
         dinequality.deta = dtheta.deta(inequality, .linequality, earg = .einequality)
         dshape.deta = dtheta.deta(shape, .lshape, earg = .eshape)
-        w * cbind(dl.dscale * dscale.deta,
-                  dl.dinequality * dinequality.deta, 
-                  dl.dshape * dshape.deta)
-    }), list( .lscale = lscale,  .linequality=linequality, .lshape = lshape,
-              .escale = escale, .einequality=einequality, .eshape = eshape ))),
+        c(w) * cbind(dl.dscale * dscale.deta,
+                     dl.dinequality * dinequality.deta, 
+                     dl.dshape * dshape.deta)
+    }), list( .lscale = lscale,  .linequality = linequality, .lshape = lshape,
+              .escale = escale, .einequality = einequality, .eshape = eshape ))),
     weight = eval(substitute(expression({
         temp200 = digamma(shape) - digamma(1) - 1
         d2scale.deta2 = shape / ((inequality*Scale)^2 * (shape+2))
@@ -7975,18 +8074,18 @@ rparetoI = function(n, scale=1, shape=1)
         wz[,iam(1,2,M)] = dscale.deta * dinequality.deta * d2si.deta2
         wz[,iam(1,3,M)] = dscale.deta * dshape.deta * d2ss.deta2
         wz[,iam(2,3,M)] = dinequality.deta * dshape.deta * d2is.deta2
-        w * wz
-    }), list( .lscale = lscale,  .linequality=linequality, .lshape = lshape,
-              .escale = escale, .einequality=einequality, .eshape = eshape ))))
+        c(w) * wz
+    }), list( .lscale = lscale,  .linequality = linequality, .lshape = lshape,
+              .escale = escale, .einequality = einequality, .eshape = eshape ))))
 }
 
 
 
 
- paretoIII = function(location=0,
+ paretoIII = function(location = 0,
                       lscale = "loge",
                       linequality = "loge",
-                      escale = list(), einequality=list(),
+                      escale = list(), einequality = list(),
                       iscale = NULL, iinequality = NULL) {
     if (mode(lscale) != "character" && mode(lscale) != "name")
         lscale = as.character(substitute(lscale))
@@ -8025,7 +8124,7 @@ rparetoI = function(n, scale=1, shape=1)
             if (!length(inequality.init) || !length(scale.init)) {
                 probs = (1:4)/5
                 ytemp = quantile(x=log(y-location), probs=probs)
-                fittemp = lsfit(x=logit(probs), y=ytemp, int = TRUE)
+                fittemp = lsfit(x=logit(probs), y = ytemp, int = TRUE)
                 if (!length(inequality.init))
                     inequality.init = max(fittemp$coef["X"], 0.01)
                 if (!length(scale.init))
@@ -8036,34 +8135,35 @@ rparetoI = function(n, scale=1, shape=1)
             theta2eta(rep(inequality.init, len = n), .linequality,
                       earg = .einequality))
         }
-    }), list( .location = location, .lscale = lscale, .linequality=linequality,
-              .escale = escale, .einequality=einequality,
+    }), list( .location = location, .lscale = lscale, .linequality = linequality,
+              .escale = escale, .einequality = einequality,
               .iscale = iscale, .iinequality=iinequality ))),
     inverse = eval(substitute(function(eta, extra = NULL) {
         location = extra$location
         Scale = eta2theta(eta[,1], .lscale, earg = .escale)
         inequality = eta2theta(eta[,2], .linequality, earg = .einequality)
         location + Scale * NA
-    }, list( .lscale = lscale, .linequality=linequality,
-             .escale = escale, .einequality=einequality ))),
+    }, list( .lscale = lscale, .linequality = linequality,
+             .escale = escale, .einequality = einequality ))),
     last = eval(substitute(expression({
-        misc$link=c("scale" = .lscale, "inequality" = .linequality)
+        misc$link = c("scale" = .lscale, "inequality" = .linequality)
         misc$earg = list(scale = .escale, inequality= .einequality)
         misc$location = extra$location # Use this for prediction
-    }), list( .lscale = lscale, .linequality=linequality,
-              .escale = escale, .einequality=einequality ))),
+    }), list( .lscale = lscale, .linequality = linequality,
+              .escale = escale, .einequality = einequality ))),
     loglikelihood = eval(substitute(
         function(mu, y, w, residuals = FALSE, eta, extra = NULL) {
         location = extra$location
         Scale = eta2theta(eta[,1], .lscale, earg = .escale)
         inequality = eta2theta(eta[,2], .linequality, earg = .einequality)
         zedd = (y - location) / Scale
-        if (residuals) stop("loglikelihood residuals not implemented yet") else {
-            sum(w * dparetoIII(x=y, location=location, scale=Scale,
+        if (residuals) stop("loglikelihood residuals ",
+                            "not implemented yet") else {
+            sum(w * dparetoIII(x = y, location=location, scale=Scale,
                                inequality=inequality, log = TRUE))
         }
-    }, list( .lscale = lscale, .linequality=linequality,
-             .escale = escale, .einequality=einequality ))),
+    }, list( .lscale = lscale, .linequality = linequality,
+             .escale = escale, .einequality = einequality ))),
     vfamily = c("paretoIII"),
     deriv = eval(substitute(expression({
         location = extra$location
@@ -8077,26 +8177,26 @@ rparetoI = function(n, scale=1, shape=1)
                          inequality - 1) / inequality
         dscale.deta = dtheta.deta(Scale, .lscale, earg = .escale)
         dinequality.deta = dtheta.deta(inequality, .linequality, earg = .einequality)
-        w * cbind(dl.dscale * dscale.deta,
-                  dl.dinequality * dinequality.deta)
-    }), list( .lscale = lscale, .linequality=linequality,
-              .escale = escale, .einequality=einequality ))),
+        c(w) * cbind(dl.dscale * dscale.deta,
+                     dl.dinequality * dinequality.deta)
+    }), list( .lscale = lscale, .linequality = linequality,
+              .escale = escale, .einequality = einequality ))),
     weight = eval(substitute(expression({
         d2scale.deta2 = 1 / ((inequality*Scale)^2 * 3)
         d2inequality.deta2 = (1 + 2* trigamma(1)) / (inequality^2 * 3)
         wz = matrix(0, n, M) # It is diagonal
         wz[,iam(1,1,M)] = dscale.deta^2 * d2scale.deta2
         wz[,iam(2,2,M)] = dinequality.deta^2 * d2inequality.deta2
-        w * wz
-    }), list( .lscale = lscale,  .linequality=linequality,
-              .escale = escale, .einequality=einequality ))))
+        c(w) * wz
+    }), list( .lscale = lscale,  .linequality = linequality,
+              .escale = escale, .einequality = einequality ))))
 }
 
 
 
 
 
- paretoII = function(location=0,
+ paretoII = function(location = 0,
                      lscale = "loge",
                      lshape = "loge",
                      escale = list(), eshape = list(),
@@ -8138,7 +8238,7 @@ rparetoI = function(n, scale=1, shape=1)
                 probs = (1:4)/5
                 scale.init.0 = 1
                 ytemp = quantile(x=log(y-location+scale.init.0), probs=probs)
-                fittemp = lsfit(x=log1p(-probs), y=ytemp, int = TRUE)
+                fittemp = lsfit(x=log1p(-probs), y = ytemp, int = TRUE)
                 if (!length(shape.init))
                     shape.init = max(-1/fittemp$coef["X"], 0.01)
                 if (!length(scale.init))
@@ -8170,9 +8270,10 @@ rparetoI = function(n, scale=1, shape=1)
         Scale = eta2theta(eta[,1], .lscale, earg = .escale)
         shape = eta2theta(eta[,2], .lshape, earg = .eshape)
         zedd = (y - location) / Scale
-        if (residuals) stop("loglikelihood residuals not implemented yet") else {
-            sum(w * dparetoII(x=y, location=location, scale=Scale,
-                              shape=shape, log = TRUE))
+        if (residuals) stop("loglikelihood residuals ",
+                            "not implemented yet") else {
+            sum(w * dparetoII(x = y, location=location, scale=Scale,
+                              shape = shape, log = TRUE))
         }
     }, list( .lscale = lscale, .lshape = lshape,
              .escale = escale, .eshape = eshape ))),
@@ -8187,8 +8288,8 @@ rparetoI = function(n, scale=1, shape=1)
         dl.dshape = -log(temp100) + 1/shape
         dscale.deta = dtheta.deta(Scale, .lscale, earg = .escale)
         dshape.deta = dtheta.deta(shape, .lshape, earg = .eshape)
-        w * cbind(dl.dscale * dscale.deta,
-                  dl.dshape * dshape.deta)
+        c(w) * cbind(dl.dscale * dscale.deta,
+                     dl.dshape * dshape.deta)
     }), list( .lscale = lscale, .lshape = lshape,
               .escale = escale, .eshape = eshape ))),
     weight = eval(substitute(expression({
@@ -8199,7 +8300,7 @@ rparetoI = function(n, scale=1, shape=1)
         wz[,iam(1,1,M)] = dscale.deta^2 * d2scale.deta2
         wz[,iam(2,2,M)] = dshape.deta^2 * d2shape.deta2
         wz[,iam(1,2,M)] = dscale.deta * dshape.deta * d2ss.deta2
-        w * wz
+        c(w) * wz
     }), list( .lscale = lscale,  .lshape = lshape,
               .escale = escale, .eshape = eshape ))))
 }
@@ -8284,10 +8385,10 @@ rpareto = function(n, location, shape) {
     inverse = eval(substitute(function(eta, extra = NULL) {
         k = eta2theta(eta, .lshape, earg = .earg)
         location = extra$location
-        ifelse(k>1, k * location / (k-1), NA)
+        ifelse(k > 1, k * location / (k-1), NA)
     }, list( .lshape = lshape, .earg = earg ))),
     last = eval(substitute(expression({
-        misc$link = c(k= .lshape)
+        misc$link =    c(k = .lshape)
         misc$earg = list(k = .earg)
         misc$location = extra$location # Use this for prediction
     }), list( .lshape = lshape, .earg = earg ))),
@@ -8295,8 +8396,8 @@ rpareto = function(n, location, shape) {
         function(mu, y, w, residuals = FALSE, eta, extra = NULL) {
         k = eta2theta(eta, .lshape, earg = .earg)
         location = extra$location
-        if (residuals)
-      stop("loglikelihood residuals not implemented yet") else {
+        if (residuals) stop("loglikelihood residuals ",
+                            "not implemented yet") else {
 
 
             sum(w * (log(k) + k * log(location) - (k+1) * log(y )))
@@ -8308,33 +8409,53 @@ rpareto = function(n, location, shape) {
         k = eta2theta(eta, .lshape, earg = .earg)
         dl.dk = 1/k + log(location/y)
         dk.deta = dtheta.deta(k, .lshape, earg = .earg)
-        w * dl.dk * dk.deta
+        c(w) * dl.dk * dk.deta
     }), list( .lshape = lshape, .earg = earg ))),
     weight = eval(substitute(expression({
         ed2l.dk2 = 1 / k^2
-        wz = w * dk.deta^2 * ed2l.dk2
+        wz = c(w) * dk.deta^2 * ed2l.dk2
         wz
     }), list( .lshape = lshape, .earg = earg ))))
 }
 
 
 
-dtpareto = function(x, lower, upper, shape) {
-    if (!is.Numeric(x))
-      stop("bad input for argument 'x'")
-    if (!is.Numeric(lower, pos = TRUE))
-      stop("argument 'lower' must be positive")
-    if (!is.Numeric(upper, pos = TRUE))
-      stop("argument 'upper' must be positive")
-    if (!is.Numeric(shape, pos = TRUE))
-      stop("argument 'shape' must be positive")
-    L = max(length(x), length(lower), length(upper), length(shape)) 
-    x = rep(x, len = L); lower = rep(lower, len = L); upper = rep(upper, len = L);
-    shape= rep(shape, len = L)
-    ifelse(x > lower & x < upper, 
-    shape * lower^shape / (x^(shape+1) * (1-(lower/upper)^shape)), 0)
+
+
+dtpareto = function(x, lower, upper, shape, log = FALSE) {
+
+  if (!is.logical(log.arg <- log))
+    stop("bad input for argument 'log'")
+  rm(log)
+
+  if (!is.Numeric(x))
+    stop("bad input for argument 'x'")
+  if (!is.Numeric(lower, pos = TRUE))
+    stop("argument 'lower' must be positive")
+  if (!is.Numeric(upper, pos = TRUE))
+    stop("argument 'upper' must be positive")
+  if (!is.Numeric(shape, pos = TRUE))
+    stop("argument 'shape' must be positive")
+
+  L = max(length(x), length(lower), length(upper), length(shape))
+  x = rep(x, len = L); shape = rep(shape, len = L)
+  lower = rep(lower, len = L); upper = rep(upper, len = L);
+
+
+  logdensity <- rep(log(0), len = L)
+  xok <- (0 < lower) & (lower < x) & (x < upper) & (shape > 0)
+
+  logdensity[xok] <- log(shape[xok]) + shape[xok] * log(lower[xok]) -
+                     (shape[xok] + 1) * log(x[xok]) -
+                     log1p(-(lower[xok] / upper[xok])^(shape[xok]))
+
+  logdensity[shape <= 0] <- NaN
+  logdensity[upper < lower] <- NaN
+  logdensity[0 > lower] <- NaN
+  if (log.arg) logdensity else exp(logdensity)
 }
 
+
 ptpareto = function(q, lower, upper, shape) {
     if (!is.Numeric(q))
       stop("bad input for argument 'q'")
@@ -8344,15 +8465,21 @@ ptpareto = function(q, lower, upper, shape) {
       stop("argument 'upper' must be positive")
     if (!is.Numeric(shape, pos = TRUE))
       stop("argument 'shape' must be positive")
+
     L = max(length(q), length(lower), length(upper), length(shape)) 
     q = rep(q, len = L); lower = rep(lower, len = L);
     upper = rep(upper, len = L); shape= rep(shape, len = L)
+
     ans = q * 0
-    ans[q > lower & q < upper] = (1-(lower/q)^shape) / (1-(lower/upper)^shape)
+    xok <- (0 < lower) & (lower < q) & (q < upper) & (shape > 0)
+    ans[xok] = (1 - (lower[xok]/q[xok])^shape[xok]) / (1 -
+                    (lower[xok]/upper[xok])^shape[xok])
     ans[q >= upper] = 1
+    ans[upper < lower] <- NaN
     ans
 }
 
+
 qtpareto = function(p, lower, upper, shape) {
     if (!is.Numeric(p, posit = TRUE))
       stop("bad input for argument 'p'")
@@ -8363,41 +8490,46 @@ qtpareto = function(p, lower, upper, shape) {
     if (!is.Numeric(shape, pos = TRUE))
       stop("argument 'shape' must be positive")
     if (max(p) >= 1)
-      stop("argument 'p' must be between 0 and 1")
+      stop("argument 'p' must be in (0, 1)")
+    if (min(upper - lower, na.rm = TRUE) < 0)
+      stop("argument 'upper' must be greater than 'lower' values")
+
     lower / (1 - p*(1-(lower/upper)^shape))^(1/shape)
 }
 
+
 rtpareto = function(n, lower, upper, shape) {
-    if (!is.Numeric(n, posit = TRUE, integ = TRUE, allow = 1)) 
-        stop("bad input for argument 'n'")
     if (!is.Numeric(lower, pos = TRUE))
       stop("argument 'lower' must be positive")
     if (!is.Numeric(upper, pos = TRUE))
       stop("argument 'upper' must be positive")
     if (!is.Numeric(shape, pos = TRUE))
       stop("argument 'shape' must be positive")
-    lower / (1 - runif(n)*(1-(lower/upper)^shape))^(1/shape)
+
+    qtpareto(p = runif(n), lower = lower, upper = upper, shape = shape)
 }
 
 
 
 
- tpareto1 = function(lower, upper, lshape = "loge", earg = list(), ishape = NULL,
-                    method.init = 1) {
+ tpareto1 = function(lower, upper, lshape = "loge", earg = list(),
+                     ishape = NULL, imethod = 1) {
     if (mode(lshape) != "character" && mode(lshape) != "name")
         lshape = as.character(substitute(lshape))
+
     if (!is.Numeric(lower, posit = TRUE, allow = 1))
         stop("bad input for argument 'lower'")
     if (!is.Numeric(upper, posit = TRUE, allow = 1))
         stop("bad input for argument 'upper'")
     if (lower >= upper)
         stop("lower < upper is required")
+
     if (length(ishape) && !is.Numeric(ishape, posit = TRUE))
         stop("bad input for argument 'ishape'")
     if (!is.list(earg)) earg = list()
-    if (!is.Numeric(method.init, allow = 1, integ = TRUE, posit = TRUE) ||
-       method.init > 2)
-        stop("'method.init' must be 1 or 2")
+    if (!is.Numeric(imethod, allow = 1, integ = TRUE, posit = TRUE) ||
+       imethod > 2)
+        stop("argument 'imethod' must be 1 or 2")
 
     new("vglmff",
     blurb = c("Truncated Pareto distribution f(y) = shape * lower^shape /",
@@ -8409,18 +8541,22 @@ rtpareto = function(n, lower, upper, shape) {
     initialize = eval(substitute(expression({
         if (ncol(cbind(y)) != 1)
             stop("response must be a vector or a one-column matrix")
-        predictors.names = namesof("shape", .lshape, earg = .earg, tag = FALSE) 
+
+        predictors.names = namesof("shape", .lshape, earg = .earg,
+                                   tag = FALSE)
         if (any(y <= .lower))
             stop("the value of argument 'lower' is too high ",
                  "(requires '0 < lower < min(y)')")
+
         extra$lower = .lower
         if (any(y >= .upper))
             stop("the value of argument 'upper' is too low ",
                  "(requires 'max(y) < upper')")
         extra$upper = .upper
+
         if (!length(etastart)) {
             shape.init = if (is.Numeric( .ishape)) 0 * y + .ishape else
-            if ( .method.init == 2) {
+            if ( .imethod == 2) {
                 0 * y + median(rep((y + 1/8) / (y - .lower + 1/8), times=w))
             } else {
                 tpareto1.Loglikfun = function(shape, y, x, w, extraargs) {
@@ -8429,52 +8565,60 @@ rtpareto = function(n, lower, upper, shape) {
                               (shape+1) * log(y) - log1p(-myratio^shape)))
                  }
                  shape.grid = 2^((-4):4)
-                 try.this = getMaxMin(shape.grid, objfun=tpareto1.Loglikfun,
-                                      y=y,  x=x, w=w)
+                 try.this = getMaxMin(shape.grid, objfun = tpareto1.Loglikfun,
+                                      y = y,  x = x, w = w)
                 try.this = rep(try.this, len = n)
                 try.this
             }
             etastart = theta2eta(shape.init, .lshape, earg = .earg)
         }
-    }), list( .ishape = ishape, .earg = earg, .lshape = lshape,
-              .method.init = method.init,
-              .lower=lower, .upper=upper ))),
+    }), list( .lshape = lshape, .earg = earg,
+              .ishape = ishape,
+              .imethod = imethod,
+              .lower = lower, .upper = upper ))),
     inverse = eval(substitute(function(eta, extra = NULL) {
         shape = eta2theta(eta, .lshape, earg = .earg)
         myratio = .lower / .upper
         constprop = shape * .lower^shape / (1 - myratio^shape)
         constprop * ( .upper^(1-shape) - .lower^(1-shape)) / (1-shape)
-    }, list( .lshape = lshape, .earg = earg, .lower=lower, .upper=upper ))),
+    }, list( .lshape = lshape, .earg = earg,
+             .lower = lower, .upper = upper ))),
     last = eval(substitute(expression({
-        misc$link = c(shape= .lshape)
+        misc$link =    c(shape = .lshape)
         misc$earg = list(shape = .earg)
         misc$lower = extra$lower
         misc$upper = extra$upper
         misc$expected = TRUE
-    }), list( .lshape = lshape, .earg = earg, .lower=lower, .upper=upper ))),
+    }), list( .lshape = lshape, .earg = earg,
+              .lower = lower, .upper = upper ))),
     loglikelihood = eval(substitute(
         function(mu, y, w, residuals = FALSE, eta, extra = NULL) {
         shape = eta2theta(eta, .lshape, earg = .earg)
-        myratio = .lower / .upper
-        if (residuals) stop("loglikelihood residuals not implemented yet") else
-        sum(w * (log(shape) + shape * log( .lower) - (shape+1) * log(y) -
-                 log1p(-myratio^shape)))
-    }, list( .lshape = lshape, .earg = earg, .lower=lower, .upper=upper ))),
+        if (residuals) stop("loglikelihood residuals ",
+                            "not implemented yet") else {
+          ans = sum(w * dtpareto(x = y, lower = .lower , upper = .upper ,
+                                 shape = shape, log = TRUE))
+          ans
+        }
+    }, list( .lshape = lshape, .earg = earg,
+             .lower = lower, .upper = upper ))),
     vfamily = c("tpareto1"),
     deriv = eval(substitute(expression({
         shape = eta2theta(eta, .lshape, earg = .earg)
         myratio = .lower / .upper
-        myratio2 =  myratio^shape 
+        myratio2 =  myratio^shape
         tmp330 = myratio2 * log(myratio) / (1 - myratio2)
-        dl.dshape = 1/shape + log( .lower) - log(y) + tmp330 
+        dl.dshape = 1 / shape + log( .lower) - log(y) + tmp330 
         dshape.deta = dtheta.deta(shape, .lshape, earg = .earg)
-        w * dl.dshape * dshape.deta
-    }), list( .lshape = lshape, .earg = earg, .lower=lower, .upper=upper ))),
+        c(w) * dl.dshape * dshape.deta
+    }), list( .lshape = lshape, .earg = earg,
+              .lower = lower, .upper = upper ))),
     weight = eval(substitute(expression({
         ed2l.dshape2 = 1 / shape^2 - tmp330^2 / myratio2
-        wz = w * dshape.deta^2 * ed2l.dshape2
+        wz = c(w) * dshape.deta^2 * ed2l.dshape2
         wz
-    }), list( .lshape = lshape, .earg = earg, .lower=lower, .upper=upper ))))
+    }), list( .lshape = lshape, .earg = earg,
+              .lower = lower, .upper = upper ))))
 }
 
 
@@ -8514,7 +8658,7 @@ erfc = function(x)
             initlambda = rep(initlambda, len = n)
             etastart = cbind(theta2eta(initlambda, link=.link.lambda, earg = .earg))
         }
-    }), list( .link.lambda=link.lambda, .earg = earg,
+    }), list( .link.lambda = link.lambda, .earg = earg,
              .init.lambda=init.lambda ))),
     inverse=function(eta, extra = NULL) {
         0*eta + 1
@@ -8522,25 +8666,25 @@ erfc = function(x)
     last = eval(substitute(expression({
         misc$link = c(lambda = .link.lambda )
         misc$earg = list(lambda = .earg )
-    }), list( .link.lambda=link.lambda, .earg = earg ))),
+    }), list( .link.lambda = link.lambda, .earg = earg ))),
     loglikelihood = eval(substitute(
              function(mu, y, w, residuals = FALSE, eta, extra = NULL) {
         lambda = eta2theta(eta, link=.link.lambda, earg = .earg)
-        if (residuals)
-      stop("loglikelihood residuals not implemented yet") else
+        if (residuals) stop("loglikelihood residuals ",
+                            "not implemented yet") else
         sum(w * (0.5 * log(lambda/(2*pi*y^3)) - lambda * (y-1)^2 / (2*y)))
-    }, list( .link.lambda=link.lambda, .earg = earg ))),
+    }, list( .link.lambda = link.lambda, .earg = earg ))),
     vfamily = "wald",
     deriv = eval(substitute(expression({
         lambda = eta2theta(eta, link=.link.lambda, earg = .earg)
         dl.dlambda = 0.5 / lambda + 1 - 0.5 * (y + 1/y)
         dlambda.deta = dtheta.deta(theta=lambda, link=.link.lambda, earg = .earg)
-        w * cbind(dl.dlambda * dlambda.deta)
-    }), list( .link.lambda=link.lambda, .earg = earg ))),
+        c(w) * cbind(dl.dlambda * dlambda.deta)
+    }), list( .link.lambda = link.lambda, .earg = earg ))),
     weight = eval(substitute(expression({
         d2l.dlambda2 = 0.5 / (lambda^2)
-        w * cbind(dlambda.deta^2 * d2l.dlambda2)
-    }), list( .link.lambda=link.lambda, .earg = earg ))))
+        c(w) * cbind(dlambda.deta^2 * d2l.dlambda2)
+    }), list( .link.lambda = link.lambda, .earg = earg ))))
 }
 
 
@@ -8587,7 +8731,7 @@ erfc = function(x)
                    rep( .ishape, len = n)
             scale.init = if (length( .iscale)) rep( .iscale, len = n) else
                         (digamma(shape.init+1) - digamma(1)) / (y+1/8)
-            scale.init = rep(weighted.mean(scale.init, w=w), len = n)
+            scale.init = rep(weighted.mean(scale.init, w = w), len = n)
             etastart = cbind(theta2eta(shape.init, .lshape, earg = .eshape),
                              theta2eta(scale.init, .lscale, earg = .escale))
         }
@@ -8609,8 +8753,8 @@ erfc = function(x)
         function(mu, y, w, residuals = FALSE, eta, extra = NULL) {
         shape = eta2theta(eta[,1], .lshape, earg = .eshape)
         scale = eta2theta(eta[,2], .lscale, earg = .escale)
-        if (residuals)
-      stop("loglikelihood residuals not implemented yet") else
+        if (residuals) stop("loglikelihood residuals ",
+                            "not implemented yet") else
         sum(w * (log(shape) + log(scale) + 
                  (shape-1)*log1p(-exp(-scale*y)) - scale*y))
     }, list( .lscale = lscale, .lshape = lshape,
@@ -8623,7 +8767,8 @@ erfc = function(x)
         dl.dshape = 1/shape + log1p(-exp(-scale*y))
         dscale.deta = dtheta.deta(scale, .lscale, earg = .escale)
         dshape.deta = dtheta.deta(shape, .lshape, earg = .eshape)
-        w * cbind(dl.dshape * dshape.deta, dl.dscale * dscale.deta)
+        c(w) * cbind(dl.dshape * dshape.deta,
+                     dl.dscale * dscale.deta)
     }), list( .lshape = lshape, .lscale = lscale,
               .eshape = eshape, .escale = escale ))),
     weight = eval(substitute(expression({
@@ -8661,7 +8806,7 @@ erfc = function(x)
         wz[,iam(1,1,M)] = dshape.deta^2 * d11
         wz[,iam(2,2,M)] = dscale.deta^2 * d22
         wz[,iam(1,2,M)] = dscale.deta * dshape.deta * d12
-        w * wz
+        c(w) * wz
     }), list( .tolerance=tolerance ))))
 }
 
@@ -8726,8 +8871,8 @@ erfc = function(x)
         scale = eta2theta(eta, .lscale, earg = .escale)
         temp7 =  -expm1(-scale*y)
         shape = -extra$sumw / sum(w*log(temp7)) # \gamma(\theta)
-        if (residuals)
-          stop("loglikelihood residuals not implemented yet") else
+        if (residuals) stop("loglikelihood residuals ",
+                            "not implemented yet") else
         sum(w * (log(shape) + log(scale) + 
                  (shape-1)*log1p(-exp(-scale*y)) - scale*y))
     }, list( .lscale = lscale, .escale = escale ))),
@@ -8738,7 +8883,7 @@ erfc = function(x)
         temp7 = 1-temp6
         shape = -extra$sumw / sum(w*log(temp7)) # \gamma(\theta)
         d1 = 1/scale + (shape-1)*y*temp6/temp7 - y
-        w * cbind(d1 * dtheta.deta(scale, .lscale, earg = .escale))
+        c(w) * cbind(d1 * dtheta.deta(scale, .lscale, earg = .escale))
     }), list( .lscale = lscale, .escale = escale ))),
     weight = eval(substitute(expression({
         d11 = 1/scale^2  + y*(temp6/temp7^2) * ((shape-1) *
@@ -8752,10 +8897,10 @@ erfc = function(x)
             for(ii in 1:ncol(wz))
                 wz[,ii] = sum(wz[,ii]) / sumw
             pooled.weight = TRUE
-            wz = w * wz   # Put back the weights
+            wz = c(w) * wz   # Put back the weights
         } else
             pooled.weight = FALSE
-        w * wz
+        c(w) * wz
     }), list( .lscale = lscale, .escale = escale ))))
 }
 
@@ -8783,10 +8928,10 @@ betaffqn.control <- function(save.weight = TRUE, ...)
     new("vglmff",
     blurb = c("Two-parameter Beta distribution\n",
             if (stdbeta)
-            "y^(shape1-1) * (1-y)^(shape2-1), 0<=y<=1, shape1>0, shape2>0\n\n"
+            "y^(shape1-1) * (1-y)^(shape2-1), 0<=y <= 1, shape1>0, shape2>0\n\n"
             else
             paste("(y-",A,")^(shape1-1) * (",B,
-            "-y)^(shape2-1), ",A,"<=y< = ",B," shape1>0, shape2>0\n\n", sep = ""),
+            "-y)^(shape2-1), ",A,"<=y <= ",B," shape1>0, shape2>0\n\n", sep = ""),
             "Links:    ",
             namesof("shape1", link, earg = earg),  ", ",
             namesof("shape2", link, earg = earg)),
@@ -8833,8 +8978,8 @@ betaffqn.control <- function(save.weight = TRUE, ...)
          function(mu, y, w, residuals = FALSE, eta, extra = NULL){
         shapes = eta2theta(eta, .link, earg = .earg)
         temp = lbeta(shapes[,1], shapes[,2])
-        if (residuals)
-          stop("loglikelihood residuals not implemented yet") else {
+        if (residuals) stop("loglikelihood residuals ",
+                            "not implemented yet") else {
 
 
 
@@ -8855,7 +9000,7 @@ betaffqn.control <- function(save.weight = TRUE, ...)
             etaold = etanew
             etanew = eta
         }
-        derivnew = w * dl.dshapes * dshapes.deta
+        derivnew = c(w) * dl.dshapes * dshapes.deta
         derivnew
     }), list( .link = link, .earg = earg, .A = A, .B = B ))),
     weight = expression({
@@ -8863,8 +9008,8 @@ betaffqn.control <- function(save.weight = TRUE, ...)
             wznew = cbind(matrix(w, n, M), matrix(0, n, dimm(M)-M))
         } else {
             wzold = wznew
-            wznew = qnupdate(w=w, wzold=wzold, dderiv=(derivold - derivnew),
-                             deta=etanew-etaold, M=M,
+            wznew = qnupdate(w = w, wzold=wzold, dderiv=(derivold - derivnew),
+                             deta=etanew-etaold, M = M,
                              trace=trace)  # weights incorporated in args
         }
         wznew
@@ -8880,13 +9025,13 @@ betaffqn.control <- function(save.weight = TRUE, ...)
                      elocation = list(),
                      escale = list(),
                      ilocation = NULL, iscale = NULL,
-                     method.init = 1, zero = NULL) {
+                     imethod = 1, zero = NULL) {
     if (mode(llocation) != "character" && mode(llocation) != "name")
         llocation = as.character(substitute(llocation))
     if (mode(lscale) != "character" && mode(lscale) != "name")
         lscale = as.character(substitute(lscale))
-    if (!is.Numeric(method.init, allow = 1, integ = TRUE, posit = TRUE) ||
-       method.init > 2) stop("argument 'method.init' must be 1 or 2")
+    if (!is.Numeric(imethod, allow = 1, integ = TRUE, posit = TRUE) ||
+       imethod > 2) stop("argument 'imethod' must be 1 or 2")
     if (length(zero) && !is.Numeric(zero, integer = TRUE, posit = TRUE))
         stop("bad input for argument 'zero'")
     if (length(iscale) && !is.Numeric(iscale, posit = TRUE))
@@ -8912,7 +9057,7 @@ betaffqn.control <- function(save.weight = TRUE, ...)
         c(namesof("location", .llocation, earg = .elocation, tag = FALSE),
           namesof("scale", .lscale, earg = .escale, tag = FALSE))
         if (!length(etastart)) {
-            if ( .method.init == 1) {
+            if ( .imethod == 1) {
                 location.init = y
                 scale.init = sqrt(3) * sd(y) / pi
             } else {
@@ -8928,7 +9073,7 @@ betaffqn.control <- function(save.weight = TRUE, ...)
             theta2eta(location.init, .llocation, earg = .elocation),
             theta2eta(scale.init, .lscale, earg = .escale))
         }
-    }), list( .method.init = method.init,
+    }), list( .imethod = imethod,
               .elocation = elocation, .escale = escale,
               .llocation = llocation, .lscale = lscale,
               .ilocation = ilocation, .iscale = iscale ))),
@@ -8945,9 +9090,9 @@ betaffqn.control <- function(save.weight = TRUE, ...)
         function(mu, y, w, residuals = FALSE, eta, extra = NULL) {
         location = eta2theta(eta[,1], .llocation, earg = .elocation)
         Scale = eta2theta(eta[,2], .lscale, earg = .escale)
-        if (residuals)
-          stop("loglikelihood residuals not implemented yet") else {
-            sum(w * dlogis(x=y, location = location,
+        if (residuals) stop("loglikelihood residuals ",
+                            "not implemented yet") else {
+            sum(w * dlogis(x = y, location = location,
                            scale = Scale, log = TRUE))
         }
     }, list( .llocation = llocation, .lscale = lscale,
@@ -8962,8 +9107,8 @@ betaffqn.control <- function(save.weight = TRUE, ...)
         dlocation.deta = dtheta.deta(location, .llocation, earg = .elocation)
         dl.dscale =  zedd * (1-ezedd) / ((1 + ezedd) * Scale) - 1/Scale
         dscale.deta = dtheta.deta(Scale, .lscale, earg = .escale)
-        w * cbind(dl.dlocation * dlocation.deta,
-                  dl.dscale * dscale.deta)
+        c(w) * cbind(dl.dlocation * dlocation.deta,
+                     dl.dscale * dscale.deta)
     }), list( .llocation = llocation, .lscale = lscale,
               .elocation = elocation, .escale = escale ))),
     weight = eval(substitute(expression({
@@ -8972,7 +9117,7 @@ betaffqn.control <- function(save.weight = TRUE, ...)
         wz = matrix(as.numeric(NA), nrow=n, ncol=M) # diagonal
         wz[,iam(1,1,M)] = d2l.location2 * dlocation.deta^2
         wz[,iam(2,2,M)] = d2l.dscale2 * dscale.deta^2
-        w * wz
+        c(w) * wz
     }), list( .llocation = llocation, .lscale = lscale,
               .elocation = elocation, .escale = escale ))))
 }
diff --git a/R/family.zeroinf.R b/R/family.zeroinf.R
index aa303ff..b8f44b2 100644
--- a/R/family.zeroinf.R
+++ b/R/family.zeroinf.R
@@ -318,7 +318,7 @@ rzipois = function(n, lambda, phi = 0) {
         phi = (1 - temp5 - extra$sumw/extra$narg) / (1 - temp5)
         if (residuals) stop("loglikelihood residuals not ",
                             "implemented yet") else {
-            sum(w * dzipois(x=y, phi = phi, lambda = lambda, log = TRUE))
+            sum(w * dzipois(x = y, phi = phi, lambda = lambda, log = TRUE))
         }
     }, list( .link.lambda = link.lambda ))),
     vfamily = c("yip88"),
@@ -362,6 +362,7 @@ rzipois = function(n, lambda, phi = 0) {
         eval(negzero.expression)
     }), list( .zero = zero ))),
     initialize = eval(substitute(expression({
+        Musual <- 2
         y = as.matrix(y)
         if (any(y != round(y )))
             stop("the response must be integer-valued")
@@ -379,7 +380,7 @@ rzipois = function(n, lambda, phi = 0) {
         predictors.names = 
             c(namesof(mynames1, .lp0,     earg = .ep0,     tag = FALSE),
               namesof(mynames2, .llambda, earg = .elambda, tag = FALSE))
-        predictors.names = predictors.names[interleave.VGAM(2*NOS, M = 2)]
+        predictors.names = predictors.names[interleave.VGAM(Musual*NOS, M = Musual)]
 
         if (!length(etastart)) {
             etastart = cbind(theta2eta((0.5+w*y0)/(1+w), .lp0, earg = .ep0 ),
@@ -390,7 +391,7 @@ rzipois = function(n, lambda, phi = 0) {
                        y[!sthese, spp.] / (-expm1(-y[!sthese, spp.])),
                               .llambda, earg = .elambda )
             }
-            etastart = etastart[, interleave.VGAM(ncol(etastart), M = 2)]
+            etastart = etastart[, interleave.VGAM(ncol(etastart), M = Musual)]
         }
     }), list( .lp0 = lp0, .llambda = llambda,
               .ep0 = ep0, .elambda = elambda ))), 
@@ -409,12 +410,12 @@ rzipois = function(n, lambda, phi = 0) {
     last = eval(substitute(expression({
         temp.names = c(rep( .lp0,     len = NOS),
                        rep( .llambda, len = NOS))
-        temp.names = temp.names[interleave.VGAM(2*NOS, M = 2)]
+        temp.names = temp.names[interleave.VGAM(Musual*NOS, M = Musual)]
         misc$link = temp.names
         misc$earg = vector("list", 2 * NOS)
         names(misc$link) <-
         names(misc$earg) <-
-            c(mynames1, mynames2)[interleave.VGAM(2*NOS, M = 2)]
+            c(mynames1, mynames2)[interleave.VGAM(Musual*NOS, M = Musual)]
         for(ii in 1:NOS) {
             misc$earg[[2*ii-1]] = .ep0
             misc$earg[[2*ii  ]] = .elambda
@@ -460,7 +461,7 @@ rzipois = function(n, lambda, phi = 0) {
                 (y0 / mup0 - 1) / (1 - mup0)
         ans <- cbind(temp3,
                      w * dl.dlambda * dlambda.deta)
-        ans = ans[, interleave.VGAM(ncol(ans), M = 2)]
+        ans = ans[, interleave.VGAM(ncol(ans), M = Musual)]
         ans
     }), list( .lp0 = lp0, .llambda = llambda,
               .ep0 = ep0, .elambda = elambda ))),
@@ -489,7 +490,7 @@ rzipois = function(n, lambda, phi = 0) {
         }
         wz[, 1:NOS] =  tmp200
 
-        wz = wz[, interleave.VGAM(ncol(wz), M = 2)]
+        wz = wz[, interleave.VGAM(ncol(wz), M = Musual)]
 
         wz
     }), list( .lp0 = lp0, .ep0 = ep0 ))))
@@ -500,36 +501,38 @@ rzipois = function(n, lambda, phi = 0) {
 
 
 
- zanegbinomial = function(lp0 = "logit", lmunb = "loge", lk = "loge",
-                          ep0 = list(), emunb = list(), ek = list(),
-                          ipnb0 = NULL, ik = NULL, zero = -3,
-                          cutoff = 0.995, method.init = 1,
-                          shrinkage.init = 0.95)
+ zanegbinomial =
+  function(lp0 = "logit", lmunb = "loge", lsize = "loge",
+           ep0 = list(), emunb = list(), esize = list(),
+           ipnb0 = NULL, isize = NULL, zero = -3,
+           cutoff = 0.995, imethod = 1,
+           shrinkage.init = 0.95)
 {
 
 
 
-    if (!is.Numeric(cutoff, positiv=TRUE, allow = 1) || cutoff<0.8 || cutoff>=1)
+    if (!is.Numeric(cutoff, positiv = TRUE, allow = 1) ||
+        cutoff < 0.8 || cutoff >= 1)
         stop("range error in the argument 'cutoff'")
-    if (length(ipnb0) && (!is.Numeric(ipnb0, positiv=TRUE) ||
+    if (length(ipnb0) && (!is.Numeric(ipnb0, positiv = TRUE) ||
        max(ipnb0) >= 1))
         stop("If given, 'ipnb0' must contain values in (0,1) only")
-    if (length(ik) && !is.Numeric(ik, positiv=TRUE))
-        stop("If given, 'ik' must contain positive values only")
-    if (!is.Numeric(method.init, allow = 1, integ = TRUE, posit = TRUE) ||
-       method.init > 2) stop("argument 'method.init' must be 1 or 2")
+    if (length(isize) && !is.Numeric(isize, positiv = TRUE))
+        stop("If given, 'isize' must contain positive values only")
+    if (!is.Numeric(imethod, allow = 1, integ = TRUE, posit = TRUE) ||
+       imethod > 2) stop("argument 'imethod' must be 1 or 2")
     if (!is.Numeric(shrinkage.init, allow = 1) || shrinkage.init < 0 ||
        shrinkage.init > 1) stop("bad input for argument 'shrinkage.init'")
 
     if (mode(lmunb) != "character" && mode(lmunb) != "name")
         lmunb = as.character(substitute(lmunb))
-    if (mode(lk) != "character" && mode(lk) != "name")
-        lk = as.character(substitute(lk))
+    if (mode(lsize) != "character" && mode(lsize) != "name")
+        lsize = as.character(substitute(lsize))
     if (mode(lp0) != "character" && mode(lp0) != "name")
         lp0 = as.character(substitute(lp0))
     if (!is.list(ep0)) ep0 = list()
     if (!is.list(emunb)) emunb = list()
-    if (!is.list(ek)) ek = list()
+    if (!is.list(esize)) esize = list()
 
     new("vglmff",
     blurb = c("Zero-altered negative binomial (binomial and\n",
@@ -537,8 +540,8 @@ rzipois = function(n, lambda, phi = 0) {
               "Links:    ",
               namesof("p0",   lp0,   earg = ep0,   tag = FALSE), ", ",
               namesof("munb", lmunb, earg = emunb, tag = FALSE), ", ",
-              namesof("k",    lk,    earg = ek,    tag = FALSE), "\n",
-              "Mean:     (1-p0) * munb / [1 - (k/(k+munb))^k]"),
+              namesof("size", lsize, earg = esize, tag = FALSE), "\n",
+              "Mean:     (1-p0) * munb / [1 - (size/(size+munb))^size]"),
     constraints = eval(substitute(expression({
 
         dotzero <- .zero
@@ -546,22 +549,24 @@ rzipois = function(n, lambda, phi = 0) {
         eval(negzero.expression)
     }), list( .zero = zero ))),
     initialize = eval(substitute(expression({
+        Musual <- 3
         y = as.matrix(y)
         extra$NOS = NOS = ncoly = ncol(y)  # Number of species
-        M = 3 * ncoly # 
+        M = Musual * ncoly # 
         if (any(y != round(y)))
             stop("the response must be integer-valued")
         if (any(y < 0))
             stop("the response must not have negative values")
 
-        mynames1 = if (NOS == 1) "p0" else paste("p0", 1:NOS, sep = "")
+        mynames1 = if (NOS == 1) "p0"   else paste("p0",   1:NOS, sep = "")
         mynames2 = if (NOS == 1) "munb" else paste("munb", 1:NOS, sep = "")
-        mynames3 = if (NOS == 1) "k" else paste("k", 1:NOS, sep = "")
+        mynames3 = if (NOS == 1) "size" else paste("size", 1:NOS, sep = "")
         predictors.names =
             c(namesof(mynames1, .lp0,   earg = .ep0,   tag = FALSE),
               namesof(mynames2, .lmunb, earg = .emunb, tag = FALSE),
-              namesof(mynames3, .lk,    earg = .ek,    tag = FALSE))
-        predictors.names = predictors.names[interleave.VGAM(3*NOS, M = 3)]
+              namesof(mynames3, .lsize, earg = .esize,    tag = FALSE))
+        predictors.names =
+          predictors.names[interleave.VGAM(Musual*NOS, M = Musual)]
         extra$y0 = y0 = ifelse(y == 0, 1, 0)
         extra$skip.these = skip.these = matrix(as.logical(y0), n, NOS)
 
@@ -569,7 +574,7 @@ rzipois = function(n, lambda, phi = 0) {
             mu.init = y
             for(iii in 1:ncol(y)) {
                 index.posy = (y[,iii] > 0)
-                use.this = if ( .method.init == 2) {
+                use.this = if ( .imethod == 2) {
                     weighted.mean(y[index.posy,iii], w[index.posy])
                 } else {
                     median(rep(y[index.posy,iii], w[index.posy])) + 1/2
@@ -585,7 +590,7 @@ rzipois = function(n, lambda, phi = 0) {
 
 
             pnb0 = matrix(if(length( .ipnb0)) .ipnb0 else -1,
-                          nr=n, nc=NOS, byrow=TRUE)
+                          nr=n, nc=NOS, byrow = TRUE)
             for(spp. in 1:NOS) {
                 if (any(pnb0[,spp.] < 0)) {
                     index.y0 = y[,spp.] < 0.5
@@ -594,12 +599,12 @@ rzipois = function(n, lambda, phi = 0) {
             }
 
 
-            if ( is.Numeric( .ik )) {
-                kmat0 = matrix( .ik, nr=n, nc=ncoly, byrow=TRUE)
+            if ( is.Numeric( .isize )) {
+                kmat0 = matrix( .isize, nr=n, nc=ncoly, byrow = TRUE)
             } else {
                 posnegbinomial.Loglikfun = function(kmat, y, x, w, extraargs) {
                      munb = extraargs
-                     sum(w * dposnegbin(x=y, munb=munb, size=kmat, log = TRUE))
+                     sum(w * dposnegbin(x = y, munb = munb, size = kmat, log = TRUE))
                 }
                 k.grid = 2^((-6):6)
                 kmat0 = matrix(0, nr=n, nc=NOS) 
@@ -607,21 +612,22 @@ rzipois = function(n, lambda, phi = 0) {
                     index.posy = y[,spp.] > 0
                     posy = y[index.posy, spp.]
                     kmat0[,spp.] = getMaxMin(k.grid,
-                                      objfun=posnegbinomial.Loglikfun,
-                                      y=posy, x=x[index.posy,], w=w[index.posy],
-                                      extraargs= mu.init[index.posy, spp.])
+                                      objfun = posnegbinomial.Loglikfun,
+                                      y = posy, x = x[index.posy,],
+                                      w = w[index.posy],
+                                      extraargs = mu.init[index.posy, spp.])
                 }
             }
 
             etastart = cbind(theta2eta(pnb0,    .lp0,   earg = .ep0 ),
                              theta2eta(mu.init, .lmunb, earg = .emunb),
-                             theta2eta(kmat0,   .lk,    earg = .ek ))
-            etastart = etastart[, interleave.VGAM(ncol(etastart), M = 3)]
+                             theta2eta(kmat0,   .lsize, earg = .esize ))
+            etastart = etastart[, interleave.VGAM(ncol(etastart), M = Musual)]
         }
-    }), list( .lp0 = lp0, .lmunb = lmunb, .lk = lk,
-              .ep0 = ep0, .emunb = emunb, .ek = ek,
-              .ipnb0=ipnb0, .ik=ik,
-              .method.init = method.init, .sinit = shrinkage.init ))), 
+    }), list( .lp0 = lp0, .lmunb = lmunb, .lsize = lsize,
+              .ep0 = ep0, .emunb = emunb, .esize = esize,
+              .ipnb0 = ipnb0, .isize = isize,
+              .imethod = imethod, .sinit = shrinkage.init ))), 
     inverse = eval(substitute(function(eta, extra = NULL) {
         NOS <- extra$NOS
         p0   <- eta2theta(eta[,3*(1:NOS)-2],
@@ -629,49 +635,51 @@ rzipois = function(n, lambda, phi = 0) {
         munb <- eta2theta(eta[,3*(1:NOS)-1, drop = FALSE],
                          .lmunb, earg = .emunb )
         kmat <- eta2theta(eta[,3*(1:NOS),   drop = FALSE],
-                         .lk, earg = .ek )
+                         .lsize, earg = .esize )
         pnb0 <- (kmat / (kmat + munb))^kmat # p(0) from negative binomial
         (1 - p0) * munb / (1 - pnb0)
-    }, list( .lp0 = lp0, .lk = lk, .lmunb = lmunb,
-             .ep0 = ep0, .emunb = emunb, .ek = ek ))),
+    }, list( .lp0 = lp0, .lsize = lsize, .lmunb = lmunb,
+             .ep0 = ep0, .emunb = emunb, .esize = esize ))),
     last = eval(substitute(expression({
-        misc$link = c(rep( .lp0, length=NOS),
-                      rep( .lmunb, length=NOS),
-                      rep( .lk, length=NOS))
+        misc$link = c(rep( .lp0,   length = NOS),
+                      rep( .lmunb, length = NOS),
+                      rep( .lsize, length = NOS))
         temp.names = c(mynames1, mynames2, mynames3)
-        temp.names = temp.names[interleave.VGAM(3*NOS, M = 3)]
+        temp.names = temp.names[interleave.VGAM(Musual*NOS, M = Musual)]
         names(misc$link) = temp.names
-        misc$earg = vector("list", 3*NOS)
+        misc$earg = vector("list", Musual*NOS)
         names(misc$earg) = temp.names
         for(ii in 1:NOS) {
             misc$earg[[3*ii-2]] = .ep0
             misc$earg[[3*ii-1]] = .emunb
-            misc$earg[[3*ii  ]] = .ek
+            misc$earg[[3*ii  ]] = .esize
         }
         misc$cutoff = .cutoff
-        misc$method.init = .method.init
-    }), list( .lp0 = lp0, .lmunb = lmunb, .lk = lk, .cutoff = cutoff,
-              .ep0 = ep0, .emunb = emunb, .ek = ek,
-              .method.init = method.init ))),
+        misc$imethod = .imethod
+    }), list( .lp0 = lp0, .lmunb = lmunb, .lsize = lsize,
+              .ep0 = ep0, .emunb = emunb, .esize = esize,
+              .cutoff = cutoff,
+              .imethod = imethod ))),
     loglikelihood = eval(substitute(
-        function(mu, y, w, residuals = FALSE, eta, extra = NULL) {
-        NOS = extra$NOS
-        p0 = eta2theta(eta[,3*(1:NOS)-2, drop = FALSE], .lp0, earg = .ep0 )
-        munb = eta2theta(eta[,3*(1:NOS)-1, drop = FALSE], .lmunb, earg = .emunb )
-        kmat = eta2theta(eta[,3*(1:NOS), drop = FALSE], .lk, earg = .ek )
-        if (residuals) stop("loglikelihood residuals not ",
-                            "implemented yet") else {
-            sum(w * dzanegbin(x=y, p0=p0, munb=munb, size=kmat, log = TRUE))
-        }
-    }, list( .lp0 = lp0, .lmunb = lmunb, .lk = lk,
-             .ep0 = ep0, .emunb = emunb, .ek = ek ))),
+      function(mu, y, w, residuals = FALSE, eta, extra = NULL) {
+      NOS = extra$NOS
+      p0 = eta2theta(eta[,3*(1:NOS)-2, drop = FALSE], .lp0, earg = .ep0 )
+      munb = eta2theta(eta[,3*(1:NOS)-1, drop = FALSE], .lmunb, earg = .emunb )
+      kmat = eta2theta(eta[,3*(1:NOS), drop = FALSE], .lsize, earg = .esize )
+      if (residuals) stop("loglikelihood residuals not ",
+                          "implemented yet") else {
+          sum(w * dzanegbin(x = y, p0 = p0, munb = munb, size = kmat, log = TRUE))
+      }
+    }, list( .lp0 = lp0, .lmunb = lmunb, .lsize = lsize,
+             .ep0 = ep0, .emunb = emunb, .esize = esize ))),
     vfamily = c("zanegbinomial"),
     deriv = eval(substitute(expression({
+        Musual <- 3
         NOS = extra$NOS
         y0 = extra$y0
-        p0 = eta2theta(eta[,3*(1:NOS)-2], .lp0, earg = .ep0 )
+        p0 = eta2theta(eta[,3*(1:NOS)-2],                 .lp0, earg = .ep0 )
         munb = eta2theta(eta[,3*(1:NOS)-1, drop = FALSE], .lmunb, earg = .emunb )
-        kmat = eta2theta(eta[,3*(1:NOS), drop = FALSE], .lk, earg = .ek )
+        kmat = eta2theta(eta[,3*(1:NOS),   drop = FALSE], .lsize, earg = .esize )
         skip = extra$skip.these
 
         d3 = deriv3(~ -log(1 - (kmat. /(kmat. + munb. ))^kmat. ),
@@ -695,8 +703,9 @@ rzipois = function(n, lambda, phi = 0) {
             dl.dk[skip[,spp.],spp.] = dl.dmunb[skip[,spp.],spp.] = 0
 
         dmunb.deta = dtheta.deta(munb, .lmunb, earg = .emunb )
-        dk.deta = dtheta.deta(kmat, .lk, earg = .ek )
-        myderiv = w * cbind(dl.dmunb * dmunb.deta, dl.dk * dk.deta)
+        dk.deta    = dtheta.deta(kmat, .lsize, earg = .esize )
+        myderiv    = c(w) * cbind(dl.dmunb * dmunb.deta,
+                               dl.dk * dk.deta)
 
         mup0 = p0
         temp3 = if ( .lp0 == "logit") {
@@ -706,10 +715,10 @@ rzipois = function(n, lambda, phi = 0) {
                 (y0/mup0 - 1) / (1-mup0)
 
         ans = cbind(temp3, myderiv)
-        ans = ans[, interleave.VGAM(ncol(ans), M = 3)]
+        ans = ans[, interleave.VGAM(ncol(ans), M = Musual)]
         ans
-    }), list( .lp0 = lp0, .lmunb = lmunb, .lk = lk,
-              .ep0 = ep0, .emunb = emunb, .ek = ek ))),
+    }), list( .lp0 = lp0, .lmunb = lmunb, .lsize = lsize,
+              .ep0 = ep0, .emunb = emunb, .esize = esize ))),
     weight = eval(substitute(expression({
         wz = matrix(0, n, 6*NOS-1)  # wz is not 'diagonal' 
         pnb0 = (kmat / (kmat + munb))^kmat
@@ -804,157 +813,158 @@ dposnegbin = function(x, munb, k, log = FALSE) {
 
  zipoisson = function(lphi = "logit", llambda = "loge",
                       ephi = list(), elambda = list(),
-                      iphi = NULL, ilambda = NULL, method.init = 1,
+                      iphi = NULL, ilambda = NULL, imethod = 1,
                       shrinkage.init = 0.8, zero = NULL)
 {
-    if (mode(lphi) != "character" && mode(lphi) != "name")
-        lphi = as.character(substitute(lphi))
-    if (mode(llambda) != "character" && mode(llambda) != "name")
-        llambda = as.character(substitute(llambda))
-    if (is.Numeric(iphi))
-        if (!is.Numeric(iphi, posit = TRUE) || any(iphi >= 1))
-            stop("'iphi' values must be inside the interval (0,1)")
-    if (is.Numeric(ilambda))
-        if (!is.Numeric(ilambda, posit = TRUE))
-            stop("'ilambda' values must be positive")
-    if (!is.list(ephi)) ephi = list()
-    if (!is.list(elambda)) elambda = list()
-    if (!is.Numeric(method.init, allow = 1, integ = TRUE, posit = TRUE) ||
-       method.init > 2) stop("argument 'method.init' must be 1 or 2")
-    if (!is.Numeric(shrinkage.init, allow = 1) || shrinkage.init < 0 ||
-       shrinkage.init > 1) stop("bad input for argument 'shrinkage.init'")
-
-    new("vglmff",
-    blurb = c("Zero-inflated Poisson\n\n",
-              "Links:    ",
-              namesof("phi",    lphi,    earg = ephi), ", ",
-              namesof("lambda", llambda, earg = elambda), "\n",
-              "Mean:     (1-phi)*lambda"),
-    constraints = eval(substitute(expression({
-        constraints <- cm.zero.vgam(constraints, x, .zero, M)
-    }), list( .zero=zero ))),
-    initialize = eval(substitute(expression({
-        if (ncol(as.matrix(y)) != 1)
-          stop("multivariate responses not allowed")
-        if (any(round(y) != y))
-          stop("integer-valued responses only allowed for ",
-               "the 'zipoisson' family")
-
-        predictors.names = c(
-            namesof("phi",    .lphi,    earg = .ephi, tag = FALSE),
-            namesof("lambda", .llambda, earg = .ephi, tag = FALSE))
-
-        if (!length(etastart)) {
-            phi.init = if (length( .iphi )) .iphi else {
-                0.5 * sum(w[y == 0]) / sum(w)
-            }
-            phi.init[phi.init <= 0.02] = 0.02  # Last resort
-            phi.init[phi.init >= 0.98] = 0.98  # Last resort
-
+  if (mode(lphi) != "character" && mode(lphi) != "name")
+    lphi = as.character(substitute(lphi))
+  if (mode(llambda) != "character" && mode(llambda) != "name")
+    llambda = as.character(substitute(llambda))
+  if (is.Numeric(iphi))
+    if (!is.Numeric(iphi, posit = TRUE) || any(iphi >= 1))
+      stop("'iphi' values must be inside the interval (0,1)")
+  if (is.Numeric(ilambda))
+    if (!is.Numeric(ilambda, posit = TRUE))
+      stop("'ilambda' values must be positive")
+  if (!is.list(ephi)) ephi = list()
+  if (!is.list(elambda)) elambda = list()
+  if (!is.Numeric(imethod, allow = 1, integ = TRUE, posit = TRUE) ||
+     imethod > 2) stop("argument 'imethod' must be 1 or 2")
+  if (!is.Numeric(shrinkage.init, allow = 1) || shrinkage.init < 0 ||
+     shrinkage.init > 1) stop("bad input for argument 'shrinkage.init'")
 
-            if ( length( .ilambda )) {
-                lambda.init = rep( .ilambda, len = n)
-            } else if ( length(mustart)) {
-                lambda.init = mustart / (1 - phi.init)
-            } else if ( .method.init == 2) {
-                mymean = weighted.mean(y[y > 0], w[y > 0]) + 1/16
-                lambda.init = (1 - .sinit) * (y + 1/8) + .sinit * mymean
-            } else {
-                use.this = median(y[y > 0]) + 1 / 16
-                lambda.init = (1 - .sinit) * (y + 1/8) + .sinit * use.this
-            }
+  new("vglmff",
+  blurb = c("Zero-inflated Poisson\n\n",
+            "Links:    ",
+            namesof("phi",    lphi,    earg = ephi), ", ",
+            namesof("lambda", llambda, earg = elambda), "\n",
+            "Mean:     (1-phi)*lambda"),
+  constraints = eval(substitute(expression({
+      constraints <- cm.zero.vgam(constraints, x, .zero, M)
+  }), list( .zero=zero ))),
+  initialize = eval(substitute(expression({
+    if (ncol(as.matrix(y)) != 1)
+      stop("multivariate responses not allowed")
+    if (any(round(y) != y))
+      stop("integer-valued responses only allowed for ",
+           "the 'zipoisson' family")
+
+    predictors.names = c(
+      namesof("phi",    .lphi,    earg = .ephi, tag = FALSE),
+      namesof("lambda", .llambda, earg = .ephi, tag = FALSE))
+
+    if (!length(etastart)) {
+      phi.init = if (length( .iphi )) .iphi else {
+            0.5 * sum(w[y == 0]) / sum(w)
+      }
+      phi.init[phi.init <= 0.02] = 0.02  # Last resort
+      phi.init[phi.init >= 0.98] = 0.98  # Last resort
+
+
+      if ( length( .ilambda )) {
+        lambda.init = rep( .ilambda, len = n)
+      } else if ( length(mustart)) {
+        lambda.init = mustart / (1 - phi.init)
+      } else if ( .imethod == 2) {
+        mymean = weighted.mean(y[y > 0], w[y > 0]) + 1/16
+              lambda.init = (1 - .sinit) * (y + 1/8) + .sinit * mymean
+      } else {
+        use.this = median(y[y > 0]) + 1 / 16
+        lambda.init = (1 - .sinit) * (y + 1/8) + .sinit * use.this
+      }
 
 
 
-                zipois.Loglikfun = function(phival, y, x, w, extraargs) {
-                    sum(w * dzipois(x=y, phi = phival,
-                                    lambda = extraargs$lambda,
-                                    log = TRUE))
-                }
-                phi.grid = seq(0.02, 0.98, len = 21)
-                init.phi = getMaxMin(phi.grid,
-                                     objfun=zipois.Loglikfun,
-                                     y=y, x=x, w=w,
-                                     extraargs= list(lambda = lambda.init))
-            phi.init = if (length( .iphi )) .iphi else init.phi
-            if (length(mustart)) {
-                lambda.init = lambda.init / (1 - phi.init)
-            }
+      zipois.Loglikfun = function(phival, y, x, w, extraargs) {
+        sum(w * dzipois(x = y, phi = phival,
+                        lambda = extraargs$lambda,
+                        log = TRUE))
+      }
+      phi.grid = seq(0.02, 0.98, len = 21)
+      init.phi = getMaxMin(phi.grid,
+                           objfun = zipois.Loglikfun,
+                           y = y, x = x, w = w,
+                           extraargs = list(lambda = lambda.init))
+      phi.init = if (length( .iphi )) .iphi else init.phi
+      if (length(mustart)) {
+        lambda.init = lambda.init / (1 - phi.init)
+      }
 
-            etastart = cbind(theta2eta(rep(phi.init, len = n), .lphi, .ephi ),
-                             theta2eta(lambda.init, .llambda, .elambda ))
-            mustart <- NULL  # Since etastart has been computed.
-        }
-    }), list( .lphi = lphi, .llambda = llambda,
-              .ephi = ephi, .elambda = elambda,
-              .iphi = iphi, .ilambda = ilambda,
-              .method.init = method.init, .sinit = shrinkage.init ))),
-    inverse = eval(substitute(function(eta, extra = NULL) {
-        phivec = eta2theta(eta[, 1], .lphi,    earg = .ephi )
-        lambda = eta2theta(eta[, 2], .llambda, earg = .elambda )
-        (1 - phivec) * lambda
-    }, list( .lphi = lphi, .llambda = llambda,
-             .ephi = ephi, .elambda = elambda ))),
-    last = eval(substitute(expression({
-        misc$link <-    c("phi" = .lphi, "lambda" = .llambda)
-        misc$earg <- list("phi" = .ephi, "lambda" = .elambda)
-        if (intercept.only) {
-            phi    = eta2theta(eta[1, 1], .lphi,    earg = .ephi )
-            lambda = eta2theta(eta[1, 2], .llambda, earg = .elambda )
-            misc$prob0 = phi + (1 - phi) * exp(-lambda) # P(Y=0)
-        }
-    }), list( .lphi = lphi, .llambda = llambda,
-              .ephi = ephi, .elambda = elambda ))),
-    loglikelihood = eval(substitute( 
-        function(mu, y, w, residuals = FALSE, eta, extra = NULL) {
-        smallno = 100 * .Machine$double.eps
-        phi = eta2theta(eta[, 1], .lphi, earg = .ephi )
-        phi = pmax(phi, smallno)
-        phi = pmin(phi, 1.0-smallno)
-        lambda = eta2theta(eta[, 2], .llambda, earg = .elambda )
-        if (residuals) stop("loglikelihood residuals not ",
-                            "implemented yet") else {
-            sum(w * dzipois(x=y, phi = phi, lambda = lambda, log = TRUE))
-        }
+      etastart = cbind(theta2eta(rep(phi.init, len = n), .lphi, .ephi ),
+                       theta2eta(lambda.init, .llambda, .elambda ))
+      mustart <- NULL  # Since etastart has been computed.
+    }
+  }), list( .lphi = lphi, .llambda = llambda,
+            .ephi = ephi, .elambda = elambda,
+            .iphi = iphi, .ilambda = ilambda,
+            .imethod = imethod, .sinit = shrinkage.init ))),
+  inverse = eval(substitute(function(eta, extra = NULL) {
+      phivec = eta2theta(eta[, 1], .lphi,    earg = .ephi )
+      lambda = eta2theta(eta[, 2], .llambda, earg = .elambda )
+      (1 - phivec) * lambda
+  }, list( .lphi = lphi, .llambda = llambda,
+           .ephi = ephi, .elambda = elambda ))),
+  last = eval(substitute(expression({
+    misc$link <-    c("phi" = .lphi, "lambda" = .llambda)
+    misc$earg <- list("phi" = .ephi, "lambda" = .elambda)
+    if (intercept.only) {
+        phi    = eta2theta(eta[1, 1], .lphi,    earg = .ephi )
+        lambda = eta2theta(eta[1, 2], .llambda, earg = .elambda )
+        misc$prob0 = phi + (1 - phi) * exp(-lambda) # P(Y=0)
+    }
+  }), list( .lphi = lphi, .llambda = llambda,
+            .ephi = ephi, .elambda = elambda ))),
+  loglikelihood = eval(substitute( 
+    function(mu, y, w, residuals = FALSE, eta, extra = NULL) {
+    smallno = 100 * .Machine$double.eps
+    phi = eta2theta(eta[, 1], .lphi, earg = .ephi )
+    phi = pmax(phi, smallno)
+    phi = pmin(phi, 1.0-smallno)
+    lambda = eta2theta(eta[, 2], .llambda, earg = .elambda )
+    if (residuals) stop("loglikelihood residuals not ",
+                        "implemented yet") else {
+      sum(w * dzipois(x = y, phi = phi, lambda = lambda, log = TRUE))
+    }
     }, list( .lphi = lphi, .llambda = llambda,
              .ephi = ephi, .elambda = elambda ))),
-    vfamily = c("zipoisson"),
-    deriv = eval(substitute(expression({
-        smallno = 100 * .Machine$double.eps
-        phi = eta2theta(eta[, 1], .lphi, earg = .ephi )
-        phi = pmax(phi, smallno)
-        phi = pmin(phi, 1.0-smallno)
-        lambda = eta2theta(eta[, 2], .llambda, earg = .elambda )
-        tmp8 = phi + (1-phi)*exp(-lambda)
-        index0 = (y == 0)
-        dl.dphi = -expm1(-lambda) / tmp8
-        dl.dphi[!index0] = -1 / (1-phi[!index0])
-        dl.dlambda = -(1-phi) * exp(-lambda) / tmp8
-        dl.dlambda[!index0] = (y[!index0] - lambda[!index0]) / lambda[!index0]
-        dphi.deta = dtheta.deta(phi, .lphi, earg = .ephi)
-        dlambda.deta = dtheta.deta(lambda, .llambda, earg = .elambda )
-        ans = w * cbind(dl.dphi * dphi.deta, dl.dlambda * dlambda.deta)
-        if (.llambda == "loge" && (any(lambda[!index0] < .Machine$double.eps))) {
-            ans[!index0,2] = w[!index0] * (y[!index0] - lambda[!index0])
-        }
-        ans
-    }), list( .lphi = lphi, .llambda = llambda,
-              .ephi = ephi, .elambda = elambda ))),
+  vfamily = c("zipoisson"),
+  deriv = eval(substitute(expression({
+    smallno = 100 * .Machine$double.eps
+    phi = eta2theta(eta[, 1], .lphi, earg = .ephi )
+    phi = pmax(phi, smallno)
+    phi = pmin(phi, 1.0-smallno)
+    lambda = eta2theta(eta[, 2], .llambda, earg = .elambda )
+    tmp8 = phi + (1-phi)*exp(-lambda)
+    index0 = (y == 0)
+    dl.dphi = -expm1(-lambda) / tmp8
+    dl.dphi[!index0] = -1 / (1-phi[!index0])
+    dl.dlambda = -(1-phi) * exp(-lambda) / tmp8
+    dl.dlambda[!index0] = (y[!index0] - lambda[!index0]) / lambda[!index0]
+    dphi.deta = dtheta.deta(phi, .lphi, earg = .ephi)
+    dlambda.deta = dtheta.deta(lambda, .llambda, earg = .elambda )
+    ans = c(w) * cbind(dl.dphi * dphi.deta,
+                       dl.dlambda * dlambda.deta)
+    if (.llambda == "loge" && (any(lambda[!index0] < .Machine$double.eps))) {
+      ans[!index0,2] = w[!index0] * (y[!index0] - lambda[!index0])
+    }
+    ans
+  }), list( .lphi = lphi, .llambda = llambda,
+            .ephi = ephi, .elambda = elambda ))),
     weight = eval(substitute(expression({
-        wz = matrix(as.numeric(NA), nrow = n, ncol = dimm(M))
-        d2l.dphi2 = -expm1(-lambda) / ((1-phi)*tmp8)
-        d2l.dlambda2 = (1-phi)/lambda - phi*(1-phi)*exp(-lambda) / tmp8
-        d2l.dphilambda = -exp(-lambda) / tmp8
-        wz[, iam(1,1,M)] = d2l.dphi2 * dphi.deta^2
-        wz[, iam(2,2,M)] = d2l.dlambda2 * dlambda.deta^2
-        wz[, iam(1,2,M)] = d2l.dphilambda * dphi.deta * dlambda.deta
-        if (.llambda == "loge" && (any(lambda[!index0] < .Machine$double.eps))) {
-            ind5 = !index0 & (lambda < .Machine$double.eps)
-            if (any(ind5))
-                wz[ind5,iam(2,2,M)] = (1-phi[ind5]) * .Machine$double.eps
-        }
-        w * wz
-    }), list( .llambda = llambda ))))
+      wz = matrix(as.numeric(NA), nrow = n, ncol = dimm(M))
+      d2l.dphi2 = -expm1(-lambda) / ((1-phi)*tmp8)
+      d2l.dlambda2 = (1-phi)/lambda - phi*(1-phi)*exp(-lambda) / tmp8
+      d2l.dphilambda = -exp(-lambda) / tmp8
+      wz[, iam(1,1,M)] = d2l.dphi2 * dphi.deta^2
+      wz[, iam(2,2,M)] = d2l.dlambda2 * dlambda.deta^2
+      wz[, iam(1,2,M)] = d2l.dphilambda * dphi.deta * dlambda.deta
+      if (.llambda == "loge" && (any(lambda[!index0] < .Machine$double.eps))) {
+        ind5 = !index0 & (lambda < .Machine$double.eps)
+        if (any(ind5))
+          wz[ind5,iam(2,2,M)] = (1-phi[ind5]) * .Machine$double.eps
+      }
+      c(w) * wz
+  }), list( .llambda = llambda ))))
 }
 
 
@@ -1159,7 +1169,7 @@ qzibinom = function(p, size, prob, lower.tail = TRUE, log.p = FALSE, phi = 0) {
 }
 
 rzibinom = function(n, size, prob, phi = 0) {
-    if (!is.Numeric(n, positive=TRUE, integer=TRUE, allow = 1))
+    if (!is.Numeric(n, positive = TRUE, integer = TRUE, allow = 1))
         stop("n must be a single positive integer")
     ans = rbinom(n, size, prob)
     phi = rep(phi, len=length(ans))
@@ -1256,27 +1266,29 @@ rzinegbin = function(n, phi, size, prob = NULL, munb = NULL) {
 
 
 
-zinegbinomial.control <- function(save.weight=TRUE, ...)
+zinegbinomial.control <- function(save.weight = TRUE, ...)
 {
     list(save.weight=save.weight)
 }
 
 
 
- zinegbinomial = function(lphi = "logit", lmunb = "loge", lk = "loge",
-                          ephi = list(), emunb = list(), ek = list(),
-                          iphi = NULL, ik = NULL, zero = -3,
-                          method.init = 1, shrinkage.init = 0.95,
-                          nsimEIM = 200)
+ zinegbinomial =
+  function(lphi = "logit", lmunb = "loge", lsize = "loge",
+           ephi = list(),  emunb = list(), esize = list(),
+           iphi = NULL, isize = NULL, zero = -3,
+           imethod = 1, shrinkage.init = 0.95,
+           nsimEIM = 200)
 {
 
 
-    if (length(iphi) && (!is.Numeric(iphi, positiv=TRUE) || any(iphi >= 1)))
+    if (length(iphi) && (!is.Numeric(iphi, positiv = TRUE) ||
+        any(iphi >= 1)))
         stop("'iphi' must contain values in (0,1)")
-    if (length(ik) && !is.Numeric(ik, positiv=TRUE))
-        stop("'ik' must contain positive values only")
-    if (!is.Numeric(method.init, allow = 1, integ = TRUE, posit = TRUE) ||
-       method.init > 3) stop("argument 'method.init' must be 1, 2 or 3")
+    if (length(isize) && !is.Numeric(isize, positiv = TRUE))
+        stop("'isize' must contain positive values only")
+    if (!is.Numeric(imethod, allow = 1, integ = TRUE, posit = TRUE) ||
+       imethod > 3) stop("argument 'imethod' must be 1, 2 or 3")
     if (!is.Numeric(nsimEIM, allow = 1, integ = TRUE))
         stop("'nsimEIM' must be a positive integer")
     if (nsimEIM <= 10)
@@ -1286,20 +1298,20 @@ zinegbinomial.control <- function(save.weight=TRUE, ...)
 
     if (mode(lmunb) != "character" && mode(lmunb) != "name")
         lmunb = as.character(substitute(lmunb))
-    if (mode(lk) != "character" && mode(lk) != "name")
-        lk = as.character(substitute(lk))
+    if (mode(lsize) != "character" && mode(lsize) != "name")
+        lsize = as.character(substitute(lsize))
     if (mode(lphi) != "character" && mode(lphi) != "name")
         lphi = as.character(substitute(lphi))
-    if (!is.list(ephi)) ephi = list()
+    if (!is.list(ephi))  ephi  = list()
     if (!is.list(emunb)) emunb = list()
-    if (!is.list(ek)) ek = list()
+    if (!is.list(esize)) esize = list()
 
     new("vglmff",
     blurb = c("Zero-inflated negative binomial\n\n",
               "Links:    ",
               namesof("phi",  lphi , earg = ephi,  tag = FALSE), ", ",
               namesof("munb", lmunb, earg = emunb, tag = FALSE), ", ",
-              namesof("k",    lk,    earg = ek,    tag = FALSE), "\n",
+              namesof("size", lsize, earg = esize, tag = FALSE), "\n",
               "Mean:     (1-phi) * munb"),
     constraints = eval(substitute(expression({
 
@@ -1308,6 +1320,7 @@ zinegbinomial.control <- function(save.weight=TRUE, ...)
         eval(negzero.expression)
     }), list( .zero = zero ))),
     initialize = eval(substitute(expression({
+        Musual <- 3
         y = as.matrix(y)
         extra$NOS = NOS = ncoly = ncol(y)  # Number of species
         if (length(dimnames(y)))
@@ -1315,20 +1328,21 @@ zinegbinomial.control <- function(save.weight=TRUE, ...)
 
         mynames1 = if (NOS == 1) "phi"  else paste("phi",  1:NOS, sep = "")
         mynames2 = if (NOS == 1) "munb" else paste("munb", 1:NOS, sep = "")
-        mynames3 = if (NOS == 1) "k"    else paste("k",    1:NOS, sep = "")
+        mynames3 = if (NOS == 1) "size" else paste("size", 1:NOS, sep = "")
         predictors.names =
             c(namesof(mynames1, .lphi,  earg = .ephi,  tag = FALSE),
               namesof(mynames2, .lmunb, earg = .emunb, tag = FALSE),
-              namesof(mynames3, .lk,    earg = .ek,    tag = FALSE))
-        predictors.names = predictors.names[interleave.VGAM(3*NOS, M = 3)]
+              namesof(mynames3, .lsize, earg = .esize, tag = FALSE))
+        predictors.names =
+          predictors.names[interleave.VGAM(Musual*NOS, M = Musual)]
         if (!length(etastart)) {
-            mu.init = if ( .method.init == 3) {
+            mu.init = if ( .imethod == 3) {
                 y + 1/16
             } else {
                 mu.init = y
                 for(iii in 1:ncol(y)) {
                     index = (y[,iii] > 0)
-                    mu.init[,iii] = if ( .method.init == 2)
+                    mu.init[,iii] = if ( .imethod == 2)
                         weighted.mean(y[index,iii], w=w[index]) else
                         median(rep(y[index,iii], w[index])) + 1/8
                 }
@@ -1336,7 +1350,7 @@ zinegbinomial.control <- function(save.weight=TRUE, ...)
             }
 
             phi.init = if (length( .iphi))
-                matrix( .iphi, n, ncoly, byrow=TRUE) else {
+                matrix( .iphi, n, ncoly, byrow = TRUE) else {
                 phi.init = y
                 for(iii in 1:ncol(y))
                     phi.init[,iii] = sum(w[y[,iii] == 0]) / sum(w)
@@ -1346,8 +1360,8 @@ zinegbinomial.control <- function(save.weight=TRUE, ...)
             }
 
             kay.init =
-            if ( is.Numeric( .ik )) {
-                matrix( .ik, nr=n, nc=ncoly, byrow=TRUE)
+            if ( is.Numeric( .isize )) {
+                matrix( .isize, nr=n, nc=ncoly, byrow = TRUE)
             } else {
                 zinegbin.Loglikfun = function(kval, y, x, w, extraargs) {
                     index = (y == 0)
@@ -1364,8 +1378,8 @@ zinegbinomial.control <- function(save.weight=TRUE, ...)
                 kay.init = matrix(0, nr=n, nc=NOS)
                 for(spp. in 1:NOS) {
                     kay.init[,spp.] = getMaxMin(k.grid,
-                                      objfun=zinegbin.Loglikfun,
-                                      y=y[,spp.], x=x, w=w,
+                                      objfun = zinegbin.Loglikfun,
+                                      y=y[,spp.], x = x, w = w,
                                       extraargs= list(phi = phi.init[,spp.],
                                                       mu=mu.init[,spp.]))
                 }
@@ -1374,13 +1388,14 @@ zinegbinomial.control <- function(save.weight=TRUE, ...)
 
             etastart = cbind(theta2eta(phi.init, .lphi,  earg = .ephi),
                              theta2eta(mu.init,  .lmunb, earg = .emunb),
-                             theta2eta(kay.init, .lk,    earg = .ek))
-            etastart = etastart[, interleave.VGAM(ncol(etastart),M = 3)]
+                             theta2eta(kay.init, .lsize, earg = .esize))
+            etastart =
+              etastart[, interleave.VGAM(ncol(etastart), M = Musual)]
         }
-    }), list( .lphi = lphi, .lmunb = lmunb, .lk = lk,
-              .ephi = ephi, .emunb = emunb, .ek = ek,
-              .iphi = iphi,                 .ik = ik,
-              .sinit = shrinkage.init, .method.init = method.init ))), 
+    }), list( .lphi = lphi, .lmunb = lmunb, .lsize = lsize,
+              .ephi = ephi, .emunb = emunb, .esize = esize,
+              .iphi = iphi,                 .isize = isize,
+              .sinit = shrinkage.init, .imethod = imethod ))), 
     inverse = eval(substitute(function(eta, extra = NULL) {
         NOS = extra$NOS
         phi  = eta2theta(eta[,3*(1:NOS)-2, drop = FALSE],
@@ -1391,62 +1406,69 @@ zinegbinomial.control <- function(save.weight=TRUE, ...)
         if (length(extra$dimnamesy2))
           dimnames(fv.matrix) = list(dimnames(phi)[[1]], extra$dimnamesy2)
         fv.matrix
-    }, list( .lphi = lphi, .lk = lk, .lmunb = lmunb,
-             .ephi = ephi, .ek = ek, .emunb = emunb ))),
+    }, list( .lphi = lphi, .lsize = lsize, .lmunb = lmunb,
+             .ephi = ephi, .esize = esize, .emunb = emunb ))),
     last = eval(substitute(expression({
-        misc$link = c(rep( .lphi, length=NOS), rep( .lmunb, length=NOS),
-                      rep( .lk, length=NOS))
+        misc$link = c(rep( .lphi,  length = NOS),
+                      rep( .lmunb, length = NOS),
+                      rep( .lsize, length = NOS))
         temp.names = c(mynames1, mynames2, mynames3)
-        temp.names = temp.names[interleave.VGAM(3*NOS, M = 3)]
+        temp.names = temp.names[interleave.VGAM(Musual*NOS, M = Musual)]
         names(misc$link) = temp.names
         misc$earg = vector("list", 3*NOS)
         names(misc$earg) = temp.names
         for(ii in 1:NOS) {
             misc$earg[[3*ii-2]] = .ephi
             misc$earg[[3*ii-1]] = .emunb
-            misc$earg[[3*ii  ]] = .ek
+            misc$earg[[3*ii  ]] = .esize
         }
-        misc$method.init = .method.init
+        misc$imethod = .imethod
         misc$nsimEIM = .nsimEIM
         misc$expected = TRUE
+        misc$Musual = Musual
         if (intercept.only) {
             phi  = eta2theta(eta[1,3*(1:NOS)-2], .lphi,  earg = .ephi)
             munb = eta2theta(eta[1,3*(1:NOS)-1], .lmunb, earg = .emunb )
-            kval = eta2theta(eta[1,3*(1:NOS)],   .lk, earg = .ek)
+            kval = eta2theta(eta[1,3*(1:NOS)],   .lsize, earg = .esize)
             misc$prob0 = phi + (1-phi) * (kval / (kval + munb))^kval # P(Y=0)
         }
-    }), list( .lphi = lphi, .lmunb = lmunb, .lk = lk,
-              .ephi = ephi, .emunb = emunb, .ek = ek,
-              .nsimEIM = nsimEIM, .method.init = method.init ))),
+    }), list( .lphi = lphi, .lmunb = lmunb, .lsize = lsize,
+              .ephi = ephi, .emunb = emunb, .esize = esize,
+              .nsimEIM = nsimEIM, .imethod = imethod ))),
     loglikelihood = eval(substitute(
-        function(mu, y, w, residuals = FALSE, eta, extra = NULL) {
-        NOS = extra$NOS
-        phi  = eta2theta(eta[,3*(1:NOS)-2, drop = FALSE], .lphi,  earg = .ephi )
-        munb = eta2theta(eta[,3*(1:NOS)-1, drop = FALSE], .lmunb, earg = .emunb )
-        kmat = eta2theta(eta[,3*(1:NOS),  drop = FALSE], .lk,    earg = .ek )
-        if (residuals) stop("loglikelihood residuals not ",
-                            "implemented yet") else {
-            sum(w*dzinegbin(x=y, phi = phi, munb=munb, size=kmat, log = TRUE))
-        }
-    }, list( .lphi = lphi, .lmunb = lmunb, .lk = lk,
-             .ephi = ephi, .emunb = emunb, .ek = ek ))),
+      function(mu, y, w, residuals = FALSE, eta, extra = NULL) {
+      NOS = extra$NOS
+      phi  = eta2theta(eta[,3*(1:NOS)-2, drop = FALSE], .lphi,  earg = .ephi )
+      munb = eta2theta(eta[,3*(1:NOS)-1, drop = FALSE], .lmunb, earg = .emunb )
+      kmat = eta2theta(eta[,3*(1:NOS),   drop = FALSE], .lsize, earg = .esize )
+      if (residuals) stop("loglikelihood residuals not ",
+                          "implemented yet") else {
+        sum(w * dzinegbin(x = y, phi = phi, munb = munb,
+                          size = kmat, log = TRUE))
+      }
+    }, list( .lphi = lphi, .lmunb = lmunb, .lsize = lsize,
+             .ephi = ephi, .emunb = emunb, .esize = esize ))),
     vfamily = c("zinegbinomial"),
     deriv = eval(substitute(expression({
-        NOS = extra$NOS
-        phi  = eta2theta(eta[,3*(1:NOS)-2, drop = FALSE], .lphi,  earg = .ephi )
-        munb = eta2theta(eta[,3*(1:NOS)-1, drop = FALSE], .lmunb, earg = .emunb )
-        kmat = eta2theta(eta[,3*(1:NOS),   drop = FALSE], .lk,    earg = .ek )
-        dphi.deta = dtheta.deta(phi, .lphi, earg = .ephi )
-        dmunb.deta = dtheta.deta(munb, .lmunb, earg = .emunb )
-        dk.deta = dtheta.deta(kmat, .lk, earg = .ek )
-        dthetas.detas =
-            (cbind(dphi.deta,
-                   dmunb.deta,
-                   dk.deta))[, interleave.VGAM(3*NOS, M = 3)]
-
-        d3 = deriv3(~ log(phi. + (1 - phi.) * (kmat. /(kmat. + munb. ))^kmat.),
-                    c("phi.", "munb.", "kmat."), hessian=FALSE)
-        dl.dthetas =  matrix(0, n, M)  # M = 3*NOS; for all species
+      Musual <- 3
+      NOS = extra$NOS
+      phi  = eta2theta(eta[,3*(1:NOS)-2, drop = FALSE],
+                       .lphi,  earg = .ephi )
+      munb = eta2theta(eta[,3*(1:NOS)-1, drop = FALSE],
+                       .lmunb, earg = .emunb )
+      kmat = eta2theta(eta[,3*(1:NOS),   drop = FALSE],
+                       .lsize, earg = .esize )
+      dphi.deta  = dtheta.deta(phi,  .lphi,  earg = .ephi )
+      dmunb.deta = dtheta.deta(munb, .lmunb, earg = .emunb )
+      dk.deta    = dtheta.deta(kmat, .lsize, earg = .esize )
+      dthetas.detas =
+          (cbind(dphi.deta,
+                 dmunb.deta,
+                 dk.deta))[, interleave.VGAM(Musual*NOS, M = Musual)]
+
+      d3 = deriv3(~ log(phi. + (1 - phi.) * (kmat. /(kmat. + munb. ))^kmat.),
+                  c("phi.", "munb.", "kmat."), hessian = FALSE)
+      dl.dthetas =  matrix(0, n, M)  # M = 3*NOS; for all species
         for(spp. in 1:NOS) {
             index = (y[,spp.] == 0)
             if (!sum(index) || !sum(!index))
@@ -1472,8 +1494,8 @@ zinegbinomial.control <- function(save.weight=TRUE, ...)
                 cbind(dl.dphi, dl.dmunb, dl.dk)
         }
         w * dl.dthetas * dthetas.detas
-    }), list( .lphi = lphi, .lmunb = lmunb, .lk = lk,
-              .ephi = ephi, .emunb = emunb, .ek = ek ))),
+    }), list( .lphi = lphi, .lmunb = lmunb, .lsize = lsize,
+              .ephi = ephi, .emunb = emunb, .esize = esize ))),
     weight = eval(substitute(expression({
 
         wz = matrix(0, n, 3*(M-1))
@@ -1510,7 +1532,7 @@ zinegbinomial.control <- function(save.weight=TRUE, ...)
             }
             wz1 = if (intercept.only)
                 matrix(colMeans(run.varcov),
-                       nr=n, nc=ncol(run.varcov), byrow=TRUE) else run.varcov
+                       nr=n, nc=ncol(run.varcov), byrow = TRUE) else run.varcov
 
             wz1 = wz1 * dthetas.detas[,3*(spp. -1) + ind1$row] *
                         dthetas.detas[,3*(spp. -1) + ind1$col]
@@ -1520,8 +1542,8 @@ zinegbinomial.control <- function(save.weight=TRUE, ...)
                     cptr = iam((spp.-1)*3+jay, (spp.-1)*3+kay, M = M)
                     wz[,cptr] = wz1[,iam(jay, kay, M = 3)]
                 }
-        }
-        w * wz
+        } # End of for(spp.) loop
+        c(w) * wz
     }), list( .lphi = lphi, .ephi = ephi, .nsimEIM = nsimEIM ))))
 }
 
@@ -1532,7 +1554,7 @@ zinegbinomial.control <- function(save.weight=TRUE, ...)
 
  zipoissonff <- function(llambda = "loge", lprobp = "logit",
                          elambda = list(), eprobp = list(),
-                         ilambda = NULL,   iprobp = NULL, method.init = 1,
+                         ilambda = NULL,   iprobp = NULL, imethod = 1,
                          shrinkage.init = 0.8, zero = -2)
 {
   lprobp. <- lprobp
@@ -1554,9 +1576,9 @@ zinegbinomial.control <- function(save.weight=TRUE, ...)
   if (!is.list(elambda)) elambda <- list()
   if (!is.list(eprobp.)) eprobp. <- list()
 
-  if (!is.Numeric(method.init, allow = 1, integ = TRUE, posit = TRUE) ||
-    method.init > 2)
-    stop("argument 'method.init' must be 1 or 2")
+  if (!is.Numeric(imethod, allow = 1, integ = TRUE, posit = TRUE) ||
+    imethod > 2)
+    stop("argument 'imethod' must be 1 or 2")
   if (!is.Numeric(shrinkage.init, allow = 1) ||
     shrinkage.init < 0 ||
     shrinkage.init > 1)
@@ -1590,12 +1612,12 @@ zinegbinomial.control <- function(save.weight=TRUE, ...)
         stop("responses must be integer-valued")
 
     mynames1 <- paste("lambda", if (ncoly > 1) 1:ncoly else "", sep = "")
-    mynames2 <- paste("probp",    if (ncoly > 1) 1:ncoly else "", sep = "")
+    mynames2 <- paste("probp",  if (ncoly > 1) 1:ncoly else "", sep = "")
     predictors.names <-
         c(namesof(mynames1, .llambda, earg = .elambda, tag = FALSE),
           namesof(mynames2, .lprobp., earg = .eprobp., tag = FALSE))
-    predictors.names <- predictors.names[interleave.VGAM(M, M = ncoly)]
 
+    predictors.names <- predictors.names[interleave.VGAM(M, M = Musual)]
 
       if (!length(etastart)) {
 
@@ -1616,7 +1638,7 @@ zinegbinomial.control <- function(save.weight=TRUE, ...)
           if ( length(mustart)) {
               mustart <- matrix(mustart, n, ncoly) # Make sure right size
               Lambda.init <- mustart / (1 - Phi.init)
-          } else if ( .method.init == 2) {
+          } else if ( .imethod == 2) {
               mymean <- weighted.mean(yjay[yjay > 0], w[yjay > 0]) + 1/16
               Lambda.init <- (1 - .sinit) * (yjay + 1/8) + .sinit * mymean
           } else {
@@ -1625,14 +1647,14 @@ zinegbinomial.control <- function(save.weight=TRUE, ...)
           }
 
           zipois.Loglikfun <- function(phival, y, x, w, extraargs) {
-              sum(w * dzipois(x=y, phi = phival,
+              sum(w * dzipois(x = y, phi = phival,
                               lambda = extraargs$lambda,
                               log = TRUE))
           }
           phi.grid <- seq(0.02, 0.98, len = 21)
           Phimat.init <- getMaxMin(phi.grid,
-                                   objfun=zipois.Loglikfun,
-                                   y=y, x=x, w=w,
+                                   objfun = zipois.Loglikfun,
+                                   y = y, x = x, w = w,
                                    extraargs = list(lambda = Lambda.init))
           if (length(mustart)) {
             Lambda.init <- Lambda.init / (1 - Phimat.init)
@@ -1644,8 +1666,8 @@ zinegbinomial.control <- function(save.weight=TRUE, ...)
           mat2[, jay] <- Phimat.init
       }
 
-      etastart <- cbind(theta2eta(mat1, .llambda, .elambda ),
-                        theta2eta(mat2, .lprobp., .eprobp. ))
+      etastart <- cbind(theta2eta(    mat1, .llambda, .elambda ),
+                        theta2eta(1 - mat2, .lprobp., .eprobp. ))
       etastart <- etastart[, interleave.VGAM(ncol(etastart), M = Musual)]
 
       mustart <- NULL  # Since etastart has been computed.
@@ -1653,7 +1675,7 @@ zinegbinomial.control <- function(save.weight=TRUE, ...)
   }), list( .lprobp. = lprobp., .llambda = llambda,
             .eprobp. = eprobp., .elambda = elambda,
             .iprobp. = iprobp., .ilambda = ilambda,
-            .method.init = method.init, .sinit = shrinkage.init ))),
+            .imethod = imethod, .sinit = shrinkage.init ))),
   inverse = eval(substitute(function(eta, extra = NULL) {
       ncoly <- extra$ncoly
       lambda <- eta2theta(eta[, 2*(1:ncoly) - 1], .llambda, earg = .elambda )
@@ -1679,12 +1701,12 @@ zinegbinomial.control <- function(save.weight=TRUE, ...)
     }
 
     misc$Musual <- Musual
-    misc$method.init <- .method.init
+    misc$imethod <- .imethod
 
         misc$prob0 <- (1 - probp.) + probp. * exp(-lambda) # P(Y=0)
   }), list( .lprobp. = lprobp., .llambda = llambda,
             .eprobp. = eprobp., .elambda = elambda,
-            .method.init = method.init ))),
+            .imethod = imethod ))),
   loglikelihood = eval(substitute( 
     function(mu, y, w, residuals = FALSE, eta, extra = NULL) {
     smallno <- 100 * .Machine$double.eps
@@ -1697,7 +1719,7 @@ zinegbinomial.control <- function(save.weight=TRUE, ...)
 
     if (residuals) stop("loglikelihood residuals not ",
                         "implemented yet") else {
-      sum(w * dzipois(x=y, phi = 1 - probp., lambda = lambda, log = TRUE))
+      sum(w * dzipois(x = y, phi = 1 - probp., lambda = lambda, log = TRUE))
     }
   }, list( .lprobp. = lprobp., .llambda = llambda,
            .eprobp. = eprobp., .elambda = elambda ))),
@@ -1722,8 +1744,8 @@ zinegbinomial.control <- function(save.weight=TRUE, ...)
     dl.dprobp. <- expm1(-lambda) / tmp8
     dl.dprobp.[!ind0] <- 1 / probp.[!ind0]
 
-    ans <- w * cbind(dl.dlambda * dlambda.deta,
-                     dl.dprobp. * dprobp..deta)
+    ans <- c(w) * cbind(dl.dlambda * dlambda.deta,
+                        dl.dprobp. * dprobp..deta)
     if (FALSE && .llambda == "loge" &&
        (any(lambda[!ind0] < .Machine$double.eps))) {
         ans[!ind0, 2] <- w[!ind0] * (y[!ind0] - lambda[!ind0])
@@ -1765,7 +1787,7 @@ zinegbinomial.control <- function(save.weight=TRUE, ...)
       }
     }
 
-    w * wz
+    c(w) * wz
   }), list( .llambda = llambda ))))
 }
 
diff --git a/R/links.q b/R/links.q
index 93867f4..e456aba 100644
--- a/R/links.q
+++ b/R/links.q
@@ -5,7 +5,7 @@
 
 
 
-  ToString = function(x) paste(x, collapse = ",")
+  ToString = function(x) paste(x, collapse = ", ")
 
 
 
@@ -17,40 +17,41 @@
 
 
 
-TypicalVGAMfamilyFunction <- function(lsigma = "loge", esigma = list(),
-                                      isigma = NULL, parallel = TRUE,
-                                      shrinkage.init = 0.95,
-                                      nointercept = NULL, method.init = 1,
-                                      prob.x = c(0.15, 0.85),
-                                      oim = FALSE,
-                                      nsimEIM = 100, zero = NULL) {
-    NULL
+ TypicalVGAMfamilyFunction <- function(lsigma = "loge", esigma = list(),
+                                       isigma = NULL, parallel = TRUE,
+                                       shrinkage.init = 0.95,
+                                       nointercept = NULL, imethod = 1,
+                                       prob.x = c(0.15, 0.85),
+                                       mv = FALSE, oim = FALSE,
+                                       nsimEIM = 100, zero = NULL) {
+  NULL
 }
 
 TypicalVGAMlinkFunction <- function(theta,
-    earg = list(), inverse=FALSE, deriv=0, short=TRUE, tag=FALSE) {
+    earg = list(), inverse = FALSE, deriv = 0, short = TRUE, tag = FALSE) {
     NULL
 }
 
 
 
-namesof <- function(theta,
-                    link,
-                    earg = list(),
-                    tag=FALSE,
-                    short=TRUE)
-{
+ namesof <- function(theta,
+                     link,
+                     earg = list(),
+                     tag = FALSE,
+                     short = TRUE) {
 
 
         string <- paste(link,
-            "(theta=theta, earg=earg, short=short, tag=tag)", sep = "")
+            "(theta = theta, earg = earg, short=short, tag=tag)", sep = "")
         calls <- parse(text=string)[[1]]
         ans <- eval(calls) 
         return(ans)
 }
 
-theta2eta <- function(theta, link, earg = list()) {
-    string <- paste(link, "(theta=theta, earg=earg)", sep = "")
+
+
+ theta2eta <- function(theta, link, earg = list()) {
+    string <- paste(link, "(theta = theta, earg = earg)", sep = "")
     calls <- parse(text=string)[[1]]
     eval(calls) 
 }
@@ -58,15 +59,15 @@ theta2eta <- function(theta, link, earg = list()) {
 
 
 
-eta2theta <- function(theta, link = "identity", earg = list()) {
-    if (is.null(link))
-        link <- "identity"
+ eta2theta <- function(theta, link = "identity", earg = list()) {
+     if (is.null(link))
+         link <- "identity"
 
 
 
     llink <- length(link)
     if (llink == 1) {
-        string <- paste(link, "(theta=theta, earg=earg, inverse=TRUE)", sep = "")
+        string <- paste(link, "(theta = theta, earg = earg, inverse = TRUE)", sep = "")
         calls <- parse(text=string)[[1]]
         return(eval(calls))
     } else 
@@ -80,7 +81,7 @@ eta2theta <- function(theta, link = "identity", earg = list()) {
                 use.earg = if (is.list(earg) && length(earg)==llink &&
                               is.list(earg[[iii]])) earg[[iii]] else earg
                 string = paste(link[iii],
-                           "(theta=theta[,iii], earg=use.earg, inverse=TRUE)",
+                           "(theta = theta[,iii], earg=use.earg, inverse = TRUE)",
                            sep = "")
                 calls <- parse(text=string)[[1]]
                 ans <- cbind(ans, eval(calls))
@@ -90,12 +91,12 @@ eta2theta <- function(theta, link = "identity", earg = list()) {
                 theta = rep(theta, len=llink)
 
             if (length(theta) != llink)
-                stop("length of theta and link don't match") 
+                stop("length of 'theta' and 'link' do not match") 
 
             ans <- NULL
             for(iii in 1:llink) {
                 string = paste(link[iii],
-                               "(theta=theta[iii], earg=earg, inverse=TRUE)",
+                               "(theta = theta[iii], earg = earg, inverse = TRUE)",
                                sep = "")
                 calls <- parse(text=string)[[1]]
                 ans <- c(ans, eval(calls))
@@ -103,23 +104,22 @@ eta2theta <- function(theta, link = "identity", earg = list()) {
         }
         return(ans)
     } else 
-        stop("length(link)==0 not allowed") 
+        stop("length(link) == 0 not allowed") 
 }
 
 
 
-dtheta.deta <- function(theta, link, earg = list()) {
+ dtheta.deta <- function(theta, link, earg = list()) {
 
-    string <- paste(link, "(theta=theta, earg=earg, deriv=1)", sep = "")
+    string <- paste(link, "(theta = theta, earg = earg, deriv = 1)", sep = "")
     calls <- parse(text=string)[[1]]
     eval(calls) 
 }
 
 
-d2theta.deta2 <- function(theta, link, earg = list())
-{
+ d2theta.deta2 <- function(theta, link, earg = list()) {
 
-    string <- paste(link, "(theta=theta, earg=earg, deriv=2)", sep = "")
+    string <- paste(link, "(theta = theta, earg = earg, deriv = 2)", sep = "")
     calls <- parse(text=string)[[1]]
     eval(calls) 
 }
@@ -136,13 +136,13 @@ d2theta.deta2 <- function(theta, link, earg = list())
                "golf", "polf", "nbolf", "nbolf2")
 
 
-loglog <- function(theta, earg = list(), inverse=FALSE, deriv=0,
-                   short=TRUE, tag=FALSE)
+ loglog <- function(theta, earg = list(), inverse = FALSE, deriv = 0,
+                    short = TRUE, tag = FALSE)
 {
     if (is.character(theta)) {
         string <- if (short) 
-            paste("loglog(",theta,")", sep = "") else
-            paste("log(log(",theta,"))", sep = "")
+            paste("loglog(", theta, ")", sep = "") else
+            paste("log(log(", theta, "))", sep = "")
         if (tag) 
             string <- paste("Log-Log:", string) 
         return(string)
@@ -151,7 +151,7 @@ loglog <- function(theta, earg = list(), inverse=FALSE, deriv=0,
         theta[theta <= 1.0] <- earg$bval
     if (inverse) {
         if (deriv > 0) {
-            1 / Recall(theta=theta, earg=earg, inverse=FALSE, deriv=deriv)
+            1 / Recall(theta = theta, earg = earg, inverse = FALSE, deriv = deriv)
         } else {
             exp(exp(theta))
         }
@@ -169,13 +169,13 @@ loglog <- function(theta, earg = list(), inverse=FALSE, deriv=0,
 
 
 
-cloglog <- function(theta, earg = list(), inverse=FALSE, deriv=0,
-                    short=TRUE, tag=FALSE)
+ cloglog <- function(theta, earg = list(), inverse = FALSE, deriv = 0,
+                     short = TRUE, tag = FALSE)
 {
     if (is.character(theta)) {
         string <- if (short) 
-            paste("cloglog(",theta,")", sep = "") else
-            paste("log(-log(1-",theta,"))", sep = "")
+            paste("cloglog(", theta, ")", sep = "") else
+            paste("log(-log(1-", theta, "))", sep = "")
         if (tag) 
             string <- paste("Complementary log-log:", string) 
         return(string)
@@ -186,7 +186,7 @@ cloglog <- function(theta, earg = list(), inverse=FALSE, deriv=0,
     }
     if (inverse) {
         if (deriv > 0) {
-            1 / Recall(theta=theta, earg=earg, inverse=FALSE, deriv=deriv)
+            1 / Recall(theta = theta, earg = earg, inverse = FALSE, deriv = deriv)
         } else {
             junk <- exp(theta)
             -expm1(-junk)
@@ -205,12 +205,12 @@ cloglog <- function(theta, earg = list(), inverse=FALSE, deriv=0,
 
 
 
-probit <- function(theta, earg = list(), inverse=FALSE, deriv=0,
-                   short=TRUE, tag=FALSE)
+ probit <- function(theta, earg = list(), inverse = FALSE, deriv = 0,
+                    short = TRUE, tag = FALSE)
 {
     if (is.character(theta)) {
         string <- if (short) 
-            paste("probit(",theta,")", sep = "") else
+            paste("probit(", theta, ")", sep = "") else
             paste("qnorm(", theta, ")", sep = "")
         if (tag) 
             string <- paste("Probit:", string) 
@@ -222,7 +222,7 @@ probit <- function(theta, earg = list(), inverse=FALSE, deriv=0,
     }
     if (inverse) {
         if (deriv > 0) {
-            1/Recall(theta=theta, earg=earg, inverse=FALSE, deriv=deriv)
+            1/Recall(theta = theta, earg = earg, inverse = FALSE, deriv = deriv)
         } else {
             ans <- pnorm(theta)
             if (is.matrix(theta))
@@ -251,7 +251,8 @@ probit <- function(theta, earg = list(), inverse=FALSE, deriv=0,
                 dim(ans) <- dim(theta)
                 ans
             } else {
-                warning("can only handle vectors and matrices; converting to vector")
+                warning("can only handle vectors and matrices;",
+                        " converting to vector")
                 ans
             }
         })
@@ -265,12 +266,12 @@ probit <- function(theta, earg = list(), inverse=FALSE, deriv=0,
 
 
 
-loge <- function(theta, earg = list(), inverse=FALSE, deriv=0,
-                 short=TRUE, tag=FALSE)
+ loge <- function(theta, earg = list(), inverse = FALSE, deriv = 0,
+                  short = TRUE, tag = FALSE)
 {
     if (is.character(theta)) {
         string <- if (short) 
-            paste("log(",theta,")", sep = "") else
+            paste("log(", theta, ")", sep = "") else
             paste("log(", theta, ")", sep = "")
         if (tag) 
             string <- paste("Log:", string) 
@@ -280,7 +281,7 @@ loge <- function(theta, earg = list(), inverse=FALSE, deriv=0,
         theta[theta <= 0.0] <- earg$bval
     if (inverse) {
         if (deriv > 0) {
-            1/Recall(theta=theta, earg=earg, inverse=FALSE, deriv=deriv)
+            1/Recall(theta = theta, earg = earg, inverse = FALSE, deriv = deriv)
         } else {
             exp(theta)
         }
@@ -295,18 +296,17 @@ loge <- function(theta, earg = list(), inverse=FALSE, deriv=0,
 
 
 
-identity <- function(theta, earg = list(), inverse=FALSE, deriv=0,
-                     short=TRUE, tag=FALSE)
-{
+ identity <- function(theta, earg = list(), inverse = FALSE, deriv = 0,
+                      short = TRUE, tag = FALSE) {
     if (is.character(theta)) {
-        string <- theta 
-        if (tag) 
-            string <- paste("Identity:", string) 
+        string <- theta
+        if (tag)
+            string <- paste("Identity:", string)
         return(string)
     }
     if (inverse) {
         if (deriv > 0) {
-            1 / Recall(theta=theta, earg=earg, inverse=FALSE, deriv=deriv)
+            1 / Recall(theta = theta, earg = earg, inverse = FALSE, deriv = deriv)
         } else {
             theta
         }
@@ -318,8 +318,8 @@ identity <- function(theta, earg = list(), inverse=FALSE, deriv=0,
     }
 }
 
-nidentity <- function(theta, earg = list(), inverse=FALSE, deriv=0,
-                     short=TRUE, tag=FALSE)
+ nidentity <- function(theta, earg = list(), inverse = FALSE, deriv = 0,
+                      short = TRUE, tag = FALSE)
 {
     if (is.character(theta)) {
         string <- paste("-", theta, sep = "")
@@ -329,7 +329,7 @@ nidentity <- function(theta, earg = list(), inverse=FALSE, deriv=0,
     }
     if (inverse) {
         if (deriv > 0) {
-            1 / Recall(theta=theta, earg=earg, inverse=FALSE, deriv=deriv)
+            1 / Recall(theta = theta, earg = earg, inverse = FALSE, deriv = deriv)
         } else {
             -theta
         }
@@ -342,11 +342,11 @@ nidentity <- function(theta, earg = list(), inverse=FALSE, deriv=0,
 }
 
 
-reciprocal <- function(theta, earg = list(), inverse.arg=FALSE, deriv=0,
-                     short=TRUE, tag=FALSE)
+ reciprocal <- function(theta, earg = list(), inverse.arg = FALSE, deriv = 0,
+                      short = TRUE, tag = FALSE)
 {
     if (is.character(theta)) {
-        string <- paste("1/",theta, sep = "")
+        string <- paste("1/", theta, sep = "")
         if (tag) 
             string <- paste("Reciprocal:", string) 
         return(string)
@@ -355,7 +355,7 @@ reciprocal <- function(theta, earg = list(), inverse.arg=FALSE, deriv=0,
         theta[theta == 0.0] <- earg$bval
     if (inverse.arg) {
         if (deriv > 0) {
-            1 / Recall(theta=theta, earg=earg, inverse.arg=FALSE, deriv=deriv)
+            1 / Recall(theta = theta, earg = earg, inverse.arg = FALSE, deriv = deriv)
         } else {
             1/theta
         }
@@ -368,12 +368,11 @@ reciprocal <- function(theta, earg = list(), inverse.arg=FALSE, deriv=0,
 }
 
 
-nloge <- function(theta, earg = list(), inverse=FALSE, deriv=0,
-                 short=TRUE, tag=FALSE)
-{
+ nloge <- function(theta, earg = list(), inverse = FALSE, deriv = 0,
+                 short = TRUE, tag = FALSE) {
     if (is.character(theta)) {
         string <- if (short) 
-            paste("-log(",theta,")", sep = "") else
+            paste("-log(", theta, ")", sep = "") else
             paste("-log(", theta, ")", sep = "")
         if (tag) 
             string <- paste("Negative log:", string) 
@@ -383,7 +382,7 @@ nloge <- function(theta, earg = list(), inverse=FALSE, deriv=0,
         theta[theta <= 0.0] <- earg$bval
     if (inverse) {
         if (deriv > 0) {
-            1/Recall(theta=theta, earg=earg, inverse=FALSE, deriv=deriv)
+            1/Recall(theta = theta, earg = earg, inverse = FALSE, deriv = deriv)
         } else {
             exp(-theta)
         }
@@ -397,11 +396,11 @@ nloge <- function(theta, earg = list(), inverse=FALSE, deriv=0,
 
 
 
-nreciprocal <- function(theta, earg = list(), inverse.arg=FALSE, deriv=0,
-                     short=TRUE, tag=FALSE)
+ nreciprocal <- function(theta, earg = list(), inverse.arg = FALSE, deriv = 0,
+                         short = TRUE, tag = FALSE)
 {
     if (is.character(theta)) {
-        string <- paste("-1/",theta, sep = "")
+        string <- paste("-1/", theta, sep = "")
         if (tag) 
             string <- paste("Negative reciprocal:", string) 
         return(string)
@@ -410,7 +409,7 @@ nreciprocal <- function(theta, earg = list(), inverse.arg=FALSE, deriv=0,
         theta[theta == 0.0] <- earg$bval
     if (inverse.arg) {
         if (deriv > 0) {
-            1 / nreciprocal(theta, earg=earg, inverse.arg=FALSE, deriv)
+            1 / nreciprocal(theta, earg = earg, inverse.arg = FALSE, deriv)
         } else {
             -1/theta
         }
@@ -423,19 +422,19 @@ nreciprocal <- function(theta, earg = list(), inverse.arg=FALSE, deriv=0,
 }
 
 
-natural.ig <- function(theta, earg = list(), inverse=FALSE, deriv=0,
-                       short=TRUE, tag=FALSE)
+ natural.ig <- function(theta, earg = list(), inverse = FALSE, deriv = 0,
+                        short = TRUE, tag = FALSE)
 {
 
     if (is.character(theta)) {
-        string <- paste("-1/",theta, sep = "")
+        string <- paste("-1/", theta, sep = "")
         if (tag) 
             string <- paste("Negative inverse:", string) 
         return(string)
     }
     if (inverse) {
         if (deriv > 0) {
-            1 / nreciprocal(theta, earg=earg, inverse=FALSE, deriv)
+            1 / nreciprocal(theta, earg = earg, inverse = FALSE, deriv)
         } else {
             1/ sqrt(-2*theta)
         }
@@ -451,12 +450,12 @@ natural.ig <- function(theta, earg = list(), inverse=FALSE, deriv=0,
 
 
 
-rhobit <- function(theta, earg = list(), inverse=FALSE, deriv=0,
-                   short=TRUE, tag=FALSE)
+ rhobit <- function(theta, earg = list(), inverse = FALSE, deriv = 0,
+                    short = TRUE, tag = FALSE)
 {
     if (is.character(theta)) {
         string <- if (short) 
-            paste("rhobit(",theta,")", sep = "") else
+            paste("rhobit(", theta, ")", sep = "") else
             paste("log((1+", theta, ")/(1-", theta, "))", sep = "")
         if (tag) 
             string <- paste("Rhobit:", string) 
@@ -472,7 +471,7 @@ rhobit <- function(theta, earg = list(), inverse=FALSE, deriv=0,
 
     if (inverse) {
         if (deriv > 0) {
-            1/Recall(theta=theta, earg=earg, inverse=FALSE, deriv=deriv)
+            1/Recall(theta = theta, earg = earg, inverse = FALSE, deriv = deriv)
         } else {
             junk <- exp(theta)
             expm1(theta) / (junk+1.0)
@@ -487,12 +486,12 @@ rhobit <- function(theta, earg = list(), inverse=FALSE, deriv=0,
 
 
 
-fisherz <- function(theta, earg = list(), inverse=FALSE, deriv=0,
-                   short=TRUE, tag=FALSE)
+ fisherz <- function(theta, earg = list(), inverse = FALSE, deriv = 0,
+                     short = TRUE, tag = FALSE)
 {
     if (is.character(theta)) {
         string <- if (short) 
-            paste("fisherz(",theta,")", sep = "") else
+            paste("fisherz(", theta, ")", sep = "") else
             paste("(1/2)log((1+", theta, ")/(1-", theta, "))", sep = "")
         if (tag) 
             string <- paste("Fisher's Z transformation:", string) 
@@ -508,7 +507,7 @@ fisherz <- function(theta, earg = list(), inverse=FALSE, deriv=0,
 
     if (inverse) {
         if (deriv > 0) {
-            1/Recall(theta=theta, earg=earg, inverse=FALSE, deriv=deriv)
+            1/Recall(theta = theta, earg = earg, inverse = FALSE, deriv = deriv)
         } else {
             junk <- exp(2*theta)
             expm1(2*theta) / (junk+1.0)
@@ -524,26 +523,25 @@ fisherz <- function(theta, earg = list(), inverse=FALSE, deriv=0,
 
 
 
-fsqrt <- function(theta, earg = list(min=0, max=1, mux=sqrt(2)),
-                  inverse=FALSE, deriv=0, short=TRUE, tag=FALSE)
-{
-    min=0; max=1; mux=sqrt(2)
+fsqrt <- function(theta, earg = list(min = 0, max = 1, mux=sqrt(2)),
+                  inverse = FALSE, deriv = 0, short = TRUE, tag = FALSE) {
+    min = 0; max = 1; mux=sqrt(2)
     if (!is.list(earg)) stop("earg must be a list")
     if (is.Numeric(earg$min)) min = earg$min
     if (is.Numeric(earg$max)) max = earg$max
     if (is.Numeric(earg$mux)) mux = earg$mux
-    if (!is.Numeric(min,allow=1)) stop("bad input for 'min' component")
-    if (!is.Numeric(max,allow=1)) stop("bad input for 'max' component")
-    if (!is.Numeric(mux,allow=1,posit=TRUE)) stop("bad input for 'mux' component")
+    if (!is.Numeric(min,allow = 1)) stop("bad input for 'min' component")
+    if (!is.Numeric(max,allow = 1)) stop("bad input for 'max' component")
+    if (!is.Numeric(mux,allow = 1,posit = TRUE)) stop("bad input for 'mux' component")
     if (min >= max) stop("'min' >= 'max' is not allowed")
 
     if (is.character(theta)) {
         string <- if (short) 
-            paste("fsqrt(",theta,")", sep = "") else {
+            paste("fsqrt(", theta, ")", sep = "") else {
             if (abs(mux-sqrt(2)) < 1.0e-10)
-                paste("sqrt(2*",theta,") - sqrt(2*(1-",theta,"))", sep = "") else
+                paste("sqrt(2*", theta, ") - sqrt(2*(1-", theta, "))", sep = "") else
             paste(as.character(mux),
-            " * (sqrt(",theta,"-",min,") - sqrt(",max,"-",theta,"))", sep = "")
+            " * (sqrt(", theta, "-",min, ") - sqrt(",max, "-", theta, "))", sep = "")
         }
         if (tag) 
             string <- paste("Folded Square Root:", string) 
@@ -552,7 +550,7 @@ fsqrt <- function(theta, earg = list(min=0, max=1, mux=sqrt(2)),
 
     if (inverse) {
         if (deriv > 0) {
-            1/Recall(theta=theta, earg=earg, inverse=FALSE, deriv=deriv)
+            1/Recall(theta = theta, earg = earg, inverse = FALSE, deriv = deriv)
         } else {
             mid = (min + max) / 2
             boundary = mux * sqrt(max - min)
@@ -576,9 +574,8 @@ fsqrt <- function(theta, earg = list(min=0, max=1, mux=sqrt(2)),
 
 
 
-powl <- function(theta, earg = list(power=1), inverse=FALSE, deriv=0,
-                 short=TRUE, tag=FALSE)
-{
+ powl <- function(theta, earg = list(power = 1), inverse = FALSE, deriv = 0,
+                  short = TRUE, tag = FALSE) {
 
     if (!length(earg) || is.list(earg)) {
         exponent = if (length(earg$power)) earg$power else 1
@@ -590,7 +587,7 @@ powl <- function(theta, earg = list(power=1), inverse=FALSE, deriv=0,
 
     if (is.character(theta)) {
         string <- if (short) 
-            paste("powl(",theta,", earg = list(power = ", as.character(exponent),
+            paste("powl(", theta, ", earg = list(power = ", as.character(exponent),
                   "))", sep = "") else
             paste(theta, "^(", as.character(exponent), ")", sep = "")
         if (tag) 
@@ -599,7 +596,7 @@ powl <- function(theta, earg = list(power=1), inverse=FALSE, deriv=0,
     }
     if (inverse) {
         if (deriv > 0) {
-            1/Recall(theta=theta, earg=earg, inverse=FALSE, deriv=deriv)
+            1/Recall(theta = theta, earg = earg, inverse = FALSE, deriv = deriv)
         } else {
             theta^(1/exponent)
         }
@@ -618,9 +615,8 @@ powl <- function(theta, earg = list(power=1), inverse=FALSE, deriv=0,
 }
 
 
-elogit <- function(theta, earg = list(min=0, max=1), inverse=FALSE, deriv=0,
-                   short=TRUE, tag=FALSE)
-{
+ elogit <- function(theta, earg = list(min = 0, max = 1), inverse = FALSE, deriv = 0,
+                    short = TRUE, tag = FALSE) {
     if (!length(earg) || is.list(earg)) {
         A = if (length(earg$min)) earg$min else 0
         B = if (length(earg$max)) earg$max else 1
@@ -634,18 +630,18 @@ elogit <- function(theta, earg = list(min=0, max=1), inverse=FALSE, deriv=0,
     if (is.character(theta)) {
         string <- if (short) {
             if (A != 0 || B != 1)
-            paste("elogit(",theta,", earg = list(min = ",A,
-                  ", max = ",B,"))",sep = "") else
-            paste("elogit(",theta,")",sep = "")
+            paste("elogit(", theta, ", earg = list(min = ",A,
+                  ", max = ",B, "))",sep = "") else
+            paste("elogit(", theta, ")",sep = "")
             } else
-            paste("log((",theta,"-min)/(max-",theta,"))", sep = "")
+            paste("log((", theta, "-min)/(max-", theta, "))", sep = "")
         if (tag) 
             string <- paste("Extended logit:", string) 
         return(string)
     }
     if (inverse) {
         if (deriv > 0) {
-            1/Recall(theta=theta, earg=earg, inverse=FALSE, deriv=deriv)
+            1/Recall(theta = theta, earg = earg, inverse = FALSE, deriv = deriv)
         } else {
             junk <- if (is.R()) care.exp(theta) else care.exp(theta)
             (A + B*junk) / (1.0 + junk)
@@ -662,13 +658,12 @@ elogit <- function(theta, earg = list(min=0, max=1), inverse=FALSE, deriv=0,
 
 
 
- logit <- function(theta, earg = list(), inverse=FALSE, deriv=0,
-                   short=TRUE, tag=FALSE)
-{
+ logit <- function(theta, earg = list(), inverse = FALSE, deriv = 0,
+                   short = TRUE, tag = FALSE) {
     if (is.character(theta)) {
         string <- if (short) 
-            paste("logit(",theta,")", sep = "") else
-            paste("log(",theta,"/(1-",theta,"))", sep = "")
+            paste("logit(", theta, ")", sep = "") else
+            paste("log(", theta, "/(1-", theta, "))", sep = "")
         if (tag) 
             string <- paste("Logit:", string) 
         return(string)
@@ -679,7 +674,7 @@ elogit <- function(theta, earg = list(min=0, max=1), inverse=FALSE, deriv=0,
     }
     if (inverse) {
         if (deriv > 0) {
-            1/Recall(theta=theta, earg=earg, inverse=FALSE, deriv=deriv)
+            1/Recall(theta = theta, earg = earg, inverse = FALSE, deriv = deriv)
         } else {
             eta <- care.exp(theta)
             eta / (1.0 + eta)
@@ -697,13 +692,12 @@ elogit <- function(theta, earg = list(min=0, max=1), inverse=FALSE, deriv=0,
 }
 
 
-logc <- function(theta, earg = list(), inverse=FALSE, deriv=0,
-                 short=TRUE, tag=FALSE)
-{
+ logc <- function(theta, earg = list(), inverse = FALSE, deriv = 0,
+                  short = TRUE, tag = FALSE) {
     if (is.character(theta)) {
         string <- if (short) 
-            paste("logc(",theta,")", sep = "") else
-            paste("log(1-",theta,")", sep = "")
+            paste("logc(", theta, ")", sep = "") else
+            paste("log(1-", theta, ")", sep = "")
         if (tag) 
             string <- paste("Log Complementary:", string) 
         return(string)
@@ -715,7 +709,7 @@ logc <- function(theta, earg = list(), inverse=FALSE, deriv=0,
     }
     if (inverse) {
         if (deriv > 0) {
-            1 / Recall(theta=theta, earg=earg, inverse=FALSE, deriv=deriv)
+            1 / Recall(theta = theta, earg = earg, inverse = FALSE, deriv = deriv)
         } else {
             -expm1(theta)
         }
@@ -729,9 +723,8 @@ logc <- function(theta, earg = list(), inverse=FALSE, deriv=0,
 
 
 
-logoff <- function(theta, earg = list(offset=0), inverse=FALSE, deriv=0,
-                   short=TRUE, tag=FALSE)
-{
+ logoff <- function(theta, earg = list(offset = 0), inverse = FALSE, deriv = 0,
+                    short = TRUE, tag = FALSE) {
     if (!length(earg) || is.list(earg)) {
         offset = if (length(earg$offset)) earg$offset else 0
     } else {
@@ -743,8 +736,8 @@ logoff <- function(theta, earg = list(offset=0), inverse=FALSE, deriv=0,
 
     if (is.character(theta)) {
         string <- if (short) 
-            paste("logoff(",theta,
-                  ", list(offset = ",as.character(offset),"))", sep = "") else
+            paste("logoff(", theta,
+                  ", list(offset = ",as.character(offset), "))", sep = "") else
             paste("log(", as.character(offset), "+", theta, ")", sep = "")
         if (tag) 
             string <- paste("Log with offset:", string) 
@@ -752,7 +745,7 @@ logoff <- function(theta, earg = list(offset=0), inverse=FALSE, deriv=0,
     }
     if (inverse) {
         if (deriv > 0) {
-            1/Recall(theta=theta, earg=earg, inverse=FALSE, deriv=deriv)
+            1/Recall(theta = theta, earg = earg, inverse = FALSE, deriv = deriv)
         } else {
             exp(theta) - offset
         }
@@ -766,15 +759,15 @@ logoff <- function(theta, earg = list(offset=0), inverse=FALSE, deriv=0,
 
 
 if(FALSE)
-nlogoff <- function(theta, earg=0, inverse=FALSE, deriv=0,
-                   short=TRUE, tag=FALSE)
+nlogoff <- function(theta, earg = 0, inverse = FALSE, deriv = 0,
+                   short = TRUE, tag = FALSE)
 {
     offset = earg
     if (!is.Numeric(offset))
         stop("bad input for argument earg")
     if (is.character(theta)) {
         string <- if (short) 
-            paste("nlogoff(",theta,",",as.character(offset),")", sep = "") else
+            paste("nlogoff(", theta, ", ",as.character(offset), ")", sep = "") else
             paste("log(", as.character(offset), "-", theta, ")", sep = "")
         if (tag) 
             string <- paste("Negative-log with offset:", string) 
@@ -782,7 +775,7 @@ nlogoff <- function(theta, earg=0, inverse=FALSE, deriv=0,
     }
     if (inverse) {
         if (deriv > 0) {
-            1/Recall(theta=theta, earg=earg, inverse=FALSE, deriv=deriv)
+            1/Recall(theta = theta, earg = earg, inverse = FALSE, deriv = deriv)
         } else {
             offset - exp(theta)
         }
@@ -796,14 +789,14 @@ nlogoff <- function(theta, earg=0, inverse=FALSE, deriv=0,
 
 
 
-cauchit <- function(theta, earg = list(bvalue= .Machine$double.eps),
-                    inverse=FALSE, deriv=0,
-                    short=TRUE, tag=FALSE)
+ cauchit <- function(theta, earg = list(bvalue= .Machine$double.eps),
+                     inverse = FALSE, deriv = 0,
+                     short = TRUE, tag = FALSE)
 {
     if (is.character(theta)) {
         string <- if (short) 
-            paste("cauchit(",theta,")", sep = "") else
-            paste("tan(pi*(",theta,"-0.5))", sep = "")
+            paste("cauchit(", theta, ")", sep = "") else
+            paste("tan(pi*(", theta, "-0.5))", sep = "")
         if (tag) 
             string <- paste("Cauchit:", string) 
         return(string)
@@ -814,7 +807,7 @@ cauchit <- function(theta, earg = list(bvalue= .Machine$double.eps),
     }
     if (inverse) {
         if (deriv > 0) {
-            1/Recall(theta=theta, earg=earg, inverse=FALSE, deriv=deriv)
+            1/Recall(theta = theta, earg = earg, inverse = FALSE, deriv = deriv)
         } else {
             0.5 + atan(theta)/pi 
         }
@@ -828,8 +821,8 @@ cauchit <- function(theta, earg = list(bvalue= .Machine$double.eps),
 
 
 
-golf <- function(theta, earg = list(lambda=1), inverse=FALSE, deriv=0,
-                 short=TRUE, tag=FALSE)
+ golf <- function(theta, earg = list(lambda = 1), inverse = FALSE, deriv = 0,
+                  short = TRUE, tag = FALSE)
 {
 
 
@@ -842,17 +835,18 @@ golf <- function(theta, earg = list(lambda=1), inverse=FALSE, deriv=0,
         cutpoint = earg$cutpoint # Optional; if so then is a NULL
     } else
         stop("'earg' must be a list")
-    if (!is.Numeric(lambda, posit=TRUE))
+    if (!is.Numeric(lambda, posit = TRUE))
         stop('could not determine lambda or lambda has negative values')
     if (is.Numeric(cutpoint))
-        if (any(cutpoint < 0) || !is.Numeric(cutpoint, integer=TRUE))
-            warning("'cutpoint' should contain non-negative integer values")
+      if (any(cutpoint < 0) || !is.Numeric(cutpoint, integer = TRUE))
+        warning("argument 'cutpoint' should contain ",
+                "non-negative integer values")
 
     if (is.character(theta)) {
         string <- if (short) {
             lenl = length(lambda) > 1
             lenc = length(cutpoint) > 1
-            paste("golf(",theta,", earg = list(lambda = ",
+            paste("golf(", theta, ", earg = list(lambda = ",
                   if (lenl) "c(" else "",
                   ToString(lambda),
                   if (lenl) ")" else "",
@@ -864,10 +858,10 @@ golf <- function(theta, earg = list(lambda=1), inverse=FALSE, deriv=0,
             sep = "") else "",
                         "))", sep = "") } else {
             if (is.Numeric(cutpoint)) {
-                paste("-3*log(1-qnorm(",theta,")/(3*sqrt(lambda)))",
+                paste("-3*log(1-qnorm(", theta, ")/(3*sqrt(lambda)))",
                       " + log(cutpoint)", sep = "")
             } else {
-                paste("-3*log(1-qnorm(",theta,")/(3*sqrt(lambda)))", sep = "")
+                paste("-3*log(1-qnorm(", theta, ")/(3*sqrt(lambda)))", sep = "")
             }
         }
         if (tag) 
@@ -881,17 +875,17 @@ golf <- function(theta, earg = list(lambda=1), inverse=FALSE, deriv=0,
     if (ncol(thmat) > 1) {
         answer = thmat
         for(ii in 1:ncol(thmat))
-            answer[,ii] = Recall(theta=thmat[,ii],
+            answer[,ii] = Recall(theta = thmat[,ii],
                    earg = list(lambda=lambda[ii],
                    cutpoint = if (is.Numeric(cutpoint)) cutpoint[ii] else NULL),
-                   inverse=inverse, deriv=deriv)
+                   inverse=inverse, deriv = deriv)
         return(answer)
     }
 
     answer =
     if (inverse) {
         if (deriv > 0) {
-            1 / Recall(theta=theta, earg=earg, inverse=FALSE, deriv=deriv)
+            1 / Recall(theta = theta, earg = earg, inverse = FALSE, deriv = deriv)
         } else {
             if (is.Numeric(cutpoint)) {
                 pnorm((1-care.exp(-(theta-log(cutpoint))/3)) * 3 * sqrt(lambda))
@@ -903,14 +897,14 @@ golf <- function(theta, earg = list(lambda=1), inverse=FALSE, deriv=0,
         smallno = 1 * .Machine$double.eps
         Theta = theta
         Theta = pmin(Theta, 1 - smallno)  # Since theta == 1 is a possibility
-        Theta = pmax(Theta, smallno) # Since theta==0 is a possibility
+        Theta = pmax(Theta, smallno) # Since theta == 0 is a possibility
         Ql = qnorm(Theta)
         switch(deriv+1, {
             temp = Ql / (3*sqrt(lambda))
             temp = pmin(temp, 1.0 - smallno)  # 100 / .Machine$double.eps
             -3*log1p(-temp) + if (is.Numeric(cutpoint)) log(cutpoint) else 0},
             (1 - Ql / (3*sqrt(lambda))) * sqrt(lambda) * dnorm(Ql),
-            {  stop('cannot handle deriv=2') },
+            {  stop('cannot handle deriv = 2') },
             stop("'deriv' unmatched"))
     }
     if (!is.Numeric(answer)) stop("the answer contains some NAs")
@@ -918,28 +912,29 @@ golf <- function(theta, earg = list(lambda=1), inverse=FALSE, deriv=0,
 }
 
 
-polf <- function(theta, earg=stop("'earg' must be given"), 
-                 inverse=FALSE, deriv=0, short=TRUE, tag=FALSE)
+ polf <- function(theta, earg=stop("'earg' must be given"), 
+                  inverse = FALSE, deriv = 0, short = TRUE, tag = FALSE)
 {
     cutpoint = NULL
     if (is.Numeric(earg)) cutpoint = earg
     if (is.list(earg)) cutpoint = earg$cutpoint
     if (!is.Numeric(cutpoint))
-        stop('could not determine the cutpoint')
-    if (any(cutpoint < 0) || !is.Numeric(cutpoint, integer=TRUE))
-        warning("'cutpoint' should contain non-negative integer values")
+      stop('could not determine the cutpoint')
+    if (any(cutpoint < 0) || !is.Numeric(cutpoint, integer = TRUE))
+      warning("argument 'cutpoint' should",
+              " contain non-negative integer values")
 
 
     if (is.character(theta)) {
         string <- if (short) {
             lenc = length(cutpoint) > 1
-            paste("polf(",theta,", earg = list(cutpoint = ",
+            paste("polf(", theta, ", earg = list(cutpoint = ",
                   if (lenc) "c(" else "",
                   ToString(cutpoint),
                   if (lenc) ")" else "",
                   "))", sep = "") 
         } else
-            paste("2*log(0.5*qnorm(",theta,") + sqrt(cutpoint+7/8))", sep = "")
+            paste("2*log(0.5*qnorm(", theta, ") + sqrt(cutpoint+7/8))", sep = "")
         if (tag) 
             string <- paste("Poisson-ordinal link function:", string) 
         return(string)
@@ -951,38 +946,38 @@ polf <- function(theta, earg=stop("'earg' must be given"),
         answer = thmat
         cutpoint = rep(cutpoint, len=ncol(thmat)) # Reqd for the for loop
         for(ii in 1:ncol(thmat))
-            answer[,ii] = Recall(theta=thmat[,ii], earg=cutpoint[ii],
-                                 inverse=inverse, deriv=deriv)
+            answer[,ii] = Recall(theta = thmat[,ii], earg=cutpoint[ii],
+                                 inverse=inverse, deriv = deriv)
         return(answer)
     }
 
     answer =
     if (inverse) {
         if (deriv > 0) {
-            1 / Recall(theta=theta, earg=earg, inverse=FALSE, deriv=deriv)
+            1 / Recall(theta = theta, earg = earg, inverse = FALSE, deriv = deriv)
         } else {
             if (cutpoint == 0) {
-                cloglog(theta=theta, earg=earg, inverse=inverse, deriv=deriv)
+                cloglog(theta = theta, earg = earg, inverse=inverse, deriv = deriv)
             } else {
                 pnorm(2 * exp(theta/2) - 2 * sqrt(cutpoint + 7/8))
             }
         }
     } else {
         if (cutpoint == 0) {
-            cloglog(theta=theta, earg=earg, inverse=inverse, deriv=deriv)
+            cloglog(theta = theta, earg = earg, inverse=inverse, deriv = deriv)
         } else {
             smallno = 1 * .Machine$double.eps
             SMALLNO = 1 * .Machine$double.xmin
             Theta = theta
             Theta = pmin(Theta, 1 - smallno)  # Since theta == 1 is a possibility
-            Theta = pmax(Theta, smallno) # Since theta==0 is a possibility
+            Theta = pmax(Theta, smallno) # Since theta == 0 is a possibility
             Ql = qnorm(Theta)
             switch(deriv+1, {
             temp = 0.5 * Ql + sqrt(cutpoint + 7/8)
             temp = pmax(temp, SMALLNO)
             2 * log(temp)},
             (Ql/2 + sqrt(cutpoint + 7/8)) * dnorm(Ql),
-            {  stop('cannot handle deriv=2') },
+            {  stop('cannot handle deriv = 2') },
             stop("'deriv' unmatched"))
         }
     }
@@ -991,27 +986,27 @@ polf <- function(theta, earg=stop("'earg' must be given"),
 }
 
 
-nbolf <- function(theta, earg=stop("'earg' must be given"), 
-                  inverse=FALSE, deriv=0, short=TRUE, tag=FALSE)
-{
+ nbolf <- function(theta, earg=stop("'earg' must be given"), 
+                  inverse = FALSE, deriv = 0, short = TRUE, tag = FALSE) {
 
     cutpoint = kay = NULL
     if (is.list(earg)) {
         cutpoint = earg$cutpoint
         kay = earg$k
     }
-    if (!is.Numeric(kay, positive=TRUE))
-        stop("could not determine 'k' or it is not positive-valued")
+    if (!is.Numeric(kay, positive = TRUE))
+      stop("could not determine 'k' or it is not positive-valued")
     if (!is.Numeric(cutpoint))
-        stop("could not determine the cutpoint")
-    if (any(cutpoint < 0) || !is.Numeric(cutpoint, integer=TRUE))
-        warning("'cutpoint' should contain non-negative integer values")
+      stop("could not determine the cutpoint")
+    if (any(cutpoint < 0) || !is.Numeric(cutpoint, integer = TRUE))
+      warning("argument 'cutpoint' should",
+              " contain non-negative integer values")
 
     if (is.character(theta)) {
         string <- if (short) {
             lenc = length(cutpoint) > 1
             lenk = length(kay) > 1
-            paste("nbolf(",theta,", earg = list(cutpoint = ",
+            paste("nbolf(", theta, ", earg = list(cutpoint = ",
                   if (lenc) "c(" else "",
                   ToString(cutpoint),
                   if (lenc) ")" else "",
@@ -1021,7 +1016,7 @@ nbolf <- function(theta, earg=stop("'earg' must be given"),
                   if (lenk) ")" else "",
                   "))", sep = "")
         } else
-            paste("2*log(sqrt(k) * sinh(qnorm(",theta,")/(2*sqrt(k)) + ",
+            paste("2*log(sqrt(k) * sinh(qnorm(", theta, ")/(2*sqrt(k)) + ",
                   "asinh(sqrt(cutpoint/k))))", sep = "")
         if (tag) 
             string <- paste("Negative binomial-ordinal link function:", string)
@@ -1034,16 +1029,16 @@ nbolf <- function(theta, earg=stop("'earg' must be given"),
     if (ncol(thmat) > 1) {
         answer = thmat
         for(ii in 1:ncol(thmat))
-            answer[,ii] = Recall(theta=thmat[,ii],
-                                 earg = list(cutpoint=cutpoint[ii], k=kay[ii]),
-                                 inverse=inverse, deriv=deriv)
+            answer[,ii] = Recall(theta = thmat[,ii],
+                                 earg = list(cutpoint = cutpoint[ii], k = kay[ii]),
+                                 inverse=inverse, deriv = deriv)
         return(answer)
     }
 
     answer =
     if (inverse) {
         if (deriv > 0) {
-            1 / Recall(theta=theta, earg=earg, inverse=FALSE, deriv=deriv)
+            1 / Recall(theta = theta, earg = earg, inverse = FALSE, deriv = deriv)
         } else {
             if (cutpoint == 0) {
                 1.0 - (kay / (kay + care.exp(theta)))^kay
@@ -1057,14 +1052,14 @@ nbolf <- function(theta, earg=stop("'earg' must be given"),
         SMALLNO = 1 * .Machine$double.xmin
         Theta = theta
         Theta = pmin(Theta, 1 - smallno)  # Since theta == 1 is a possibility
-        Theta = pmax(Theta, smallno) # Since theta==0 is a possibility
+        Theta = pmax(Theta, smallno) # Since theta == 0 is a possibility
         if (cutpoint == 0) {
             switch(deriv+1, {
             temp = (1 - Theta)^(-1/kay) - 1
             temp = pmax(temp, SMALLNO)
             log(kay) + log(temp)},
             (kay / (1 - Theta)^(1/kay) - kay) * (1 - Theta)^(kay+1/kay),
-            {  stop('cannot handle deriv=2') },
+            {  stop('cannot handle deriv = 2') },
             stop("'deriv' unmatched"))
         } else {
             Ql = qnorm(Theta)
@@ -1075,7 +1070,7 @@ nbolf <- function(theta, earg=stop("'earg' must be given"),
                 2 * log(temp)}, {
                 arg1 = (Ql/(2*sqrt(kay)) + asinh(sqrt(cutpoint/kay)))
                 sqrt(kay) * tanh(arg1) * dnorm(Ql) },
-                {  stop('cannot handle deriv=2') },
+                {  stop('cannot handle deriv = 2') },
                 stop("'deriv' unmatched"))
         }
     }
@@ -1087,27 +1082,27 @@ nbolf <- function(theta, earg=stop("'earg' must be given"),
 
 
 
-nbolf2 <- function(theta, earg=stop("'earg' must be given"), 
-                   inverse=FALSE, deriv=0, short=TRUE, tag=FALSE)
-{
+ nbolf2 <- function(theta, earg=stop("'earg' must be given"), 
+                    inverse = FALSE, deriv = 0, short = TRUE, tag = FALSE) {
 
     cutpoint = kay = NULL
     if (is.list(earg)) {
         cutpoint = earg$cutpoint
         kay = earg$k
     }
-    if (!is.Numeric(kay, positive=TRUE))
-        stop("could not determine 'k' or it is not positive-valued")
+    if (!is.Numeric(kay, positive = TRUE))
+    stop("could not determine 'k' or it is not positive-valued")
     if (!is.Numeric(cutpoint))
-        stop("could not determine the cutpoint")
-    if (any(cutpoint < 0) || !is.Numeric(cutpoint, integer=TRUE))
-        warning("'cutpoint' should contain non-negative integer values")
+    stop("could not determine the cutpoint")
+    if (any(cutpoint < 0) || !is.Numeric(cutpoint, integer = TRUE))
+      warning("argument 'cutpoint' should",
+              " contain non-negative integer values")
 
     if (is.character(theta)) {
         string <- if (short) {
             lenc = length(cutpoint) > 1
             lenk = length(kay) > 1
-            paste("nbolf2(",theta,", earg = list(cutpoint = ",
+            paste("nbolf2(", theta, ", earg = list(cutpoint = ",
                   if (lenc) "c(" else "",
                   ToString(cutpoint),
                   if (lenc) ")" else "",
@@ -1128,16 +1123,16 @@ nbolf2 <- function(theta, earg=stop("'earg' must be given"),
     if (ncol(thmat) > 1) {
         answer = thmat
         for(ii in 1:ncol(thmat))
-            answer[,ii] = Recall(theta=thmat[,ii],
-                                 earg = list(cutpoint=cutpoint[ii], k=kay[ii]),
-                                 inverse=inverse, deriv=deriv)
+            answer[,ii] = Recall(theta = thmat[,ii],
+                                 earg = list(cutpoint = cutpoint[ii], k = kay[ii]),
+                                 inverse=inverse, deriv = deriv)
         return(answer)
     }
 
     answer =
     if (inverse) {
         if (deriv > 0) {
-            1 / Recall(theta=theta, earg=earg, inverse=FALSE, deriv=deriv)
+            1 / Recall(theta = theta, earg = earg, inverse = FALSE, deriv = deriv)
         } else {
             if (cutpoint == 0) {
                 1.0 - (kay / (kay + care.exp(theta)))^kay
@@ -1154,9 +1149,9 @@ nbolf2 <- function(theta, earg=stop("'earg' must be given"),
             ans = Re(t(apply(mymat, 2, polyroot)))
             theta2 = invfun = pnorm(-ans)  # pnorm(-x) = 1-pnorm(x)
             for(ii in 1:4) {
-                theta2[,ii] = Recall(theta=theta2[,ii],
-                                     earg = list(cutpoint=cutpoint, k=kay),
-                                     inverse=FALSE, deriv=deriv)
+                theta2[,ii] = Recall(theta = theta2[,ii],
+                                     earg = list(cutpoint = cutpoint, k = kay),
+                                     inverse = FALSE, deriv = deriv)
             }
             rankmat = t(apply(abs(theta2 - theta), 1, rank))
             for(ii in 2:4) {
@@ -1172,15 +1167,15 @@ nbolf2 <- function(theta, earg=stop("'earg' must be given"),
         SMALLNO = 1 * .Machine$double.xmin
         Theta = theta
         Theta = pmin(Theta, 1 - smallno)  # Since theta == 1 is a possibility
-        Theta = pmax(Theta, smallno) # Since theta==0 is a possibility
+        Theta = pmax(Theta, smallno) # Since theta == 0 is a possibility
         if (cutpoint == 0) {
             switch(deriv+1, {
             temp = (1 - Theta)^(-1/kay) - 1
             temp = pmax(temp, SMALLNO)
             log(kay) + log(temp)},
             (kay / (1 - Theta)^(1/kay) - kay) * (1 - Theta)^(kay+1/kay),
-            {  stop('cannot handle deriv=2') },
-            stop("'deriv' unmatched"))
+            {  stop('cannot handle deriv = 2') },
+            stop("argument 'deriv' unmatched"))
         } else {
             Ql = qnorm(Theta)
             a1 = -(9*cutpoint+8) / (cutpoint+1)
@@ -1201,8 +1196,8 @@ nbolf2 <- function(theta, earg=stop("'earg' must be given"),
                  dA.dtheta = (-denomin * BB - numerat * CC) / denomin^2
                  argmax1 / (3 * dA.dtheta)
                 },
-                {  stop('cannot handle deriv=2') },
-                stop("'deriv' unmatched"))
+                {  stop('cannot handle deriv = 2') },
+                stop("argument 'deriv' unmatched"))
         }
     }
     if (!is.Numeric(answer)) stop("the answer contains some NAs")
@@ -1211,13 +1206,14 @@ nbolf2 <- function(theta, earg=stop("'earg' must be given"),
 
 
 
-Cut = function(y, breaks=c(-Inf, quantile(c(y), prob = (1:4)/4))) {
+ Cut = function(y, breaks = c(-Inf, quantile(c(y), prob = (1:4)/4))) {
     y = as.matrix(y)
 
 
-    temp = cut(y, breaks=breaks, labels=FALSE)
+    temp = cut(y, breaks=breaks, labels = FALSE)
     temp = c(temp) # integer vector of integers
-    if (any(is.na(temp))) stop("there are NAs")
+    if (any(is.na(temp)))
+      stop("there are NAs")
     answer = if (ncol(y) > 1) matrix(temp, nrow(y), ncol(y)) else temp
     if (ncol(y) > 1) {
         ynames = dimnames(y)[[2]]
@@ -1231,15 +1227,17 @@ Cut = function(y, breaks=c(-Inf, quantile(c(y), prob = (1:4)/4))) {
 }
 
 
-checkCut = function(y) {
-    if (!is.Numeric(y, posi=TRUE, integ=TRUE))
+ checkCut = function(y) {
+    if (!is.Numeric(y, posi = TRUE, integ = TRUE))
         stop("'y' must contain positive integers only")
     uy = unique(y)
     L = max(uy)
     oklevels = 1:L
-    if (L == 1) stop("only one unique value")
+    if (L == 1)
+      stop("only one unique value")
     for(ii in oklevels) {
-        if (all(ii != uy)) stop("there is no ", ii, " value")
+        if (all(ii != uy))
+          stop("there is no ", ii, " value")
     }
     TRUE
 }
diff --git a/R/model.matrix.vglm.q b/R/model.matrix.vglm.q
index f50b21c..4e806b6 100644
--- a/R/model.matrix.vglm.q
+++ b/R/model.matrix.vglm.q
@@ -129,6 +129,8 @@
     } # End of if (assign.attributes)
 
 
+
+
     if (!length(xij)) return(X_vlm)
 
 
diff --git a/R/plot.vglm.q b/R/plot.vglm.q
index 7372114..69e05cf 100644
--- a/R/plot.vglm.q
+++ b/R/plot.vglm.q
@@ -14,12 +14,12 @@
 
 
 
-plotvgam = function(x, newdata=NULL, y=NULL, residuals=NULL, rugplot=TRUE,
-                    se=FALSE, scale=0, 
-                    raw=TRUE, offset.arg=0, deriv.arg=0, overlay=FALSE,
-                    type.residuals=c("deviance","working","pearson","response"),
-                    plot.arg=TRUE, which.term=NULL, which.cf=NULL, 
-                    control=plotvgam.control(...), 
+plotvgam = function(x, newdata = NULL, y = NULL, residuals = NULL, rugplot = TRUE,
+                    se = FALSE, scale = 0, 
+                    raw = TRUE, offset.arg = 0, deriv.arg = 0, overlay = FALSE,
+                    type.residuals = c("deviance", "working", "pearson", "response"),
+                    plot.arg = TRUE, which.term = NULL, which.cf = NULL, 
+                    control = plotvgam.control(...), 
                     varxij = 1, ...)
 {
 
@@ -28,7 +28,7 @@ plotvgam = function(x, newdata=NULL, y=NULL, residuals=NULL, rugplot=TRUE,
     na.act = x at na.action
     x at na.action = list() # Don't want NAs returned from predict() or resid()
 
-    if (!is.Numeric(varxij, integ=TRUE, allow=1, posit=TRUE))
+    if (!is.Numeric(varxij, integ = TRUE, allow=1, posit = TRUE))
         stop("bad input for the 'varxij' argument")
     if (any(slotNames(x) == "control")) {
         x at control$varxij = varxij
@@ -43,19 +43,19 @@ plotvgam = function(x, newdata=NULL, y=NULL, residuals=NULL, rugplot=TRUE,
             c("deviance","working","pearson","response"))[1]
 
 
-    if (!is.Numeric(deriv.arg, integ=TRUE, allow=1) || deriv.arg<0)
+    if (!is.Numeric(deriv.arg, integ = TRUE, allow=1) || deriv.arg<0)
         stop("bad input for the 'deriv' argument")
 
     if (se && deriv.arg > 0) {
         warning("standard errors not available with derivatives. ",
-                "Setting 'se=FALSE'")
+                "Setting 'se = FALSE'")
         se = FALSE
     }
 
     preplot.object <- x at preplot
     if (!length(preplot.object)) {
         preplot.object <- preplotvgam(x, newdata=newdata,
-                                      raw=raw, deriv=deriv.arg, se=se,
+                                      raw=raw, deriv = deriv.arg, se=se,
                                       varxij=varxij)
     }
 
@@ -70,7 +70,7 @@ plotvgam = function(x, newdata=NULL, y=NULL, residuals=NULL, rugplot=TRUE,
             } else {
              residuals=resid(x,typ=type.residuals) #Get the prespecified type
                 if (!length(residuals))
-                    warning("residuals are NULL. Ignoring 'residuals=TRUE'")
+                    warning("residuals are NULL. Ignoring 'residuals = TRUE'")
             }
         } else {
             residuals <- NULL
@@ -87,7 +87,7 @@ plotvgam = function(x, newdata=NULL, y=NULL, residuals=NULL, rugplot=TRUE,
     if (plot.arg)
         plotpreplotvgam(preplot.object, residuals=residuals, 
                         rugplot=rugplot, scale=scale, se=se,
-                        offset.arg=offset.arg, deriv.arg=deriv.arg,
+                        offset.arg = offset.arg, deriv.arg = deriv.arg,
                         overlay=overlay, 
                         which.term=which.term, which.cf=which.cf, 
                         control=control)
@@ -99,7 +99,7 @@ plotvgam = function(x, newdata=NULL, y=NULL, residuals=NULL, rugplot=TRUE,
 
 
 
-ylim.scale <- function(ylim, scale=0) {
+ylim.scale <- function(ylim, scale = 0) {
     if (length(ylim) != 2 || ylim[2] < ylim[1])
         stop("error in 'ylim'")
     try <- ylim[2] - ylim[1]
@@ -122,9 +122,9 @@ getallresponses = function(xij) {
 
 
 
-headpreplotvgam = function(object, newdata=NULL,
-                           terms=attr((object at terms)$terms, "term.labels"),
-                           raw=TRUE, deriv.arg=deriv.arg, se=FALSE,
+headpreplotvgam = function(object, newdata = NULL,
+                           terms = attr((object at terms)$terms, "term.labels"),
+                           raw = TRUE, deriv.arg = deriv.arg, se = FALSE,
                            varxij = 1) {
     Terms <- terms(object)  # 11/8/03; object at terms$terms 
     aa <- attributes(Terms)
@@ -190,7 +190,7 @@ headpreplotvgam = function(object, newdata=NULL,
                 stop("need to have names for fitted.values ",
                      "when call has a 'subset' or 'na.action' argument")
 
-            form <- paste("~", unlist(xnames), collapse="+")
+            form <- paste("~", unlist(xnames), collapse = "+")
             Mcall <- c(as.name("model.frame"), list(formula =
                        terms(as.formula(form)),
                        subset = Rownames, na.action = function(x) x))
@@ -213,13 +213,13 @@ headpreplotvgam = function(object, newdata=NULL,
 
 
 
-preplotvgam = function(object, newdata=NULL,
+preplotvgam = function(object, newdata = NULL,
                        terms=attr((object at terms)$terms, "term.labels"),
-                       raw=TRUE, deriv.arg=deriv.arg, se=FALSE,
+                       raw = TRUE, deriv.arg = deriv.arg, se = FALSE,
                        varxij=1) {
 
     result1 = headpreplotvgam(object, newdata=newdata, terms=terms,
-                              raw=raw, deriv.arg=deriv.arg, se=se,
+                              raw=raw, deriv.arg = deriv.arg, se=se,
                               varxij=varxij)
 
     xvars  = result1$xvars
@@ -239,11 +239,11 @@ preplotvgam = function(object, newdata=NULL,
     }
 
     pred <- if (length(newdata)) {
-        predict(object, newdata, type="terms",
-                raw=raw, se.fit=se, deriv.arg=deriv.arg)
+        predict(object, newdata, type = "terms",
+                raw=raw, se.fit=se, deriv.arg = deriv.arg)
     } else {
-        predict(object, type="terms",
-                raw=raw, se.fit=se, deriv.arg=deriv.arg)
+        predict(object, type = "terms",
+                raw=raw, se.fit=se, deriv.arg = deriv.arg)
     }
 
     fits <- if (is.atomic(pred)) NULL else pred$fit
@@ -251,7 +251,7 @@ preplotvgam = function(object, newdata=NULL,
     if (is.null(fits))
         fits <- pred
     fred <- attr(fits, "vterm.assign")   # NULL for M==1
-    Constant = attr(fits, "constant")  # NULL if se=TRUE
+    Constant = attr(fits, "constant")  # NULL if se = TRUE
 
     gamplot <- xnames
 
@@ -276,12 +276,12 @@ preplotvgam = function(object, newdata=NULL,
 }
 
 
-plotvlm <- function(object, residuals=NULL, rugplot= FALSE, ...) {
+plotvlm <- function(object, residuals = NULL, rugplot= FALSE, ...) {
     stop("sorry, this function hasn't been written yet")
 }
 
 
-plotvglm <- function(x, residuals=NULL, smooths= FALSE,
+plotvglm <- function(x, residuals = NULL, smooths= FALSE,
                      rugplot= FALSE, id.n= FALSE, ...) {
     stop("this function hasn't been written yet")
 }
@@ -289,11 +289,11 @@ plotvglm <- function(x, residuals=NULL, smooths= FALSE,
 
 
 
-plotpreplotvgam <- function(x, y=NULL, residuals=NULL,
-                              rugplot= TRUE, se= FALSE, scale=0,
-                              offset.arg=0, deriv.arg=0, overlay= FALSE,
-                              which.term=NULL, which.cf=NULL,
-                              control=NULL)
+plotpreplotvgam <- function(x, y = NULL, residuals = NULL,
+                              rugplot= TRUE, se= FALSE, scale = 0,
+                              offset.arg = 0, deriv.arg = 0, overlay= FALSE,
+                              which.term = NULL, which.cf = NULL,
+                              control = NULL)
 {
     listof <- inherits(x[[1]], "preplotvgam")
     if (listof) {
@@ -305,23 +305,23 @@ plotpreplotvgam <- function(x, y=NULL, residuals=NULL,
             plot.no = plot.no + 1
             if ((is.character(which.term) && any(which.term == ii)) ||
                (is.numeric(which.term) && any(which.term == plot.no)))
-                plotpreplotvgam(x[[ii]], y=NULL,
+                plotpreplotvgam(x[[ii]], y = NULL,
                                 residuals, rugplot=rugplot, se=se, scale=scale,
-                                offset.arg=offset.arg,
-                                deriv.arg=deriv.arg, overlay=overlay,
+                                offset.arg = offset.arg,
+                                deriv.arg = deriv.arg, overlay=overlay,
                                 which.cf=which.cf,
                                 control=control)
         }
     } else {
-        dummy <- function(residuals=NULL, rugplot= TRUE, se= FALSE, scale=0, 
-                          offset.arg=0, deriv.arg=0, overlay= FALSE, 
-                          which.cf=NULL, control=plotvgam.control())
+        dummy <- function(residuals = NULL, rugplot= TRUE, se= FALSE, scale = 0, 
+                          offset.arg = 0, deriv.arg = 0, overlay= FALSE, 
+                          which.cf = NULL, control=plotvgam.control())
             c(list(residuals=residuals, rugplot=rugplot, se=se, scale=scale,
-                   offset.arg=offset.arg, deriv.arg=deriv.arg, overlay=overlay,
+                   offset.arg = offset.arg, deriv.arg = deriv.arg, overlay=overlay,
                    which.cf=which.cf), control)
 
         d <- dummy(residuals=residuals, rugplot=rugplot, se=se, scale=scale,
-                   offset.arg=offset.arg, deriv.arg=deriv.arg,
+                   offset.arg = offset.arg, deriv.arg = deriv.arg,
                    overlay=overlay,
                    which.cf=which.cf, 
                    control=control)
@@ -334,19 +334,19 @@ plotpreplotvgam <- function(x, y=NULL, residuals=NULL,
 }
 
 
-vplot.default <- function(x, y, se.y=NULL, xlab="", ylab="",
-                          residuals=NULL, rugplot= FALSE,
-                          scale=0, se= FALSE, 
-                          offset.arg=0, deriv.arg=0, overlay= FALSE, 
-                          which.cf=NULL, ...) {
+vplot.default <- function(x, y, se.y = NULL, xlab = "", ylab = "",
+                          residuals = NULL, rugplot= FALSE,
+                          scale = 0, se= FALSE, 
+                          offset.arg = 0, deriv.arg = 0, overlay= FALSE, 
+                          which.cf = NULL, ...) {
     switch(data.class(x)[1],
            logical=vplot.factor(factor(x), y, se.y, xlab, ylab, residuals, 
                                 rugplot, scale, se,
-                                offset.arg=offset.arg, overlay=overlay, ...),
+                                offset.arg = offset.arg, overlay=overlay, ...),
            if (is.numeric(x)) {
                vplot.numeric(as.vector(x), y, se.y, xlab, ylab, 
                              residuals, rugplot, scale, se,
-                             offset.arg=offset.arg, overlay=overlay, ...)
+                             offset.arg = offset.arg, overlay=overlay, ...)
            } else {
                    warning("The \"x\" component of \"", ylab, "\" has class \"",
                            class(x), "\"; no vplot() methods available")
@@ -356,16 +356,16 @@ vplot.default <- function(x, y, se.y=NULL, xlab="", ylab="",
 
 
 
-vplot.list <- function(x, y, se.y=NULL, xlab, ylab, 
-                       residuals=NULL, rugplot= FALSE, scale=0, se= FALSE, 
-                       offset.arg=0, deriv.arg=0, overlay= FALSE, 
-                       which.cf=NULL, ...)
+vplot.list <- function(x, y, se.y = NULL, xlab, ylab, 
+                       residuals = NULL, rugplot = FALSE, scale = 0, se = FALSE, 
+                       offset.arg = 0, deriv.arg = 0, overlay = FALSE, 
+                       which.cf = NULL, ...)
 {
 
     if (is.numeric(x[[1]])) {
         vplot.numeric(x[[1]], y, se.y, xlab, ylab, 
                       residuals, rugplot, scale, se, 
-                      offset.arg=offset.arg, deriv.arg=deriv.arg,
+                      offset.arg = offset.arg, deriv.arg = deriv.arg,
                       overlay=overlay, ...)
     } else 
         stop("this function hasn't been written yet") 
@@ -375,18 +375,18 @@ vplot.list <- function(x, y, se.y=NULL, xlab, ylab,
 
 
  plotvgam.control = function(
-                          which.cf=NULL,
-                          xlim=NULL, ylim=NULL,
-                          llty=par()$lty,
-                          slty="dashed",
-                          pcex=par()$cex,
-                          pch=par()$pch,
-                          pcol=par()$col,
-                          lcol=par()$col,
-                          rcol=par()$col,
-                          scol=par()$col,
-                          llwd=par()$lwd,
-                          slwd=par()$lwd,
+                          which.cf = NULL,
+                          xlim = NULL, ylim = NULL,
+                          llty = par()$lty,
+                          slty = "dashed",
+                          pcex = par()$cex,
+                          pch = par()$pch,
+                          pcol = par()$col,
+                          lcol = par()$col,
+                          rcol = par()$col,
+                          scol = par()$col,
+                          llwd = par()$lwd,
+                          slwd = par()$lwd,
                           add.arg= FALSE,
                           one.at.a.time= FALSE, 
                           .include.dots= TRUE,
@@ -431,21 +431,21 @@ vplot.list <- function(x, y, se.y=NULL, xlab, ylab,
 
 
 
-vplot.numeric <- function(x, y, se.y=NULL, xlab, ylab,
-                          residuals=NULL, rugplot= FALSE, se= FALSE, scale=0,
-                          offset.arg=0, deriv.arg=0, overlay= FALSE,
-                          which.cf=NULL,
-                          xlim=NULL, ylim=NULL,
-                          llty=par()$lty,
-                          slty="dashed",
-                          pcex=par()$cex,
-                          pch=par()$pch,
-                          pcol=par()$col,
-                          lcol=par()$col,
-                          rcol=par()$col,
-                          scol=par()$col,
-                          llwd=par()$lwd,
-                          slwd=par()$lwd,
+vplot.numeric <- function(x, y, se.y = NULL, xlab, ylab,
+                          residuals = NULL, rugplot= FALSE, se= FALSE, scale = 0,
+                          offset.arg = 0, deriv.arg = 0, overlay= FALSE,
+                          which.cf = NULL,
+                          xlim = NULL, ylim = NULL,
+                          llty = par()$lty,
+                          slty = "dashed",
+                          pcex = par()$cex,
+                          pch = par()$pch,
+                          pcol = par()$col,
+                          lcol = par()$col,
+                          rcol = par()$col,
+                          scol = par()$col,
+                          llwd = par()$lwd,
+                          slwd = par()$lwd,
                           add.arg= FALSE,
                           one.at.a.time= FALSE, 
                           noxmean = FALSE, 
@@ -531,7 +531,7 @@ vplot.numeric <- function(x, y, se.y=NULL, xlab, ylab,
     if (overlay) {
         if (!length(which.cf)) which.cf = 1:ncol(uy)  # Added 7/8/04
         if (!add.arg) {
-            matplot(ux, uy[,which.cf], type="n", 
+            matplot(ux, uy[,which.cf], type = "n", 
                     xlim=xlim, ylim=ylim, 
                     xlab=xlab, ylab=ylab, ...) 
         }
@@ -542,7 +542,7 @@ vplot.numeric <- function(x, y, se.y=NULL, xlab, ylab,
                 points(x, residuals, pch=pch, col=pcol, cex=pcex) 
             } else {
                 matpoints(x, residuals[,which.cf],
-                          pch=pch, col=pcol, cex=pcex) # add.arg=TRUE,
+                          pch=pch, col=pcol, cex=pcex) # add.arg = TRUE,
             }
         if (rugplot)
             rug(jx, col=rcol)
@@ -574,18 +574,18 @@ vplot.numeric <- function(x, y, se.y=NULL, xlab, ylab,
                     ylim <- range(ylim0, uy[,ii], na.rm= TRUE)
                     if (se && !is.null(se.y))
                         ylim <- range(ylim0, se.lower[,ii], se.upper[,ii],
-                                      na.rm=TRUE)
+                                      na.rm = TRUE)
                     if (!is.null(residuals))
                         ylim <- range(c(ylim, residuals[,ii]), na.rm= TRUE)
                     ylim <- ylim.scale(ylim, scale)
                 }
                 if (ncol(uy)>1 && length(separator))
-                    YLAB <- paste(ylab, separator, ii, sep="")  
+                    YLAB <- paste(ylab, separator, ii, sep = "")  
                 if (!add.arg) {
                     if (one.at.a.time) {
                         readline("Hit return for the next plot ")
                     }
-                    plot(ux, uy[,ii], type="n", 
+                    plot(ux, uy[,ii], type = "n", 
                          xlim=xlim, ylim=ylim, 
                          xlab=xlab, ylab=YLAB, ...)
                 }
@@ -610,17 +610,17 @@ vplot.numeric <- function(x, y, se.y=NULL, xlab, ylab,
 
 
 
-vplot.matrix <- function(x, y, se.y=NULL, xlab, ylab,
-                         residuals=NULL, rugplot= FALSE, scale=0, se= FALSE, 
-                         offset.arg=0, deriv.arg=0, overlay= FALSE, 
-                         which.cf=NULL, ...) {
+vplot.matrix <- function(x, y, se.y = NULL, xlab, ylab,
+                         residuals = NULL, rugplot= FALSE, scale = 0, se= FALSE, 
+                         offset.arg = 0, deriv.arg = 0, overlay= FALSE, 
+                         which.cf = NULL, ...) {
     stop("You shouldn't ever call this function!") 
 }
 
 
-add.hookey <- function(ch, deriv.arg=0) {
+add.hookey <- function(ch, deriv.arg = 0) {
 
-    if (!is.Numeric(deriv.arg, integ=TRUE, allow=1) || deriv.arg<0)
+    if (!is.Numeric(deriv.arg, integ = TRUE, allow=1) || deriv.arg<0)
         stop("bad input for the 'deriv' argument")
 
     if (deriv.arg == 0)
@@ -631,19 +631,19 @@ add.hookey <- function(ch, deriv.arg=0) {
     nc <- nchar(ch)
     sub <- substring(ch, 1:nc, 1:nc)
     if (nc >= 2 && sub[1] == "s" && sub[2] == "(") {
-        paste("s", hookey, substring(ch, 2, nc), sep="", coll="")
+        paste("s", hookey, substring(ch, 2, nc), sep = "", coll = "")
     } else {
-        paste(ch, hookey, sep="", collapse="")
+        paste(ch, hookey, sep = "", collapse = "")
     }
 }
 
 
 
-vplot.factor <- function(x, y, se.y=NULL, xlab, ylab, 
-                         residuals=NULL, rugplot= FALSE, scale=0, 
-                         se= FALSE, xlim=NULL, ylim=NULL, 
-                         offset.arg=0, deriv.arg=0, overlay= FALSE, 
-                         which.cf=NULL, ...)
+vplot.factor <- function(x, y, se.y = NULL, xlab, ylab, 
+                         residuals = NULL, rugplot= FALSE, scale = 0, 
+                         se= FALSE, xlim = NULL, ylim = NULL, 
+                         offset.arg = 0, deriv.arg = 0, overlay= FALSE, 
+                         which.cf = NULL, ...)
 {
     if (deriv.arg>0)
         return(NULL)
@@ -693,9 +693,9 @@ vplot.factor <- function(x, y, se.y=NULL, xlab, ylab,
 
 
 
-vvplot.factor <- function(x, y, se.y=NULL, xlab, ylab,
-                          residuals=NULL, rugplot= FALSE, scale=0,
-                          se= FALSE, xlim=NULL, ylim=NULL, 
+vvplot.factor <- function(x, y, se.y = NULL, xlab, ylab,
+                          residuals = NULL, rugplot= FALSE, scale = 0,
+                          se= FALSE, xlim = NULL, ylim = NULL, 
                           ...)
 {
 
@@ -759,12 +759,12 @@ vvplot.factor <- function(x, y, se.y=NULL, xlab, ylab,
     uxx <- about(ux, M, Delta=min(delta))
     xlim <- range(c(xlim, uxx))
 
-    matplot(ux, uy, ylim=ylim, xlim=xlim, xlab="", type="n", 
-            ylab=ylab, axes= FALSE, frame.plot=TRUE, ...)
-    mtext(xlab, 1, 2, adj=0.5)
+    matplot(ux, uy, ylim=ylim, xlim=xlim, xlab = "", type = "n", 
+            ylab=ylab, axes= FALSE, frame.plot = TRUE, ...)
+    mtext(xlab, 1, 2, adj = 0.5)
     axis(side=2)
     lpos <- par("mar")[3]
-    mtext(Levels, side=3, line=lpos/2, at=ux, adj=0.5, srt=45)
+    mtext(Levels, side=3, line=lpos/2, at=ux, adj = 0.5, srt=45)
 
     for(ii in 1:M)
         segments(uxx[,ii] - 1.0 * delta, uy[,ii],
@@ -827,7 +827,7 @@ plotqrrvglm = function(object,
                rtype = c("pearson", "response", "deviance", "working"), 
                ask = FALSE,
                main = paste(Rtype, "residuals vs latent variable(s)"),
-               xlab="Latent Variable",
+               xlab = "Latent Variable",
                ITolerances = object at control$EqualTolerances,
                ...) {
     M = object at misc$M
@@ -839,14 +839,14 @@ plotqrrvglm = function(object,
 
     my.ylab = if (length(object at misc$ynames)) object at misc$ynames else 
               rep(" ", len=M)
-    Rtype = switch(rtype, pearson="Pearson", response="Response",
-                   deviance="Deviance", working="Working")
+    Rtype = switch(rtype, pearson = "Pearson", response = "Response",
+                   deviance = "Deviance", working = "Working")
 
     done = 0
     for(rr in 1:Rank)
         for(ii in 1:M) {
             plot(Coef.object at lv[,rr], res[,ii],
-                 xlab=paste(xlab, if (Rank == 1) "" else rr, sep=""),
+                 xlab=paste(xlab, if (Rank == 1) "" else rr, sep = ""),
                  ylab=my.ylab[ii],
                  main = main, ...)
             done = done + 1
diff --git a/R/qrrvglm.control.q b/R/qrrvglm.control.q
index 0f19001..a261d6b 100644
--- a/R/qrrvglm.control.q
+++ b/R/qrrvglm.control.q
@@ -19,7 +19,7 @@ qrrvglm.control = function(Rank=1,
           iShape = 0.1,
           ITolerances = FALSE,
           maxitl = 40,
-          method.init = 1,
+          imethod = 1,
           Maxit.optim = 250,
           MUXfactor = rep(7, length=Rank),
           Norrr = ~ 1,
@@ -50,8 +50,8 @@ qrrvglm.control = function(Rank=1,
         stop("bad input for 'Hstep'")
     if (!is.Numeric(maxitl, posit=TRUE, allow=1, integer=TRUE)) 
         stop("bad input for 'maxitl'")
-    if (!is.Numeric(method.init, posit=TRUE, allow=1, integer=TRUE)) 
-        stop("bad input for 'method.init'")
+    if (!is.Numeric(imethod, posit=TRUE, allow=1, integer=TRUE)) 
+        stop("bad input for 'imethod'")
     if (!is.Numeric(Maxit.optim, integ=TRUE, posit=TRUE))
         stop("Bad input for 'Maxit.optim'")
     if (!is.Numeric(MUXfactor, posit=TRUE)) 
@@ -103,7 +103,7 @@ qrrvglm.control = function(Rank=1,
            iShape = as.numeric(iShape),
            ITolerances = ITolerances,
            maxitl = maxitl,
-           method.init = method.init,
+           imethod = imethod,
            Maxit.optim = Maxit.optim,
            min.criterion = TRUE, # needed for calibrate 
            MUXfactor = rep(MUXfactor, length=Rank),
diff --git a/R/qtplot.q b/R/qtplot.q
index 1f3cb29..11f3732 100644
--- a/R/qtplot.q
+++ b/R/qtplot.q
@@ -13,57 +13,57 @@
 
 
  
-qtplot.lms.bcn <- function(percentiles=c(25,50,75),
-                           eta=NULL, yoffset=0)
+qtplot.lms.bcn <- function(percentiles = c(25,50,75),
+                           eta = NULL, yoffset = 0)
 {
 
     lp = length(percentiles)
     answer <- matrix(as.numeric(NA), nrow(eta), lp,
-                     dimnames=list(dimnames(eta)[[1]],
-                     paste(as.character(percentiles), "%", sep="")))
+                     dimnames = list(dimnames(eta)[[1]],
+                     paste(as.character(percentiles), "%", sep = "")))
     for(ii in 1:lp) {
-        answer[,ii] <- eta[,2] * (1+eta[,1] * eta[,3] *
-                        qnorm(percentiles[ii]/100))^(1/eta[,1])
+        answer[, ii] <- eta[, 2] * (1+eta[, 1] * eta[, 3] *
+                        qnorm(percentiles[ii]/100))^(1/eta[, 1])
     }
     answer 
 }
  
-qtplot.lms.bcg <- function(percentiles=c(25,50,75),
-                           eta=NULL, yoffset=0)
+qtplot.lms.bcg <- function(percentiles = c(25,50,75),
+                           eta = NULL, yoffset = 0)
 {
 
     cc <- percentiles
     lp = length(percentiles)
     answer <- matrix(as.numeric(NA), nrow(eta), lp,
-                     dimnames=list(dimnames(eta)[[1]],
-                     paste(as.character(percentiles), "%", sep="")))
-    lambda <- eta[,1]
-    sigma <- eta[,3]
+                     dimnames = list(dimnames(eta)[[1]],
+                     paste(as.character(percentiles), "%", sep = "")))
+    lambda <- eta[, 1]
+    sigma <- eta[, 3]
     shape <- 1 / (lambda * sigma)^2
     for(ii in 1:lp) {
         ccc <- rep(cc[ii]/100, len=nrow(eta))
         ccc <- ifelse(lambda > 0, ccc, 1-ccc)
-        answer[,ii] <- eta[,2] * (qgamma(ccc, sh=shape)/shape)^(1/lambda)
+        answer[, ii] <- eta[, 2] * (qgamma(ccc, sh=shape)/shape)^(1/lambda)
     }
     answer 
 }
  
 qtplot.lms.yjn2 <- 
-qtplot.lms.yjn <- function(percentiles=c(25,50,75),
-                           eta=NULL, yoffset=0)
+qtplot.lms.yjn <- function(percentiles = c(25,50,75),
+                           eta = NULL, yoffset = 0)
 {
 
     cc <- percentiles
     lp = length(percentiles)
     answer <- matrix(as.numeric(NA), nrow(eta), lp,
-                     dimnames=list(dimnames(eta)[[1]],
-                     paste(as.character(percentiles), "%", sep="")))
-    lambda <- eta[,1]
-    mu <- eta[,2]
-    sigma <- eta[,3]  # Link function already taken care of above
+                     dimnames = list(dimnames(eta)[[1]],
+                     paste(as.character(percentiles), "%", sep = "")))
+    lambda <- eta[, 1]
+    mu <- eta[, 2]
+    sigma <- eta[, 3]  # Link function already taken care of above
     for(ii in 1:lp) {
         ccc <- mu + sigma * qnorm(cc[ii]/100)
-        answer[,ii] <- yeo.johnson(ccc, lambda, inverse= TRUE) - yoffset
+        answer[, ii] <- yeo.johnson(ccc, lambda, inverse= TRUE) - yoffset
     }
     answer 
 }
@@ -80,7 +80,7 @@ qtplot.default <- function(object, ...) {
 
     LL <- length(object at family@vfamily)
     newcall = paste("qtplot.", object at family@vfamily[LL], 
-                    "(object, ...)", sep="")
+                    "(object, ...)", sep = "")
     newcall = parse(text=newcall)[[1]]
 
     if (Attach) {
@@ -92,7 +92,7 @@ qtplot.default <- function(object, ...) {
 
 
 qtplot.lmscreg <- function(object,
-                           newdata=NULL,
+                           newdata = NULL,
                            percentiles=object at misc$percentiles,
                            plot.it= TRUE, ...) {
 
@@ -102,14 +102,14 @@ qtplot.lmscreg <- function(object,
     lp <- length(percentiles)
     if (same) {
         fitted.values <- if (!length(newdata)) object at fitted.values else {
-                    predict(object, newdata=newdata, type="response") 
+                    predict(object, newdata=newdata, type = "response") 
                 }
         fitted.values <- as.matrix(fitted.values)
     } else {
         if (!is.numeric(percentiles))
             stop("'percentiles' must be specified")
 
-        eta <- if (length(newdata)) predict(object, newdata=newdata, type="link") else
+        eta <- if (length(newdata)) predict(object, newdata=newdata, type = "link") else
                object at predictors
         eta <- eta2theta(eta, object at misc$link) # Now lambda, mu, sigma
 
@@ -118,19 +118,19 @@ qtplot.lmscreg <- function(object,
         }
 
         newcall = paste(if (expectiles) "explot." else "qtplot.",
-                        object at family@vfamily[1], "(percentiles=percentiles",
-                        ", eta=eta, yoffset=object at misc$yoffset)", sep="")
+                        object at family@vfamily[1], "(percentiles = percentiles",
+                        ", eta = eta, yoffset=object at misc$yoffset)", sep = "")
         newcall = parse(text=newcall)[[1]]
         fitted.values = as.matrix( eval(newcall) )
         dimnames(fitted.values) <- list(dimnames(eta)[[1]],
-                                   paste(as.character(percentiles), "%", sep=""))
+                                   paste(as.character(percentiles), "%", sep = ""))
     }
 
     if (plot.it) {
         plotqtplot.lmscreg(fit=fitted.values, obj=object,
                            newdata=newdata,
-                           lp=lp,
-                           percentiles=percentiles, ...)
+                           lp = lp,
+                           percentiles = percentiles, ...)
     }
 
     list(fitted.values = fitted.values, percentiles = percentiles)
@@ -139,31 +139,31 @@ qtplot.lmscreg <- function(object,
  
 
 plotqtplot.lmscreg <- function(fitted.values, object,
-                          newdata=NULL,
+                          newdata = NULL,
                           percentiles=object at misc$percentiles, 
-                          lp=NULL,
-                          add.arg=FALSE,
+                          lp = NULL,
+                          add.arg = FALSE,
                           y = if (length(newdata)) FALSE else TRUE,
-                          spline.fit=FALSE,
-                          label=TRUE,
-                          size.label=0.06,
-                          xlab=NULL, ylab="",
-                          pch=par()$pch, pcex=par()$cex, pcol.arg=par()$col,
-                          xlim=NULL, ylim=NULL,
-                          llty.arg=par()$lty,
-                          lcol.arg=par()$col, llwd.arg=par()$lwd,
-                          tcol.arg=par()$col, 
-                          tadj=1, ...)
+                          spline.fit = FALSE,
+                          label = TRUE,
+                          size.label = 0.06,
+                          xlab = NULL, ylab = "",
+                          pch = par()$pch, pcex = par()$cex, pcol.arg = par()$col,
+                          xlim = NULL, ylim = NULL,
+                          llty.arg = par()$lty,
+                          lcol.arg = par()$col, llwd.arg = par()$lwd,
+                          tcol.arg = par()$col, 
+                          tadj = 1, ...)
 {
 
 
 
     if (!length(newdata)) {
-        X <- model.matrixvlm(object, type="lm")
+        X <- model.matrixvlm(object, type = "lm")
         if (is.matrix(X) && length(object at y) && ncol(X)==2 && 
-           dimnames(X)[[2]][1]=="(Intercept)")
+           dimnames(X)[[2]][1] == "(Intercept)")
         {
-            xx <- X[,2]
+            xx <- X[, 2]
             if (is.null(xlab)) {
                 xlab <- if (object at misc$nonparametric)
                         as.vector(slot(object, "s.xargument")) else
@@ -179,13 +179,13 @@ plotqtplot.lmscreg <- function(fitted.values, object,
                 if (!is.numeric(ylim))
                     ylim <- c(min(fred), max(fred))
                 matplot(x=xx, y=fred,
-                        xlab=xlab, ylab=ylab, type="n", 
+                        xlab=xlab, ylab=ylab, type = "n", 
                         xlim=xlim, ylim=ylim, ...)
             }
 
             if (y && length(object at y))
-                matpoints(x=xx, y=object at y, pch=pch, cex=pcex,
-                          col=pcol.arg)
+                matpoints(x=xx, y=object at y, pch = pch, cex = pcex,
+                          col = pcol.arg)
         } else {
                     warning(paste("there is not a single covariate.",
                                   "Returning the object."))
@@ -213,33 +213,33 @@ plotqtplot.lmscreg <- function(fitted.values, object,
             if (!is.numeric(ylim))
                 ylim <- c(min(fitted.values), max(fitted.values))
             matplot(x=xx, y=fitted.values,
-                    xlab=xlab, ylab=ylab, type="n", 
-                        xlim=xlim, ylim=ylim, col=pcol.arg)
+                    xlab=xlab, ylab=ylab, type = "n", 
+                        xlim=xlim, ylim=ylim, col = pcol.arg)
         }
         if (y && length(object at y))
-            matpoints(x=xx, y=object at y, pch=pch, cex=pcex,
-                      col=pcol.arg)
+            matpoints(x=xx, y=object at y, pch = pch, cex = pcex,
+                      col = pcol.arg)
 
     }
 
-    tcol.arg = rep(tcol.arg, length=lp)
-    lcol.arg = rep(lcol.arg, length=lp)
-    llwd.arg  = rep(llwd.arg,  length=lp)
-    llty.arg  = rep(llty.arg,  length=lp)
+    tcol.arg = rep(tcol.arg, length = lp)
+    lcol.arg = rep(lcol.arg, length = lp)
+    llwd.arg  = rep(llwd.arg,  length = lp)
+    llty.arg  = rep(llty.arg,  length = lp)
     for(ii in 1:lp) {
-        temp <- cbind(xx, fitted.values[,ii])
-        temp <- temp[sort.list(temp[,1]),]
-        index <- !duplicated(temp[,1])
+        temp <- cbind(xx, fitted.values[, ii])
+        temp <- temp[sort.list(temp[, 1]),]
+        index <- !duplicated(temp[, 1])
         if (spline.fit) {
-            lines(spline(temp[index,1], temp[index,2]),
-                  lty=llty.arg[ii], col=lcol.arg[ii], err=-1, lwd=llwd.arg[ii])
+            lines(spline(temp[index, 1], temp[index, 2]),
+                  lty = llty.arg[ii], col = lcol.arg[ii], err=-1, lwd = llwd.arg[ii])
         } else {
-            lines(temp[index,1], temp[index,2],
-                  lty=llty.arg[ii], col=lcol.arg[ii], err=-1, lwd=llwd.arg[ii])
+            lines(temp[index, 1], temp[index, 2],
+                  lty = llty.arg[ii], col = lcol.arg[ii], err=-1, lwd = llwd.arg[ii])
         }
         if (label)
-            text(par()$usr[2], temp[nrow(temp),2],
-                 paste( percentiles[ii], "%", sep=""),
+            text(par()$usr[2], temp[nrow(temp), 2],
+                 paste( percentiles[ii], "%", sep = ""),
                  adj=tadj, col=tcol.arg[ii], err=-1)
     }
 
@@ -252,21 +252,25 @@ if (TRUE) {
     setGeneric("qtplot", function(object, ...) standardGeneric("qtplot"))
 
 
-    setMethod("qtplot", signature(object="vglm"),
+    setMethod("qtplot", signature(object = "vglm"),
               function(object, ...) 
               invisible(qtplot.vglm(object, ...)))
-       setMethod("qtplot", signature(object="vgam"),
+       setMethod("qtplot", signature(object = "vgam"),
                  function(object, ...) 
                  invisible(qtplot.vglm(object, ...)))
 }
 
 
 
+
+
+
+
 "qtplot.vextremes" <- function(object, ...) {
 
 
     newcall = paste("qtplot.", object at family@vfamily[1],
-                    "(object=object, ... )", sep="")
+                    "(object=object, ... )", sep = "")
     newcall = parse(text=newcall)[[1]]
     eval(newcall)
 }
@@ -274,20 +278,20 @@ if (TRUE) {
  
 qtplot.egumbel <-
 qtplot.gumbel <-
-    function(object, plot.it=TRUE, y.arg=TRUE, spline.fit=FALSE, label=TRUE,
+    function(object, plot.it = TRUE, y.arg = TRUE, spline.fit = FALSE, label = TRUE,
              R=object at misc$R,
              percentiles=object at misc$percentiles,
-             add.arg=FALSE,
+             add.arg = FALSE,
              mpv=object at misc$mpv,
-             xlab=NULL, ylab="", main="",
-             pch=par()$pch, pcol.arg=par()$col,
-             llty.arg=par()$lty, lcol.arg=par()$col, llwd.arg=par()$lwd,
-             tcol.arg=par()$col, tadj=1, ...)
+             xlab = NULL, ylab = "", main = "",
+             pch = par()$pch, pcol.arg = par()$col,
+             llty.arg = par()$lty, lcol.arg = par()$col, llwd.arg = par()$lwd,
+             tcol.arg = par()$col, tadj = 1, ...)
 {
     if (!is.logical(mpv) || length(mpv) != 1)
         stop("bad input for 'mpv'")
     if (!length(percentiles) ||
-       (!is.Numeric(percentiles, posit=TRUE) || max(percentiles) >= 100))
+       (!is.Numeric(percentiles, posit = TRUE) || max(percentiles) >= 100))
         stop("bad input for 'percentiles'")
 
 
@@ -306,7 +310,7 @@ qtplot.gumbel <-
     extra$mpv = mpv  # Overwrite if necessary
     extra$R = R
     extra$percentiles = percentiles
-    fitted.values = object at family@inverse(eta=eta, extra=extra) 
+    fitted.values = object at family@inverse(eta = eta, extra = extra) 
 
     answer = list(fitted.values = fitted.values,
                   percentiles = percentiles)
@@ -317,16 +321,16 @@ qtplot.gumbel <-
 
 
     lp = length(percentiles)  # Does not include mpv
-    tcol.arg = rep(tcol.arg, length=lp+mpv)
-    lcol.arg = rep(lcol.arg, length=lp+mpv)
-    llwd.arg  = rep(llwd.arg,  length=lp+mpv)
-    llty.arg  = rep(llty.arg,  length=lp+mpv)
+    tcol.arg = rep(tcol.arg, length = lp+mpv)
+    lcol.arg = rep(lcol.arg, length = lp+mpv)
+    llwd.arg  = rep(llwd.arg,  length = lp+mpv)
+    llty.arg  = rep(llty.arg,  length = lp+mpv)
 
-    X <- model.matrixvlm(object, type="lm")
+    X <- model.matrixvlm(object, type = "lm")
     if (is.matrix(X) && length(object at y) && ncol(X)==2 && 
-       dimnames(X)[[2]][1]=="(Intercept)")
+       dimnames(X)[[2]][1] == "(Intercept)")
     {
-        xx <- X[,2]
+        xx <- X[, 2]
         if (!length(xlab)) 
             xlab <- if (object at misc$nonparametric &&
                        length(object at s.xargument))
@@ -334,10 +338,10 @@ qtplot.gumbel <-
 
         if (!add.arg)
             matplot(x=xx, y=cbind(object at y, fitted.values), main=main,
-                    xlab=xlab, ylab=ylab, type="n", ...)
+                    xlab=xlab, ylab=ylab, type = "n", ...)
 
         if (y.arg) {
-               matpoints(x=xx, y=object at y, pch=pch, col=pcol.arg) 
+               matpoints(x=xx, y=object at y, pch = pch, col = pcol.arg) 
         }
     } else {
         warning("there is not a single covariate.")
@@ -346,19 +350,19 @@ qtplot.gumbel <-
 
     for(ii in 1:(lp+mpv))
     {
-        temp <- cbind(xx, fitted.values[,ii])
-        temp <- temp[sort.list(temp[,1]),]
-        index <- !duplicated(temp[,1])
+        temp <- cbind(xx, fitted.values[, ii])
+        temp <- temp[sort.list(temp[, 1]),]
+        index <- !duplicated(temp[, 1])
         if (spline.fit) {
-            lines(spline(temp[index,1], temp[index,2]),
-                  lty=llty.arg[ii], col=lcol.arg[ii], lwd=llwd.arg[ii])
+            lines(spline(temp[index, 1], temp[index, 2]),
+                  lty = llty.arg[ii], col = lcol.arg[ii], lwd = llwd.arg[ii])
         } else {
-            lines(temp[index,1], temp[index,2],
-                  lty=llty.arg[ii], col=lcol.arg[ii], lwd=llwd.arg[ii])
+            lines(temp[index, 1], temp[index, 2],
+                  lty = llty.arg[ii], col = lcol.arg[ii], lwd = llwd.arg[ii])
         }
         if (label) {
             mylabel = (dimnames(answer$fitted)[[2]])[ii]
-            text(par()$usr[2], temp[nrow(temp),2],
+            text(par()$usr[2], temp[nrow(temp), 2],
                  mylabel, adj=tadj, col=tcol.arg[ii], err=-1)
         }
     }
@@ -378,8 +382,8 @@ deplot.lms.bcn <- function(object,
     if (!any(object at family@vfamily == "lms.bcn")) 
         warning("I think you've called the wrong function")
 
-    Zvec <- ((y.arg/eta0[,2])^(eta0[,1]) -1) / (eta0[,1] * eta0[,3])
-    dZ.dy <- ((y.arg/eta0[,2])^(eta0[,1]-1)) / (eta0[,2] * eta0[,3])
+    Zvec <- ((y.arg/eta0[, 2])^(eta0[, 1]) -1) / (eta0[, 1] * eta0[, 3])
+    dZ.dy <- ((y.arg/eta0[, 2])^(eta0[, 1]-1)) / (eta0[, 2] * eta0[, 3])
     yvec <- dnorm(Zvec) * abs(dZ.dy) 
 
     list(newdata=newdata, y=y.arg, density=yvec)
@@ -395,10 +399,10 @@ deplot.lms.bcg <- function(object,
     if (!any(object at family@vfamily == "lms.bcg")) 
         warning("I think you've called the wrong function")
 
-    Zvec <- (y.arg/eta0[,2])^(eta0[,1])  # different from lms.bcn
-    dZ.dy <- ((y.arg/eta0[,2])^(eta0[,1]-1)) * eta0[,1] / eta0[,2]
-    lambda <- eta0[,1]
-    sigma <- eta0[,3]
+    Zvec <- (y.arg/eta0[, 2])^(eta0[, 1])  # different from lms.bcn
+    dZ.dy <- ((y.arg/eta0[, 2])^(eta0[, 1]-1)) * eta0[, 1] / eta0[, 2]
+    lambda <- eta0[, 1]
+    sigma <- eta0[, 3]
     shape <- 1 / (lambda * sigma)^2
     yvec <- dgamma(Zvec, shape=shape, rate=shape) * abs(dZ.dy)
 
@@ -416,11 +420,11 @@ deplot.lms.yjn <- function(object,
     if (!length(intersect(object at family@vfamily, c("lms.yjn","lms.yjn2"))))
         warning("I think you've called the wrong function")
 
-    lambda <- eta0[,1]
-    Zvec <- (yeo.johnson(y.arg+object at misc$yoffset, lambda=eta0[,1]) -
-                 eta0[,2]) / eta0[,3]
+    lambda <- eta0[, 1]
+    Zvec <- (yeo.johnson(y.arg+object at misc$yoffset, lambda = eta0[, 1]) -
+                 eta0[, 2]) / eta0[, 3]
     dZ.dy <- dyj.dy.yeojohnson(y.arg+object at misc$yoffset,
-                               lambda=eta0[,1]) / eta0[,3]
+                               lambda = eta0[, 1]) / eta0[, 3]
     yvec <- dnorm(Zvec) * abs(dZ.dy) 
 
     list(newdata=newdata, y=y.arg, density=yvec)
@@ -439,7 +443,7 @@ deplot.default <- function(object, ...) {
 "deplot.vglm" <- function(object, Attach= TRUE, ...) {
     LL <- length(object at family@vfamily)
     newcall = paste("deplot.", object at family@vfamily[LL], 
-                    "(object, ...)", sep="")
+                    "(object, ...)", sep = "")
     newcall = parse(text=newcall)[[1]]
 
     if (Attach) {
@@ -452,7 +456,7 @@ deplot.default <- function(object, ...) {
 
 
 "deplot.lmscreg" <- function(object,
-                       newdata=NULL,
+                       newdata = NULL,
                        x0,
                        y.arg, plot.it= TRUE, ...) {
 
@@ -473,7 +477,7 @@ deplot.default <- function(object, ...) {
     eta0 <- eta2theta(eta0, object at misc$link)   # lambda, mu, sigma
 
     newcall = paste("deplot.", object at family@vfamily[1], 
-                    "(object, newdata, y.arg=y.arg, eta0=eta0)", sep="")
+                    "(object, newdata, y.arg=y.arg, eta0 = eta0)", sep = "")
     newcall = parse(text=newcall)[[1]]
     answer = eval(newcall)
 
@@ -488,10 +492,10 @@ deplot.default <- function(object, ...) {
 plotdeplot.lmscreg <- function(answer,
                            y.arg,
                            add.arg= FALSE,
-                           xlab="", ylab="density",
-                           xlim=NULL, ylim=NULL,
-                           llty.arg=par()$lty, col.arg=par()$col,
-                           llwd.arg=par()$lwd, ...)
+                           xlab = "", ylab = "density",
+                           xlim = NULL, ylim = NULL,
+                           llty.arg = par()$lty, col.arg = par()$col,
+                           llwd.arg = par()$lwd, ...)
 {
 
     yvec <- answer$density
@@ -503,15 +507,15 @@ plotdeplot.lmscreg <- function(answer,
         if (!is.numeric(ylim))
             ylim <- c(min(yvec), max(yvec))
         matplot(x=xx, y=yvec,
-                xlab=xlab, ylab=ylab, type="n", 
+                xlab=xlab, ylab=ylab, type = "n", 
                 xlim=xlim, ylim=ylim, ...)
     }
 
     temp <- cbind(xx, yvec)
-    temp <- temp[sort.list(temp[,1]),]
-    index <- !duplicated(temp[,1])
-    lines(temp[index,1], temp[index,2],
-          lty=llty.arg, col=col.arg, err=-1, lwd=llwd.arg)
+    temp <- temp[sort.list(temp[, 1]),]
+    index <- !duplicated(temp[, 1])
+    lines(temp[index, 1], temp[index, 2],
+          lty = llty.arg, col=col.arg, err=-1, lwd = llwd.arg)
 
     invisible(answer)
 }
@@ -524,10 +528,10 @@ if (TRUE) {
     if (!isGeneric("deplot"))
     setGeneric("deplot", function(object, ...) standardGeneric("deplot"))
 
-    setMethod("deplot", signature(object="vglm"),
+    setMethod("deplot", signature(object = "vglm"),
               function(object, ...) 
               invisible(deplot.vglm(object, ...)))
-    setMethod("deplot", signature(object="vgam"),
+    setMethod("deplot", signature(object = "vgam"),
               function(object, ...) 
               invisible(deplot.vglm(object, ...)))
 }
@@ -540,20 +544,20 @@ if (TRUE) {
     if (!isGeneric("cdf"))
     setGeneric("cdf", function(object, ...) standardGeneric("cdf"))
 
-    setMethod("cdf", signature(object="vglm"),
+    setMethod("cdf", signature(object = "vglm"),
               function(object, ...) 
               cdf.vglm(object, ...))
 
-    setMethod("cdf", signature(object="vgam"),
+    setMethod("cdf", signature(object = "vgam"),
               function(object, ...) 
               cdf.vglm(object, ...))
 }
 
 
-"cdf.vglm" <- function(object, newdata=NULL, Attach= FALSE, ...) {
+"cdf.vglm" <- function(object, newdata = NULL, Attach= FALSE, ...) {
     LL <- length(object at family@vfamily)
     newcall = paste("cdf.", object at family@vfamily[LL], 
-                    "(object, newdata, ...)", sep="")
+                    "(object, newdata, ...)", sep = "")
     newcall = parse(text=newcall)[[1]]
 
     if (Attach) {
@@ -566,7 +570,7 @@ if (TRUE) {
 
 
 "cdf.lmscreg" <- function(object,
-                          newdata=NULL, ...) {
+                          newdata = NULL, ...) {
 
 
 
@@ -579,7 +583,7 @@ if (TRUE) {
     y = vgety(object, newdata)   # Includes yoffset 
 
     newcall = paste("cdf.", object at family@vfamily[1], 
-                    "(y, eta0, ... )", sep="")
+                    "(y, eta0, ... )", sep = "")
     newcall = parse(text=newcall)[[1]]
     eval(newcall)
 }
@@ -588,8 +592,8 @@ if (TRUE) {
 
 cdf.lms.bcn <- function(y, eta0)
 {
-    Zvec <- ((y/eta0[,2])^(eta0[,1]) -1) / (eta0[,1] * eta0[,3])
-    Zvec[abs(eta0[,3]) < 1e-5] = log(y/eta0[,2]) / eta0[,3] # Singularity at 0
+    Zvec <- ((y/eta0[, 2])^(eta0[, 1]) -1) / (eta0[, 1] * eta0[, 3])
+    Zvec[abs(eta0[, 3]) < 1e-5] = log(y/eta0[, 2]) / eta0[, 3] # Singularity at 0
     ans = c(pnorm(Zvec))
     names(ans) = dimnames(eta0)[[1]]
     ans
@@ -598,10 +602,10 @@ cdf.lms.bcn <- function(y, eta0)
 
 cdf.lms.bcg <- function(y, eta0)
 {
-    shape = 1 / (eta0[,1] * eta0[,3])^2
-    Gvec = shape * (y/eta0[,2])^(eta0[,1])
+    shape = 1 / (eta0[, 1] * eta0[, 3])^2
+    Gvec = shape * (y/eta0[, 2])^(eta0[, 1])
     ans = c(pgamma(Gvec, sh=shape))
-    ans[eta0[,1] < 0] = 1-ans
+    ans[eta0[, 1] < 0] = 1-ans
     names(ans) = dimnames(eta0)[[1]]
     ans
 }
@@ -611,14 +615,14 @@ cdf.lms.yjn <- function(y, eta0)
 {
 
 
-    Zvec = (yeo.johnson(y, eta0[,1]) - eta0[,2])/eta0[,3]
+    Zvec = (yeo.johnson(y, eta0[, 1]) - eta0[, 2])/eta0[, 3]
     ans = c(pnorm(Zvec))
     names(ans) = dimnames(eta0)[[1]]
     ans
 }
 
 
-vgety = function(object, newdata=NULL) {
+vgety = function(object, newdata = NULL) {
 
     y = if (length(newdata)) {
         yname = dimnames(attr(terms(object at terms),"factors"))[[1]][1]
@@ -636,11 +640,11 @@ vgety = function(object, newdata=NULL) {
 
 
 
-"rlplot.vglm" <- function(object, Attach= TRUE, ...) {
+"rlplot.vglm" <- function(object, Attach = TRUE, ...) {
 
     LL <- length(object at family@vfamily)
     newcall = paste("rlplot.", object at family@vfamily[LL],
-                    "(object, ...)", sep="")
+                    "(object, ...)", sep = "")
     newcall = parse(text=newcall)[[1]]
 
     if (Attach) {
@@ -658,62 +662,72 @@ vgety = function(object, newdata=NULL) {
 
 
     newcall = paste("rlplot.", object at family@vfamily[1],
-                    "(object=object, ... )", sep="")
-    newcall = parse(text=newcall)[[1]]
+                    "(object = object, ... )", sep = "")
+    newcall = parse(text = newcall)[[1]]
     eval(newcall)
 }
     
+    
  
 rlplot.egev <-
 rlplot.gev <-
-    function(object, plot.it=TRUE,
+    function(object, plot.it = TRUE,
              probability = c((1:9)/100, (1:9)/10, 0.95, 0.99, 0.995, 0.999),
-             add.arg=FALSE,
-             xlab="Return Period",ylab="Return Level", main="Return Level Plot",
-             pch=par()$pch, pcol.arg=par()$col, pcex=par()$cex,
-             llty.arg=par()$lty, lcol.arg=par()$col, llwd.arg=par()$lwd,
-             slty.arg=par()$lty, scol.arg=par()$col, slwd.arg=par()$lwd,
-             ylim=NULL,
-             Log = TRUE,
+             add.arg = FALSE,
+             xlab = "Return Period",ylab = "Return Level", main = "Return Level Plot",
+             pch = par()$pch, pcol.arg = par()$col, pcex = par()$cex,
+             llty.arg = par()$lty, lcol.arg = par()$col, llwd.arg = par()$lwd,
+             slty.arg = par()$lty, scol.arg = par()$col, slwd.arg = par()$lwd,
+             ylim = NULL,
+             log = TRUE,
              CI = TRUE,
              epsilon = 1.0e-05,
              ...)
 {
-    if (!is.Numeric(epsilon, allow=1) || abs(epsilon) > 0.10)
+    log.arg = log
+    rm(log)
+    if (!is.Numeric(epsilon, allow = 1) || abs(epsilon) > 0.10)
         stop("bad input for 'epsilon'")
-    if (!is.Numeric(probability, posit=TRUE) || max(probability) >= 1 ||
+    if (!is.Numeric(probability, posit = TRUE) ||
+        max(probability) >= 1 ||
        length(probability) < 5)
         stop("bad input for 'probability'")
-    if (!is.logical(Log) || length(Log) != 1)
-        stop("bad input for argument 'Log'")
+
+    if (!is.logical(log.arg) || length(log.arg) != 1)
+        stop("bad input for argument 'log'")
     if (!is.logical(CI) || length(CI) != 1)
         stop("bad input for argument 'CI'")
+
     if (!object at misc$intercept.only)
-       stop("object must be an intercept-only fit, i.e., y ~ 1 is the response")
+       stop("object must be an intercept-only fit, ",
+            "i.e., y ~ 1 is the response")
 
     extra2 = object at extra
     extra2$percentiles = 100 * probability  # Overwrite
-    zp = object at family@inverse(eta=predict(object)[1:2,], extra=extra2)[1,]
+    zp = object at family@inverse(eta = predict(object)[1:2,],
+                               extra = extra2)[1,]
     yp = -log(probability)
-    ydata = sort(object at y[,1])
+    ydata = sort(object at y[, 1])
     n = object at misc$n
-    if (Log) {
+    if (log.arg) {
         if (!add.arg)
-            plot(log(1/yp), zp, log="", type="n",
+            plot(log(1/yp), zp, log = "", type = "n",
                  ylim = if (length(ylim)) ylim else
                       c(min(c(ydata, zp)), max(c(ydata, zp))),
                  xlab=xlab, ylab=ylab, main=main, ...)
-        points(log(-1/log((1:n)/(n+1))), ydata, col=pcol.arg, pch=pch, cex=pcex)
+        points(log(-1/log((1:n)/(n+1))), ydata, col = pcol.arg,
+               pch = pch, cex = pcex)
         lines(log(1/yp), zp,
-              lwd=llwd.arg, col=lcol.arg, lty=llty.arg)
+              lwd = llwd.arg, col = lcol.arg, lty = llty.arg)
     } else {
         if (!add.arg)
-            plot(1/yp, zp, log="x", type="n",
+            plot(1/yp, zp, log = "x", type = "n",
                  ylim = if (length(ylim)) ylim else
                       c(min(c(ydata, zp)), max(c(ydata, zp))),
                  xlab=xlab, ylab=ylab, main=main, ...)
-        points(-1/log((1:n)/(n+1)), ydata, col=pcol.arg, pch=pch, cex=pcex)
-        lines(1/yp, zp, lwd=llwd.arg, col=lcol.arg, lty=llty.arg)
+        points(-1/log((1:n)/(n+1)), ydata, col = pcol.arg,
+               pch = pch, cex = pcex)
+        lines(1/yp, zp, lwd = llwd.arg, col = lcol.arg, lty = llty.arg)
     }
 
     if (CI) {
@@ -723,27 +737,29 @@ rlplot.gev <-
         earg = object at misc$earg
         M = object at misc$M
         for(ii in 1:M) {
-            TTheta = eta[,ii]
+            TTheta = eta[, ii]
             use.earg = earg[[ii]]
             newcall = paste(Links[ii],
-                      "(theta=TTheta, earg=use.earg, inverse=TRUE)", sep="")
+                      "(theta=TTheta, earg=use.earg, inverse = TRUE)",
+                       sep = "")
             newcall = parse(text=newcall)[[1]]
             uteta = eval(newcall) # Theta, the untransformed parameter
             uteta = uteta + epsilon  # perturb it
             newcall = paste(Links[ii],
-                            "(theta=uteta, earg=use.earg)", sep="")
+                            "(theta=uteta, earg=use.earg)", sep = "")
             newcall = parse(text=newcall)[[1]]
             teta = eval(newcall) # The transformed parameter
             peta = eta
-            peta[,ii] = teta
-            zpp[,ii] = object at family@inverse(eta=peta, extra=extra2)[1,]
-            zpp[,ii] = (zpp[,ii] - zp) / epsilon  # On the transformed scale
+            peta[, ii] = teta
+            zpp[, ii] = object at family@inverse(eta = peta,
+                                              extra = extra2)[1,]
+            zpp[, ii] = (zpp[, ii] - zp) / epsilon # On the transformed scale
         }
-        VCOV = vcovvlm(object, untransform=TRUE)
+        VCOV = vcovvlm(object, untransform = TRUE)
         v = numeric(nrow(zpp))
         for(ii in 1:nrow(zpp))
             v[ii] = t(as.matrix(zpp[ii,])) %*% VCOV %*% as.matrix(zpp[ii,])
-        if (Log) {
+        if (log.arg) {
             lines(log(1/yp), zp - 1.96 * sqrt(v),
                   lwd=slwd.arg, col=scol.arg, lty=slty.arg)
             lines(log(1/yp), zp + 1.96 * sqrt(v),
@@ -764,8 +780,10 @@ rlplot.gev <-
     invisible(answer)
 }
 
+
 if (!isGeneric("rlplot"))
-    setGeneric("rlplot", function(object, ...) standardGeneric("rlplot"))
+    setGeneric("rlplot",
+               function(object, ...) standardGeneric("rlplot"))
 
 setMethod("rlplot",  "vglm", function(object, ...)
         rlplot.vglm(object, ...))
@@ -776,16 +794,17 @@ setMethod("rlplot",  "vglm", function(object, ...)
 
 
 
-explot.lms.bcn <- function(percentiles=c(25,50,75),
-                           eta=NULL, yoffset=0)
+explot.lms.bcn <- function(percentiles = c(25,50,75),
+                           eta = NULL, yoffset = 0)
 {
 
     lp = length(percentiles)
-    answer <- matrix(as.numeric(NA), nrow(eta), lp, dimnames=list(dimnames(eta)[[1]],
-                     paste(as.character(percentiles), "%", sep="")))
+    answer <- matrix(as.numeric(NA), nrow(eta), lp,
+                     dimnames = list(dimnames(eta)[[1]],
+                     paste(as.character(percentiles), "%", sep = "")))
     for(ii in 1:lp) {
-        answer[,ii] <- eta[,2] * (1+eta[,1] * eta[,3] *
-                        qenorm(percentiles[ii]/100))^(1/eta[,1])
+        answer[, ii] <- eta[, 2] * (1+eta[, 1] * eta[, 3] *
+                        qenorm(percentiles[ii]/100))^(1/eta[, 1])
     }
     answer 
 }
diff --git a/R/rrvglm.R b/R/rrvglm.R
index 088fbc4..f1fd7ca 100644
--- a/R/rrvglm.R
+++ b/R/rrvglm.R
@@ -188,7 +188,7 @@ rrvglm <- function(formula,
                                     fit$misc$predictors.names)
     slot(answer, "predictors") = fit$predictors
     if (length(fit$prior.weights))
-        slot(answer, "prior.weights") = fit$prior.weights
+        slot(answer, "prior.weights") = as.matrix(fit$prior.weights)
 
 
 
diff --git a/R/rrvglm.fit.q b/R/rrvglm.fit.q
index 9e4e6a6..91b45f6 100644
--- a/R/rrvglm.fit.q
+++ b/R/rrvglm.fit.q
@@ -9,14 +9,14 @@
 
 
 rrvglm.fit <- function(x, y, w=rep(1, length(x[, 1])),
-    etastart=NULL, mustart=NULL, coefstart=NULL,
-    offset=0, family,
+    etastart = NULL, mustart = NULL, coefstart = NULL,
+    offset = 0, family,
     control=rrvglm.control(...),
-    criterion="coefficients",
-    qr.arg=FALSE,
-    constraints=NULL,
-    extra=NULL,
-    Terms=Terms, function.name="rrvglm", ...)
+    criterion = "coefficients",
+    qr.arg = FALSE,
+    constraints = NULL,
+    extra = NULL,
+    Terms=Terms, function.name = "rrvglm", ...)
 {
     specialCM = NULL
     post = list()
@@ -52,27 +52,27 @@ rrvglm.fit <- function(x, y, w=rep(1, length(x[, 1])),
             new.crit <- 
                 switch(criterion,
                     coefficients=new.coeffs,
-                    tfun(mu=mu, y=y, w=w, res=FALSE, eta=eta, extra))
+                    tfun(mu=mu, y=y, w=w, res = FALSE, eta=eta, extra))
 
 
 
             if (trace && orig.stepsize == 1) {
                 cat(if(control$Quadratic) "QRR-VGLM" else "RR-VGLM",
                     "   linear loop ", iter, ": ", criterion, "= ")
-                uuuu = switch(criterion, coefficients=
+                UUUU = switch(criterion, coefficients=
                        format(new.crit, dig=round(2-log10(epsilon))),
                        format(round(new.crit, 4)))
                 switch(criterion,
                     coefficients={if(length(new.crit) > 2) cat("\n");
-                       cat(uuuu, fill=TRUE, sep=", ")},
-                    cat(uuuu, fill=TRUE, sep=", "))
+                       cat(UUUU, fill = TRUE, sep = ", ")},
+                    cat(UUUU, fill = TRUE, sep = ", "))
            }
 
             {
                 take.half.step <- (control$half.stepsizing && length(old.coeffs)) && 
                              !control$Quadratic &&
-                             ((orig.stepsize!=1) ||
-                              (criterion!="coefficients" &&
+                             ((orig.stepsize != 1) ||
+                              (criterion != "coefficients" &&
                              (if(minimize.criterion) new.crit > old.crit else
                              new.crit < old.crit)))
                 if (!is.logical(take.half.step))
@@ -98,7 +98,7 @@ rrvglm.fit <- function(x, y, w=rep(1, length(x[, 1])),
 
                         fv <- X_vlm_save %*% new.coeffs
                         if (M > 1)
-                            fv <- matrix(fv, n, M, byrow=TRUE)
+                            fv <- matrix(fv, n, M, byrow = TRUE)
 
                         eta <- fv + offset
 
@@ -111,7 +111,7 @@ rrvglm.fit <- function(x, y, w=rep(1, length(x[, 1])),
                         new.crit <- 
                             switch(criterion,
                                 coefficients=new.coeffs,
-                                tfun(mu=mu,y=y,w=w,res=FALSE,eta=eta,extra))
+                                tfun(mu=mu,y=y,w=w,res = FALSE,eta=eta,extra))
 
                         if ((criterion == "coefficients") || 
                            ( minimize.criterion && new.crit < old.crit) ||
@@ -129,14 +129,14 @@ rrvglm.fit <- function(x, y, w=rep(1, length(x[, 1])),
                         if (trace) {
                        cat(if(control$Quadratic) "QRR-VGLM" else "RR-VGLM",
                     "   linear loop ", iter, ": ", criterion, "= ")
-                            uuuu = switch(criterion, coefficients=
+                            UUUU = switch(criterion, coefficients=
                                   format(new.crit, dig=round(2-log10(epsilon))),
                                   format(round(new.crit, 4)))
 
                             switch(criterion,
                             coefficients={if(length(new.crit) > 2) cat("\n");
-                               cat(uuuu, fill=TRUE, sep=", ")},
-                            cat(uuuu, fill=TRUE, sep=", "))
+                               cat(UUUU, fill = TRUE, sep = ", ")},
+                            cat(UUUU, fill = TRUE, sep = ", "))
                         }
 
                         one.more <- eval(control$convergence)
@@ -161,7 +161,7 @@ rrvglm.fit <- function(x, y, w=rep(1, length(x[, 1])),
                 z = eta + vbacksub(U, tvfor, M, n) - offset # Contains \bI \bnu
 
                 rrr.expression = paste("rrr", control$Algorithm,
-                                       "expression", sep=".")
+                                       "expression", sep = ".")
                 rrr.expression = get(rrr.expression)
                 eval(rrr.expression)
 
@@ -231,7 +231,7 @@ rrvglm.fit <- function(x, y, w=rep(1, length(x[, 1])),
             stop("Dzero argument didn't fully match y-names")
         if (length(index) == M)
             stop("all linear predictors are linear in the ",
-                 "latent variable(s); so set 'Quadratic=FALSE'")
+                 "latent variable(s); so set 'Quadratic = FALSE'")
         rrcontrol$Dzero = control$Dzero = index
     }
 
@@ -292,8 +292,8 @@ rrvglm.fit <- function(x, y, w=rep(1, length(x[, 1])),
                     matrix(rnorm(p2 * Rank, sd=rrcontrol$SD.Cinit), p2, Rank)
                 } else
                 .Init.Poisson.QO(ymat=as.matrix(y), 
-                    X1=if (length(colx1.index)) x[, colx1.index, drop=FALSE] else NULL,
-                    X2=x[, colx2.index, drop=FALSE],
+                    X1=if (length(colx1.index)) x[, colx1.index, drop = FALSE] else NULL,
+                    X2=x[, colx2.index, drop = FALSE],
                     Rank=rrcontrol$Rank, trace=rrcontrol$trace,
                     max.ncol.etamat = rrcontrol$Etamat.colmax,
                     Crow1positive=rrcontrol$Crow1positive,
@@ -330,8 +330,8 @@ rrvglm.fit <- function(x, y, w=rep(1, length(x[, 1])),
         xsmall.qrr = tmp500$new.lv.model.matrix 
         B.list = tmp500$constraints # Doesn't change or contain \bI_{Rank} \bnu
         if (modelno == 3 && FALSE) {
-            B.list[[1]] = (B.list[[1]])[,c(TRUE,FALSE),drop=FALSE] # Amat
-            B.list[[2]] = (B.list[[2]])[,c(TRUE,FALSE),drop=FALSE] # D
+            B.list[[1]] = (B.list[[1]])[,c(TRUE,FALSE),drop = FALSE] # Amat
+            B.list[[2]] = (B.list[[2]])[,c(TRUE,FALSE),drop = FALSE] # D
         }
 
         lv.mat = tmp500$lv.mat
@@ -340,7 +340,7 @@ rrvglm.fit <- function(x, y, w=rep(1, length(x[, 1])),
         }
         lm2vlm.model.matrix(xsmall.qrr, B.list, xij=control$xij)
     } else {
-        lv.mat = x[,colx2.index,drop=FALSE] %*% Cmat 
+        lv.mat = x[,colx2.index,drop = FALSE] %*% Cmat 
         lm2vlm.model.matrix(x, Blist, xij=control$xij)
     }
 
@@ -350,7 +350,7 @@ rrvglm.fit <- function(x, y, w=rep(1, length(x[, 1])),
     if (length(coefstart)) {
         eta <- if (ncol(X_vlm_save)>1) X_vlm_save %*% coefstart +
                    offset else X_vlm_save * coefstart + offset
-        eta <- if (M > 1) matrix(eta, ncol=M, byrow=TRUE) else c(eta) 
+        eta <- if (M > 1) matrix(eta, ncol=M, byrow = TRUE) else c(eta) 
 
 
         mu <- family at inverse(eta, extra)
@@ -362,8 +362,8 @@ rrvglm.fit <- function(x, y, w=rep(1, length(x[, 1])),
 
     iter <- 1
     new.crit <- switch(criterion,
-                      coefficients=1,
-                      tfun(mu=mu, y=y, w=w, res=FALSE, eta=eta, extra))
+                      coefficients = 1,
+                      tfun(mu=mu, y=y, w=w, res = FALSE, eta=eta, extra))
     old.crit <- if (minimize.criterion) 10*new.crit+10 else -10*new.crit-10
 
 
@@ -377,7 +377,7 @@ rrvglm.fit <- function(x, y, w=rep(1, length(x[, 1])),
     tvfor <- vforsub(U, as.matrix(deriv.mu), M=M, n=n)
     z <- eta + vbacksub(U, tvfor, M=M, n=n) - offset
 
-    c.list <- list(z=as.double(z), fit=as.double(t(eta)), one.more=TRUE,
+    c.list <- list(z=as.double(z), fit=as.double(t(eta)), one.more = TRUE,
                    coeff=as.double(rep(1,ncol(X_vlm_save))), U=as.double(U),
                    copy_X_vlm=copy_X_vlm,
                    X_vlm = if (copy_X_vlm) as.double(X_vlm_save) else double(3))
@@ -412,7 +412,7 @@ rrvglm.fit <- function(x, y, w=rep(1, length(x[, 1])),
                 tfit <- eval(bf.call)   # tfit$fitted.values is n x M
 
             if (!control$Quadratic) {
-                Cmat = tfit$mat.coef[colx2.index,,drop=FALSE] %*%
+                Cmat = tfit$mat.coef[colx2.index,,drop = FALSE] %*%
                        Amat %*% solve(t(Amat) %*% Amat)
                 rrcontrol$Ainit = control$Ainit = Amat  # Good for valt()
                 rrcontrol$Cinit = control$Cinit = Cmat  # Good for valt()
@@ -466,7 +466,7 @@ rrvglm.fit <- function(x, y, w=rep(1, length(x[, 1])),
     if (nice31) {
         R <- matrix(as.numeric(NA), 5, 5)
     } else {
-        R <- tfit$qr$qr[1:ncol_X_vlm, 1:ncol_X_vlm, drop=FALSE]
+        R <- tfit$qr$qr[1:ncol_X_vlm, 1:ncol_X_vlm, drop = FALSE]
         R[lower.tri(R)] <- 0
         attributes(R) <- list(dim=c(ncol_X_vlm, ncol_X_vlm),
                               dimnames=list(cnames, cnames), rank=rank)
@@ -579,7 +579,7 @@ rrvglm.fit <- function(x, y, w=rep(1, length(x[, 1])),
         if (ii != criterion &&
            any(slotNames(family) == ii) && length(body(slot(family, ii)))) {
                 fit[[ii]] <- crit.list[[ii]] <-
-                (slot(family, ii))(mu=mu, y=y, w=w, res=FALSE, eta=eta, extra)
+                (slot(family, ii))(mu=mu, y=y, w=w, res = FALSE, eta=eta, extra)
         }
     }
 
diff --git a/R/summary.vlm.q b/R/summary.vlm.q
index 0ff5ccb..7ee03cd 100644
--- a/R/summary.vlm.q
+++ b/R/summary.vlm.q
@@ -7,7 +7,7 @@
 
 
 
-summaryvlm <- function(object, correlation=FALSE, dispersion=NULL)
+summaryvlm <- function(object, correlation = FALSE, dispersion = NULL)
 {
 
 
@@ -23,7 +23,7 @@ summaryvlm <- function(object, correlation=FALSE, dispersion=NULL)
 
     coef <- object at coefficients
     cnames <- names(coef)
-    presid = residualsvlm(object, type="pearson") # NULL if pooled.weight
+    presid = residualsvlm(object, type = "pearson") # NULL if pooled.weight
 
     if (any(is.na(coef))) {
         warning(paste("Some NAs in the coefficients---no summary",
@@ -107,7 +107,7 @@ summaryvlm <- function(object, correlation=FALSE, dispersion=NULL)
 
 
 
-printsummary.vlm <- function(x, digits=NULL, quote=TRUE, prefix="")
+printsummary.vlm <- function(x, digits = NULL, quote = TRUE, prefix = "")
 {
 
 
@@ -151,12 +151,12 @@ printsummary.vlm <- function(x, digits=NULL, quote=TRUE, prefix="")
     if (length(x at misc$predictors.names))
     if (M==1) {
         cat("\nName of response:",
-            paste(x at misc$predictors.names, collapse=", "), "\n") 
+            paste(x at misc$predictors.names, collapse = ", "), "\n") 
     } else {
-        uuu = paste(x at misc$predictors.names, collapse=", ")
-        uuu = x at misc$predictors.names
+        UUU = paste(x at misc$predictors.names, collapse = ", ")
+        UUU = x at misc$predictors.names
         cat("\nNames of responses:\n") 
-        cat(uuu, fill=TRUE, sep=", ")
+        cat(UUU, fill = TRUE, sep = ", ")
     }
 
     if (!is.null(x at rss))
@@ -170,7 +170,7 @@ printsummary.vlm <- function(x, digits=NULL, quote=TRUE, prefix="")
             ll <- lower.tri(correl)
             correl[ll] <- format(round(correl[ll], digits))
             correl[!ll] <- ""
-            print(correl[-1, -ncol_X_vlm, drop=FALSE], quote=FALSE, digits=digits)
+            print(correl[-1, -ncol_X_vlm, drop = FALSE], quote = FALSE, digits=digits)
         }
     }
     invisible(NULL)
diff --git a/R/uqo.R b/R/uqo.R
index ca0ba0f..9585148 100644
--- a/R/uqo.R
+++ b/R/uqo.R
@@ -228,7 +228,7 @@ uqo  <- function(formula,
         }
     } else list() # R-1.5.0
     if (length(fit$prior.weights))
-        slot(answer, "prior.weights") = fit$prior.weights
+        slot(answer, "prior.weights") = as.matrix(fit$prior.weights)
 
     answer
 }
@@ -532,7 +532,7 @@ uqo.fit <- function(x, y, w=rep(1, len=nrow(x)),
     othint = c(Rank, control$EqualTol, pstar, dimw=1, inited=290, # other ints
                modelno, maxitl=control$maxitl, actnits=0, twice=0, p1star,
                p2star, nice31, lenbeta, control$ITolerances, control$trace,
-               p1, p2, control$method.init)
+               p1, p2, control$imethod)
     othdbl = c(small=control$SmallNo, fseps=control$epsilon,
                .Machine$double.eps,
                kinit=rep(control$Kinit, len=NOS),
diff --git a/R/vgam.R b/R/vgam.R
index e3acf18..87c1a5b 100644
--- a/R/vgam.R
+++ b/R/vgam.R
@@ -235,7 +235,7 @@ vgam <- function(formula,
                                     fit$misc$predictors.names)
     slot(answer, "predictors") = fit$predictors
     if (length(fit$prior.weights))
-        slot(answer, "prior.weights") = fit$prior.weights
+        slot(answer, "prior.weights") = as.matrix(fit$prior.weights)
 
 
     if (nonparametric) {
diff --git a/R/vgam.control.q b/R/vgam.control.q
index ac4b5a2..41ed049 100644
--- a/R/vgam.control.q
+++ b/R/vgam.control.q
@@ -4,18 +4,18 @@
 
 
 
-vgam.control <- function(all.knots=FALSE,
-                         bf.epsilon=1e-7,
-                         bf.maxit=30, 
-                         checkwz=TRUE,
+vgam.control <- function(all.knots = FALSE,
+                         bf.epsilon = 1e-7,
+                         bf.maxit = 30, 
+                         checkwz = TRUE,
                          criterion = names(.min.criterion.VGAM), 
-                         epsilon=1e-7,
-                         maxit=30,
+                         epsilon = 1e-7,
+                         maxit = 30,
                          na.action=na.fail,
-                         nk=NULL,
-                         save.weight=FALSE,
-                         se.fit=TRUE,
-                         trace=FALSE,
+                         nk = NULL,
+                         save.weight = FALSE,
+                         se.fit = TRUE,
+                         trace = FALSE,
                          wzepsilon = .Machine$double.eps^0.75,
                          ...) {
 
@@ -25,31 +25,31 @@ vgam.control <- function(all.knots=FALSE,
 
     if (mode(criterion) != "character" && mode(criterion) != "name")
         criterion <- as.character(substitute(criterion))
-    criterion <- pmatch(criterion[1], names(.min.criterion.VGAM), nomatch=1)
+    criterion <- pmatch(criterion[1], names(.min.criterion.VGAM), nomatch = 1)
     criterion <- names(.min.criterion.VGAM)[criterion]
 
     if (!is.logical(checkwz) || length(checkwz) != 1)
-        stop("bad input for 'checkwz'")
-    if (!is.Numeric(wzepsilon, allow=1, positive=TRUE))
-        stop("bad input for 'wzepsilon'")
+        stop("bad input for argument 'checkwz'")
+    if (!is.Numeric(wzepsilon, allow = 1, positive = TRUE))
+        stop("bad input for argument 'wzepsilon'")
 
     if (length(all.knots) > 1)
         warning("all.knots should be of length 1; using first value only")
-    if (!is.Numeric(bf.epsilon, allow=1, posit=TRUE)) {
-        warning("bad input for 'bf.epsilon'; using 0.00001 instead")
+    if (!is.Numeric(bf.epsilon, allow = 1, posit = TRUE)) {
+        warning("bad input for argument 'bf.epsilon'; using 0.00001 instead")
         bf.epsilon <- 0.00001
     }
-    if (!is.Numeric(bf.maxit, allow=1, posit=TRUE, integ=TRUE)) {
-        warning("bad input for 'bf.maxit'; using 20 instead")
+    if (!is.Numeric(bf.maxit, allow = 1, posit = TRUE, integ = TRUE)) {
+        warning("bad input for argument 'bf.maxit'; using 20 instead")
         bf.maxit <- 20
     }
-    if (!is.Numeric(epsilon, allow=1, posit=TRUE)) {
-        warning("bad input for 'epsilon'; using 0.0001 instead")
+    if (!is.Numeric(epsilon, allow = 1, posit = TRUE)) {
+        warning("bad input for argument 'epsilon'; using 0.0001 instead")
         epsilon <- 0.0001
     }
-    if (!is.Numeric(maxit, allow=1, posit=TRUE, integ=TRUE)) {
-        warning("bad input for 'maxit'; using 20 instead")
-        maxit <- 20
+    if (!is.Numeric(maxit, allow = 1, posit = TRUE, integ = TRUE)) {
+        warning("bad input for argument 'maxit'; using 30 instead")
+        maxit <- 30
     }
 
     convergence <- expression({
@@ -59,19 +59,19 @@ vgam.control <- function(all.knots=FALSE,
         abs(old.crit-new.crit)/(abs(old.crit)+epsilon) > epsilon && iter<maxit)
     })
 
-    list(all.knots=as.logical(all.knots)[1],
-         bf.epsilon=bf.epsilon, 
-         bf.maxit=bf.maxit, 
-         checkwz=checkwz,
-         convergence=convergence,
-         criterion=criterion,
-         epsilon=epsilon, 
-         maxit=maxit, 
+    list(all.knots = as.logical(all.knots)[1],
+         bf.epsilon = bf.epsilon, 
+         bf.maxit = bf.maxit, 
+         checkwz = checkwz,
+         convergence = convergence,
+         criterion = criterion,
+         epsilon = epsilon, 
+         maxit = maxit, 
          nk=nk,
          min.criterion = .min.criterion.VGAM,
-         save.weight=as.logical(save.weight)[1],
-         se.fit=as.logical(se.fit)[1],
-         trace=as.logical(trace)[1],
+         save.weight = as.logical(save.weight)[1],
+         se.fit = as.logical(se.fit)[1],
+         trace = as.logical(trace)[1],
          wzepsilon = wzepsilon)
 }
 
@@ -96,16 +96,16 @@ vgam.nlchisq <- function(qr, resid, wz, smomat, deriv, U, smooth.labels,
         index <- (ptr+1):(ptr+ncol(cmat))
 
         for(jay in index) {
-            yy <- t(cmat[,jay-ptr,drop=FALSE])
-            yy <- kronecker(smomat[,jay,drop=FALSE], yy)  # n x M
-            Us <- mux22(U, yy, M=M, upper=TRUE, as.matrix=TRUE)  # n * M
+            yy <- t(cmat[,jay-ptr,drop = FALSE])
+            yy <- kronecker(smomat[,jay,drop = FALSE], yy)  # n x M
+            Us <- mux22(U, yy, M = M, upper = TRUE, as.matrix = TRUE)  # n * M
 
-            Uss <- matrix(c(t(Us)), nrow=n*M, ncol=1)
+            Uss <- matrix(c(t(Us)), nrow=n*M, ncol = 1)
 
             Rsw <- qr.resid(qr, Uss)
 
-            vRsw <- matrix(Rsw, nrow=n, ncol=M, byrow=TRUE)
-            newans <- vbacksub(U, t(vRsw), M=M, n=n)
+            vRsw <- matrix(Rsw, nrow=n, ncol=M, byrow = TRUE)
+            newans <- vbacksub(U, t(vRsw), M = M, n=n)
 
             ans[jay] <- sum(vRsw^2 + 2 * newans * deriv)
 
diff --git a/R/vgam.fit.q b/R/vgam.fit.q
index e089dcd..b0ce491 100644
--- a/R/vgam.fit.q
+++ b/R/vgam.fit.q
@@ -6,11 +6,11 @@
 
 vgam.fit <- function(x, y, w, mf,
         etastart, mustart, coefstart,
-        offset, family, control, criterion="coefficients",
-        constraints=NULL, extra, qr.arg,
+        offset, family, control, criterion = "coefficients",
+        constraints = NULL, extra, qr.arg,
         Terms,
         nonparametric, smooth.labels,
-        function.name="vgam", ...)
+        function.name = "vgam", ...)
 {
     specialCM = NULL
     post = list()
@@ -49,18 +49,18 @@ vgam.fit <- function(x, y, w, mf,
 
             new.crit <- switch(criterion,
                                coefficients=new.coeffs,
-                        tfun(mu=mu, y=y, w=w, res=FALSE, eta=eta, extra))
+                        tfun(mu=mu, y=y, w=w, res = FALSE, eta=eta, extra))
             if (trace) {
                 cat("VGAM ", bf, " loop ", iter, ": ", criterion, "= ")
 
-                uuuu = switch(criterion, coefficients=
+                UUUU = switch(criterion, coefficients=
                               format(new.crit, dig=round(2-log10(epsilon))),
                               format(round(new.crit, 4)))
 
                 switch(criterion,
                        coefficients={if(length(new.crit) > 2) cat("\n");
-                       cat(uuuu, fill=TRUE, sep=", ")},
-                       cat(uuuu, fill=TRUE, sep=", "))
+                       cat(UUUU, fill = TRUE, sep = ", ")},
+                       cat(UUUU, fill = TRUE, sep = ", "))
             }
 
                 one.more <- eval(control$convergence)
@@ -149,20 +149,20 @@ vgam.fit <- function(x, y, w, mf,
                 "bf.maxit, bf.epsilon, trace, se=se.fit, X_vlm_save, ",
                 "Blist, ncolBlist, M=M, qbig=qbig, Umat=U, ",
                 "all.knots=control$all.knots, nk=control$nk)",
-                sep=""))[[1]]
+                sep = ""))[[1]]
 
         qbig <- sum(ncolBlist[smooth.labels])  # Number of component funs
         smomat <- matrix(0, n, qbig)
         dy <- if (is.matrix(y)) dimnames(y)[[1]] else names(y)
         d2 <- if (is.null(predictors.names))
-            paste("(Additive predictor ",1:M,")", sep="") else
+            paste("(Additive predictor ",1:M,")", sep = "") else
             predictors.names
         dimnames(smomat) <- list(dy, vlabel(smooth.labels,
               ncolBlist[smooth.labels], M))
 
         tfit <- list(smomat = smomat, smooth.frame = smooth.frame)
     } else {
-        bf.call <- expression(vlm.wfit(xmat=X_vlm_save, z, Blist=NULL, U=U,
+        bf.call <- expression(vlm.wfit(xmat=X_vlm_save, z, Blist = NULL, U=U,
                                        matrix.out = FALSE, is.vlmX = TRUE,
                                        qr = qr.arg, xij = NULL))
         bf <- "vlm.wfit"
@@ -174,7 +174,7 @@ vgam.fit <- function(x, y, w, mf,
     if (length(coefstart)) {
         eta <- if (ncol(X_vlm_save) > 1) X_vlm_save %*% coefstart +
                    offset else X_vlm_save * coefstart + offset
-        eta <- if (M > 1) matrix(eta, ncol=M, byrow=TRUE) else c(eta)
+        eta <- if (M > 1) matrix(eta, ncol=M, byrow = TRUE) else c(eta)
         mu <- family at inverse(eta, extra)
     }
 
@@ -186,7 +186,7 @@ vgam.fit <- function(x, y, w, mf,
     iter <- 1
     new.crit <- switch(criterion,
                        coefficients=1,
-                       tfun(mu=mu, y=y, w=w, res=FALSE, eta=eta, extra))
+                       tfun(mu=mu, y=y, w=w, res = FALSE, eta=eta, extra))
     old.crit <- if (minimize.criterion) 10*new.crit+10 else -10*new.crit-10
 
     deriv.mu <- eval(family at deriv)
@@ -200,7 +200,7 @@ vgam.fit <- function(x, y, w, mf,
 
     c.list <- list(wz=as.double(wz), z=as.double(z),
                    fit=as.double(t(eta)),
-                   one.more=TRUE, U=as.double(U),
+                   one.more = TRUE, U=as.double(U),
                    coeff=as.double(rep(1,ncol(X_vlm_save))))
 
 
@@ -245,7 +245,7 @@ vgam.fit <- function(x, y, w, mf,
             stop("rank < ncol(x) is bad")
     } else rank <- ncol(x)
 
-    R <- tfit$qr$qr[1:ncol_X_vlm, 1:ncol_X_vlm, drop=FALSE]
+    R <- tfit$qr$qr[1:ncol_X_vlm, 1:ncol_X_vlm, drop = FALSE]
     R[lower.tri(R)] <- 0
     attributes(R) <- list(dim=c(ncol_X_vlm, ncol_X_vlm),
                           dimnames=list(cnames, cnames), rank=rank)
@@ -304,7 +304,7 @@ vgam.fit <- function(x, y, w, mf,
             list(yn, predictors.names)
 
     NewBlist <- process.constraints(constraints, x, M, specialCM=specialCM,
-                                    by.col=FALSE)
+                                    by.col = FALSE)
 
     misc <- list(
         colnames.x = xn,
@@ -349,7 +349,7 @@ vgam.fit <- function(x, y, w, mf,
             any(slotNames(family) == ii) &&
             length(body(slot(family, ii)))) {
                 fit[[ii]] <- crit.list[[ii]] <- (slot(family, ii))(mu=mu,
-                             y=y, w=w, res=FALSE, eta=eta, extra)
+                             y=y, w=w, res = FALSE, eta=eta, extra)
         }
     }
 
diff --git a/R/vglm.R b/R/vglm.R
index 1273c12..19f1364 100644
--- a/R/vglm.R
+++ b/R/vglm.R
@@ -6,18 +6,18 @@
 
 
 vglm <- function(formula,
-                 family, data=list(), 
-                 weights=NULL, subset=NULL, na.action=na.fail,
-                 etastart=NULL, mustart=NULL, coefstart=NULL,
+                 family, data = list(), 
+                 weights = NULL, subset = NULL, na.action = na.fail,
+                 etastart = NULL, mustart = NULL, coefstart = NULL,
                  control=vglm.control(...), 
-                 offset=NULL, 
-                 method="vglm.fit",
-                 model=FALSE, x.arg=TRUE, y.arg=TRUE,
-                 contrasts=NULL, 
-                 constraints=NULL,
-                 extra=list(), 
-                 form2=NULL, 
-                 qr.arg=FALSE, smart=TRUE, ...)
+                 offset = NULL, 
+                 method = "vglm.fit",
+                 model = FALSE, x.arg = TRUE, y.arg = TRUE,
+                 contrasts = NULL, 
+                 constraints = NULL,
+                 extra = list(), 
+                 form2 = NULL, 
+                 qr.arg = FALSE, smart = TRUE, ...)
 {
     dataname <- as.character(substitute(data))  # "list" if no data=
     function.name <- "vglm"
@@ -56,17 +56,17 @@ vglm <- function(formula,
 if (!is.null(form2)) {
     if (!is.null(subset))
       stop("argument 'subset' cannot be used when argument 'form2' is used")
-    retlist = shadowvglm(formula=
+    retlist = shadowvglm(formula =
                  form2,
-                 family=family, data=data,
-                 na.action=na.action,
-                 control=vglm.control(...), 
-                 method=method,
-                 model=model, x.arg=x.arg, y.arg=y.arg,
-                 contrasts=contrasts, 
-                 constraints=constraints,
-                 extra=extra, 
-                 qr.arg=qr.arg)
+                 family = family, data = data,
+                 na.action = na.action,
+                 control = vglm.control(...),
+                 method = method,
+                 model = model, x.arg = x.arg, y.arg = y.arg,
+                 contrasts = contrasts,
+                 constraints = constraints,
+                 extra = extra,
+                 qr.arg = qr.arg)
     Ym2 <- retlist$Ym2
     Xm2 <- retlist$Xm2
 
@@ -87,9 +87,10 @@ if (!is.null(form2)) {
     if (is.null(offset)) 
         offset <- 0 # yyy ???
     w <- model.weights(mf)
-    if (!length(w))
+    if (!length(w)) {
         w <- rep(1, nrow(mf))
-    else if (ncol(as.matrix(w))==1 && any(w < 0))
+    } else
+    if (ncol(as.matrix(w)) == 1 && any(w < 0))
         stop("negative weights not allowed")
 
     if (is.character(family))
@@ -108,16 +109,16 @@ if (!is.null(form2)) {
 
     vglm.fitter <- get(method)
 
-    fit <- vglm.fitter(x=x, y=y, w=w, offset=offset, 
-                Xm2=Xm2, Ym2=Ym2,
-                etastart=etastart, mustart=mustart, coefstart=coefstart,
-                family=family, 
-                control=control,
-                constraints=constraints,
-                criterion=control$criterion,
-                extra=extra,
+    fit <- vglm.fitter(x = x, y = y, w = w, offset = offset,
+                Xm2 = Xm2, Ym2 = Ym2,
+                etastart = etastart, mustart = mustart, coefstart = coefstart,
+                family = family, 
+                control = control,
+                constraints = constraints,
+                criterion = control$criterion,
+                extra = extra,
                 qr.arg = qr.arg,
-                Terms=mt, function.name=function.name, ...)
+                Terms = mt, function.name = function.name, ...)
 
     fit$misc$dataname <- dataname
 
@@ -127,7 +128,7 @@ if (!is.null(form2)) {
     }
 
     answer <-
-    new(Class="vglm", 
+    new(Class = "vglm", 
       "assign"       = attr(x, "assign"),
       "call"         = ocall,
       "coefficients" = fit$coefficients,
@@ -145,9 +146,9 @@ if (!is.null(form2)) {
       "residuals"    = as.matrix(fit$residuals),
       "rss"          = fit$rss,
       "smart.prediction" = as.list(fit$smart.prediction),
-      "terms"        = list(terms=mt))
+      "terms"        = list(terms = mt))
 
-    if (!smart) answer at smart.prediction <- list(smart.arg=FALSE)
+    if (!smart) answer at smart.prediction <- list(smart.arg = FALSE)
 
     if (qr.arg) {
         class(fit$qr) = "list"
@@ -197,7 +198,7 @@ if (!is.null(form2)) {
                                     fit$misc$predictors.names)
     slot(answer, "predictors") = fit$predictors
     if (length(fit$prior.weights))
-        slot(answer, "prior.weights") = fit$prior.weights
+        slot(answer, "prior.weights") = as.matrix(fit$prior.weights)
 
 
     answer
@@ -211,17 +212,17 @@ attr(vglm, "smart") <- TRUE
 
 shadowvglm <-
         function(formula,
-                 family, data=list(), 
-                 weights=NULL, subset=NULL, na.action=na.fail,
-                 etastart=NULL, mustart=NULL, coefstart=NULL,
+                 family, data = list(), 
+                 weights = NULL, subset = NULL, na.action=na.fail,
+                 etastart = NULL, mustart = NULL, coefstart = NULL,
                  control=vglm.control(...), 
-                 offset=NULL, 
-                 method="vglm.fit",
-                 model=FALSE, x.arg=TRUE, y.arg=TRUE,
-                 contrasts=NULL, 
-                 constraints=NULL,
-                 extra=list(), 
-                 qr.arg=FALSE, ...)
+                 offset = NULL, 
+                 method = "vglm.fit",
+                 model = FALSE, x.arg = TRUE, y.arg = TRUE,
+                 contrasts = NULL, 
+                 constraints = NULL,
+                 extra = list(), 
+                 qr.arg = FALSE, ...)
 {
     dataname <- as.character(substitute(data))  # "list" if no data=
     function.name <- "shadowvglm"
diff --git a/R/vglm.control.q b/R/vglm.control.q
index afe87e8..87b9832 100644
--- a/R/vglm.control.q
+++ b/R/vglm.control.q
@@ -14,7 +14,7 @@
 
 
 
-vlm.control <- function(save.weight = TRUE, tol=1e-7, method="qr", 
+vlm.control <- function(save.weight = TRUE, tol = 1e-7, method="qr", 
                         checkwz = TRUE, wzepsilon = .Machine$double.eps^0.75,
                         ...) {
     if (tol <= 0) {
@@ -22,26 +22,26 @@ vlm.control <- function(save.weight = TRUE, tol=1e-7, method="qr",
         tol <- 1e-7
     }
     if (!is.logical(checkwz) || length(checkwz) != 1)
-        stop("bad input for 'checkwz'")
-    if (!is.Numeric(wzepsilon, allow=1, positive = TRUE))
-        stop("bad input for 'wzepsilon'")
+        stop("bad input for argument 'checkwz'")
+    if (!is.Numeric(wzepsilon, allow = 1, positive = TRUE))
+        stop("bad input for argument 'wzepsilon'")
 
     list(save.weight=save.weight, tol=tol, method=method,
-         checkwz=checkwz,
+         checkwz = checkwz,
          wzepsilon = wzepsilon)
 }
 
 
 vglm.control <- function(checkwz = TRUE,
                          criterion = names(.min.criterion.VGAM), 
-                         epsilon=1e-7,
+                         epsilon = 1e-7,
                          half.stepsizing = TRUE,
-                         maxit=30, 
-                         stepsize=1, 
+                         maxit = 30, 
+                         stepsize = 1, 
                          save.weight = FALSE,
                          trace = FALSE,
                          wzepsilon = .Machine$double.eps^0.75,
-                         xij=NULL,
+                         xij = NULL,
                          ...)
 {
 
@@ -49,48 +49,50 @@ vglm.control <- function(checkwz = TRUE,
 
     if (mode(criterion) != "character" && mode(criterion) != "name")
         criterion <- as.character(substitute(criterion))
-    criterion <- pmatch(criterion[1], names(.min.criterion.VGAM), nomatch=1)
+    criterion <- pmatch(criterion[1], names(.min.criterion.VGAM), nomatch = 1)
     criterion <- names(.min.criterion.VGAM)[criterion]
 
 
 
     if (!is.logical(checkwz) || length(checkwz) != 1)
-        stop("bad input for 'checkwz'")
-    if (!is.Numeric(wzepsilon, allow=1, positive = TRUE))
-        stop("bad input for 'wzepsilon'")
+        stop("bad input for argument 'checkwz'")
+    if (!is.Numeric(wzepsilon, allow = 1, positive = TRUE))
+        stop("bad input for argument 'wzepsilon'")
 
     convergence <- expression({
 
 
         switch(criterion,
-        coefficients = if (iter == 1) iter<maxit else (iter<maxit &&
-        max(abs(new.crit - old.crit)/(abs(old.crit)+epsilon)) > epsilon),
-        abs(old.crit-new.crit)/(abs(old.crit)+epsilon) > epsilon && iter<maxit)
+        coefficients = if (iter == 1) iter < maxit else
+          (iter < maxit &&
+           max(abs(new.crit - old.crit) / (abs(old.crit) + epsilon)) > epsilon),
+           abs(old.crit-new.crit) / (abs(old.crit)+epsilon) > epsilon &&
+           iter < maxit)
     })
 
-    if (!is.Numeric(epsilon, allow=1, posit = TRUE)) {
-        warning("bad input for 'epsilon'; using 0.00001 instead")
+    if (!is.Numeric(epsilon, allow = 1, posit = TRUE)) {
+        warning("bad input for argument 'epsilon'; using 0.00001 instead")
         epsilon <- 0.00001
     }
-    if (!is.Numeric(maxit, allow=1, posit = TRUE, integ = TRUE)) {
-        warning("bad input for 'maxit'; using 20 instead")
-        maxit <- 20
+    if (!is.Numeric(maxit, allow = 1, posit = TRUE, integ = TRUE)) {
+        warning("bad input for argument 'maxit'; using 30 instead")
+        maxit <- 30
     }
-    if (!is.Numeric(stepsize, allow=1, posit = TRUE)) {
-        warning("bad input for 'stepsize'; using 1 instead")
+    if (!is.Numeric(stepsize, allow = 1, posit = TRUE)) {
+        warning("bad input for argument 'stepsize'; using 1 instead")
         stepsize <- 1
     }
 
-    list(checkwz=checkwz,
-         convergence=convergence, 
-         criterion=criterion,
-         epsilon=epsilon,
-         half.stepsizing=as.logical(half.stepsizing)[1],
-         maxit=maxit,
+    list(checkwz = checkwz,
+         convergence = convergence, 
+         criterion = criterion,
+         epsilon = epsilon,
+         half.stepsizing = as.logical(half.stepsizing)[1],
+         maxit = maxit,
          min.criterion = .min.criterion.VGAM,
-         save.weight=as.logical(save.weight)[1],
-         stepsize=stepsize,
-         trace=as.logical(trace)[1],
+         save.weight = as.logical(save.weight)[1],
+         stepsize = stepsize,
+         trace = as.logical(trace)[1],
          wzepsilon = wzepsilon,
          xij = if (is(xij, "formula")) list(xij) else xij)
 }
diff --git a/R/vglm.fit.q b/R/vglm.fit.q
index 697d601..c8f2b8b 100644
--- a/R/vglm.fit.q
+++ b/R/vglm.fit.q
@@ -5,19 +5,19 @@
 
 
 vglm.fit <- function(x, y, w=rep(1, length(x[, 1])),
-    Xm2=NULL, Ym2=NULL,
-    etastart=NULL, mustart=NULL, coefstart=NULL,
-    offset=0, family,
+    Xm2 = NULL, Ym2 = NULL,
+    etastart = NULL, mustart = NULL, coefstart = NULL,
+    offset = 0, family,
     control=vglm.control(),
-    criterion="coefficients",
-    qr.arg=FALSE,
-    constraints=NULL,
-    extra=NULL,
-    Terms=Terms, function.name="vglm", ...)
+    criterion = "coefficients",
+    qr.arg = FALSE,
+    constraints = NULL,
+    extra = NULL,
+    Terms=Terms, function.name = "vglm", ...)
 {
     specialCM = NULL
     post = list()
-    check.rank <- TRUE # Set this to false for family functions vppr() etc.
+    check.rank <- TRUE  # Set this to false for family functions vppr() etc.
     nonparametric <- FALSE
     epsilon <- control$epsilon
     maxit <- control$maxit
@@ -47,29 +47,29 @@ vglm.fit <- function(x, y, w=rep(1, length(x[, 1])),
             old.crit <- new.crit
             new.crit <- 
                 switch(criterion,
-                    coefficients=new.coeffs,
-                    tfun(mu=mu, y=y, w=w, res=FALSE, eta=eta, extra))
+                    coefficients = new.coeffs,
+                    tfun(mu = mu, y = y, w = w, res = FALSE, eta = eta, extra))
 
 
-            if (trace && orig.stepsize==1) {
+            if (trace && orig.stepsize == 1) {
                 cat("VGLM    linear loop ", iter, ": ", criterion, "= ")
-                uuuu = 
+                UUUU = 
                 switch(criterion,
-                coefficients=format(new.crit, dig=round(2-log10(epsilon))),
+                coefficients = format(new.crit, dig = round(2-log10(epsilon))),
                 format(round(new.crit, 4)))
 
                     switch(criterion,
-                    coefficients={if(length(new.crit) > 2) cat("\n"); 
-                       cat(uuuu, fill=TRUE, sep=", ")}, 
-                    cat(uuuu, fill=TRUE, sep=", "))
+                    coefficients = {if(length(new.crit) > 2) cat("\n"); 
+                       cat(UUUU, fill = TRUE, sep = ", ")}, 
+                    cat(UUUU, fill = TRUE, sep = ", "))
            }
 
 
             {
-                take.half.step=(control$half.stepsizing &&
+                take.half.step = (control$half.stepsizing &&
                                 length(old.coeffs)) &&
-                             ((orig.stepsize!=1) ||
-                              (criterion!="coefficients" &&
+                             ((orig.stepsize != 1) ||
+                              (criterion != "coefficients" &&
                             (if(minimize.criterion) new.crit > old.crit else
                              new.crit < old.crit)))
                 if (!is.logical(take.half.step))
@@ -95,7 +95,7 @@ vglm.fit <- function(x, y, w=rep(1, length(x[, 1])),
 
                         fv <- X_vlm_save %*% new.coeffs
                         if (M > 1)
-                            fv <- matrix(fv, n, M, byrow=TRUE)
+                            fv <- matrix(fv, n, M, byrow = TRUE)
 
                         eta <- fv + offset
                         mu <- slot(family, "inverse")(eta, extra)
@@ -106,10 +106,10 @@ vglm.fit <- function(x, y, w=rep(1, length(x[, 1])),
 
                         new.crit <- 
                             switch(criterion,
-                                coefficients=new.coeffs,
-                                tfun(mu=mu,y=y,w=w,res=FALSE,eta=eta,extra))
+                                coefficients = new.coeffs,
+                                tfun(mu = mu,y = y,w = w,res = FALSE,eta = eta,extra))
 
-                        if ((criterion=="coefficients") || 
+                        if ((criterion == "coefficients") || 
                            ( minimize.criterion && new.crit < old.crit) ||
                            (!minimize.criterion && new.crit > old.crit))
                             break
@@ -126,16 +126,16 @@ vglm.fit <- function(x, y, w=rep(1, length(x[, 1])),
                             cat("VGLM    linear loop ",
                                 iter, ": ", criterion, "= ")
 
-                            uuuu = switch(criterion,
+                            UUUU = switch(criterion,
                             coefficients = format(new.crit,
-                                dig=round(2-log10(epsilon))),
+                                dig = round(2-log10(epsilon))),
                             format(round(new.crit, 4)))
 
                             switch(criterion,
-                            coefficients={
+                            coefficients = {
                                if(length(new.crit) > 2) cat("\n");
-                               cat(uuuu, fill=TRUE, sep=", ")}, 
-                            cat(uuuu, fill=TRUE, sep=", "))
+                               cat(UUUU, fill = TRUE, sep = ", ")}, 
+                            cat(UUUU, fill = TRUE, sep = ", "))
                         }
 
                         one.more <- eval(control$convergence)
@@ -152,11 +152,11 @@ vglm.fit <- function(x, y, w=rep(1, length(x[, 1])),
                 deriv.mu <- eval(slot(family, "deriv"))
                 wz <- eval(slot(family, "weight"))
                 if (control$checkwz)
-                  wz= checkwz(wz, M=M, trace=trace, wzeps=control$wzepsilon)
+                  wz = checkwz(wz, M = M, trace = trace, wzeps = control$wzepsilon)
 
-                U <- vchol(wz, M=M, n=n, silent=!trace)
-                tvfor <- vforsub(U, as.matrix(deriv.mu), M=M, n=n)
-                z <- eta + vbacksub(U, tvfor, M=M, n=n) - offset
+                U <- vchol(wz, M = M, n = n, silent=!trace)
+                tvfor <- vforsub(U, as.matrix(deriv.mu), M = M, n = n)
+                z <- eta + vbacksub(U, tvfor, M = M, n = n) - offset
 
                 c.list$z <- z
                 c.list$U <- U
@@ -229,7 +229,7 @@ vglm.fit <- function(x, y, w=rep(1, length(x[, 1])),
     if (length(coefstart)) {
         eta <- if (ncol(X_vlm_save)>1) X_vlm_save %*% coefstart +
                    offset else X_vlm_save * coefstart + offset
-        eta <- if (M > 1) matrix(eta, ncol=M, byrow=TRUE) else c(eta) 
+        eta <- if (M > 1) matrix(eta, ncol = M, byrow = TRUE) else c(eta) 
         mu <- slot(family, "inverse")(eta, extra)
     }
 
@@ -240,20 +240,20 @@ vglm.fit <- function(x, y, w=rep(1, length(x[, 1])),
 
     iter <- 1
     new.crit <- switch(criterion,
-                      coefficients=1,
-                      tfun(mu=mu, y=y, w=w, res=FALSE, eta=eta, extra))
+                      coefficients = 1,
+                      tfun(mu = mu, y = y, w = w, res = FALSE, eta = eta, extra))
     old.crit <- if (minimize.criterion) 10*new.crit+10 else -10*new.crit-10
 
     deriv.mu <- eval(slot(family, "deriv"))
     wz <- eval(slot(family, "weight"))
     if (control$checkwz)
-        wz = checkwz(wz, M=M, trace=trace, wzeps=control$wzepsilon)
+        wz = checkwz(wz, M = M, trace = trace, wzeps = control$wzepsilon)
 
-    U <- vchol(wz, M=M, n=n, silent=!trace)
-    tvfor <- vforsub(U, as.matrix(deriv.mu), M=M, n=n)
-    z <- eta + vbacksub(U, tvfor, M=M, n=n) - offset
+    U <- vchol(wz, M = M, n = n, silent=!trace)
+    tvfor <- vforsub(U, as.matrix(deriv.mu), M = M, n = n)
+    z <- eta + vbacksub(U, tvfor, M = M, n = n) - offset
 
-    c.list <- list(z=as.double(z), fit=as.double(t(eta)), one.more=TRUE,
+    c.list <- list(z=as.double(z), fit=as.double(t(eta)), one.more = TRUE,
                    coeff=as.double(rep(1,ncol(X_vlm_save))), U=as.double(U),
                    copy_X_vlm=copy_X_vlm,
                    X_vlm = if (copy_X_vlm) as.double(X_vlm_save) else
@@ -269,9 +269,9 @@ vglm.fit <- function(x, y, w=rep(1, length(x[, 1])),
 
 
 
-    bf.call <- expression(vlm.wfit(xmat=X_vlm_save, z, Blist=NULL, U=U,
-                                   matrix.out=FALSE, is.vlmX=TRUE,
-                                   qr=qr.arg, xij=NULL))
+    bf.call <- expression(vlm.wfit(xmat = X_vlm_save, z, Blist = NULL, U = U,
+                                   matrix.out = FALSE, is.vlmX = TRUE,
+                                   qr = qr.arg, xij = NULL))
 
     while(c.list$one.more) {
         tfit <- eval(bf.call)   # fit$smooth.frame is new
@@ -285,7 +285,7 @@ vglm.fit <- function(x, y, w=rep(1, length(x[, 1])),
         NULL
     }
 
-    if (maxit>1 && iter>=maxit)
+    if (maxit > 1 && iter >= maxit)
         warning("convergence not obtained in ", maxit, " iterations")
 
 
@@ -297,7 +297,7 @@ vglm.fit <- function(x, y, w=rep(1, length(x[, 1])),
     if (length(slot(family, "fini")))
         eval(slot(family, "fini"))
 
-    if (M>1) 
+    if (M > 1)
         tfit$predictors <- matrix(tfit$predictors, n, M)
 
     coefs <- tfit$coefficients
@@ -311,7 +311,7 @@ vglm.fit <- function(x, y, w=rep(1, length(x[, 1])),
     if (check.rank && rank < ncol_X_vlm)
         stop("vglm only handles full-rank models (currently)")
 
-    R <- tfit$qr$qr[1:ncol_X_vlm, 1:ncol_X_vlm, drop=FALSE]
+    R <- tfit$qr$qr[1:ncol_X_vlm, 1:ncol_X_vlm, drop = FALSE]
     R[lower.tri(R)] <- 0
     attributes(R) <- list(dim=c(ncol_X_vlm, ncol_X_vlm),
                           dimnames=list(cnames, cnames), rank=rank)
@@ -328,7 +328,7 @@ vglm.fit <- function(x, y, w=rep(1, length(x[, 1])),
 
 
     residuals <- z - tfit$predictors
-    if (M==1) {
+    if (M == 1) {
         tfit$predictors <- as.vector(tfit$predictors)
         residuals <- as.vector(residuals)
         names(residuals) <- names(tfit$predictors) <- yn
@@ -351,25 +351,25 @@ vglm.fit <- function(x, y, w=rep(1, length(x[, 1])),
 
 
     df.residual <- nrow_X_vlm - rank
-    fit <- list(assign=asgn,
-                coefficients=coefs,
-                constraints=Blist, 
-                df.residual=df.residual,
-                df.total=n*M,
-                effects=effects, 
-                fitted.values=mu,
-                offset=offset, 
-                rank=rank,
-                residuals=residuals,
-                R=R,
-                terms=Terms) # terms: This used to be done in vglm() 
+    fit <- list(assign = asgn,
+                coefficients = coefs,
+                constraints = Blist, 
+                df.residual = df.residual,
+                df.total = n*M,
+                effects = effects, 
+                fitted.values = mu,
+                offset = offset, 
+                rank = rank,
+                residuals = residuals,
+                R = R,
+                terms = Terms) # terms: This used to be done in vglm() 
 
     if (qr.arg) {
         fit$qr <- tfit$qr
         dimnames(fit$qr$qr) <- dnrow_X_vlm
     }
 
-    if (M==1) {
+    if (M == 1) {
         wz <- as.vector(wz)  # Convert wz into a vector
     } # else
     fit$weights <- if (save.weight) wz else NULL
@@ -400,8 +400,8 @@ vglm.fit <- function(x, y, w=rep(1, length(x[, 1])),
         if (ii != criterion &&
             any(slotNames(family) == ii) &&
             length(body(slot(family, ii)))) {
-                fit[[ii]] <- crit.list[[ii]] <- (slot(family, ii))(mu=mu,
-                             y=y, w=w, res=FALSE, eta=eta, extra)
+                fit[[ii]] <- crit.list[[ii]] <- (slot(family, ii))(mu = mu,
+                             y = y, w = w, res = FALSE, eta = eta, extra)
         }
     }
 
@@ -413,18 +413,18 @@ vglm.fit <- function(x, y, w=rep(1, length(x[, 1])),
     if (length(slot(family, "last")))
         eval(slot(family, "last"))
 
-    structure(c(fit, list(predictors=tfit$predictors,
-        contrasts=attr(x, "contrasts"),
-        control=control,
-        crit.list=crit.list,
-        extra=extra,
-        family=family,
-        iter=iter,
-        misc=misc,
-        post=post,
-        rss=tfit$rss,
-        x=x,
-        y=y)),
-        vclass=slot(family, "vfamily"))
+    structure(c(fit, list(predictors = tfit$predictors,
+        contrasts = attr(x, "contrasts"),
+        control = control,
+        crit.list = crit.list,
+        extra = extra,
+        family = family,
+        iter = iter,
+        misc = misc,
+        post = post,
+        rss = tfit$rss,
+        x = x,
+        y = y)),
+        vclass = slot(family, "vfamily"))
 }
 
diff --git a/R/vlm.R b/R/vlm.R
index fdca4f3..c9fbd6d 100644
--- a/R/vlm.R
+++ b/R/vlm.R
@@ -163,7 +163,7 @@ vlm <- function(formula,
 
     if (!smart) answer at smart.prediction <- list(smart.arg=FALSE)
 
-    slot(answer, "prior.weights") = prior.weights
+    slot(answer, "prior.weights") = as.matrix(prior.weights)
 
     if (length(attr(x, "contrasts")))
         slot(answer, "contrasts") = attr(x, "contrasts")
diff --git a/data/alclevels.R b/data/alclevels.R
deleted file mode 100644
index 2ef9cf5..0000000
--- a/data/alclevels.R
+++ /dev/null
@@ -1,22 +0,0 @@
-alclevels <-
-structure(list(Monday = c(121L, 97L, 60L, 55L, 25L, 19L, 13L, 
-20L, 5L, 7L, 7L, 8L, 10L, 9L, 22L, 39L, 28L, 46L, 53L, 74L, 74L, 
-84L, 90L, 110L), Tuesday = c(98L, 92L, 69L, 60L, 38L, 10L, 9L, 
-6L, 8L, 8L, 13L, 10L, 13L, 26L, 41L, 48L, 48L, 59L, 100L, 119L, 
-135L, 154L, 143L, 169L), Wednesday = c(165L, 157L, 107L, 75L, 
-48L, 20L, 9L, 9L, 12L, 14L, 20L, 20L, 8L, 32L, 31L, 62L, 71L, 
-98L, 117L, 155L, 283L, 326L, 345L, 363L), Thursday = c(324L, 
-278L, 229L, 238L, 145L, 56L, 55L, 42L, 29L, 28L, 36L, 32L, 39L, 
-37L, 46L, 69L, 85L, 141L, 185L, 289L, 508L, 610L, 765L, 899L), 
-    Friday = c(827L, 619L, 410L, 401L, 223L, 139L, 70L, 40L, 
-    40L, 38L, 38L, 27L, 37L, 27L, 42L, 59L, 55L, 136L, 223L, 
-    335L, 591L, 866L, 976L, 1265L), Saturday = c(1379L, 1327L, 
-    979L, 693L, 346L, 188L, 155L, 160L, 79L, 44L, 52L, 44L, 73L, 
-    41L, 58L, 75L, 96L, 154L, 236L, 337L, 490L, 754L, 1026L, 
-    1179L), Sunday = c(1332L, 1356L, 1011L, 718L, 410L, 287L, 
-    213L, 200L, 96L, 58L, 69L, 39L, 59L, 45L, 53L, 70L, 95L, 
-    130L, 121L, 146L, 166L, 131L, 114L, 159L)), .Names = c("Monday", 
-"Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"
-), class = "data.frame", row.names = c("0", "1", "2", "3", "4", 
-"5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", 
-"16", "17", "18", "19", "20", "21", "22", "23"))
diff --git a/data/alclevels.rda b/data/alclevels.rda
new file mode 100644
index 0000000..2a0009f
Binary files /dev/null and b/data/alclevels.rda differ
diff --git a/data/alcoff.R b/data/alcoff.R
deleted file mode 100644
index 600d3e1..0000000
--- a/data/alcoff.R
+++ /dev/null
@@ -1,22 +0,0 @@
-alcoff <-
-structure(list(Monday = c(121L, 97L, 60L, 55L, 25L, 19L, 13L, 
-20L, 5L, 7L, 7L, 8L, 10L, 9L, 22L, 39L, 28L, 46L, 53L, 74L, 74L, 
-84L, 90L, 110L), Tuesday = c(98L, 92L, 69L, 60L, 38L, 10L, 9L, 
-6L, 8L, 8L, 13L, 10L, 13L, 26L, 41L, 48L, 48L, 59L, 100L, 119L, 
-135L, 154L, 143L, 169L), Wednesday = c(165L, 157L, 107L, 75L, 
-48L, 20L, 9L, 9L, 12L, 14L, 20L, 20L, 8L, 32L, 31L, 62L, 71L, 
-98L, 117L, 155L, 283L, 326L, 345L, 363L), Thursday = c(324L, 
-278L, 229L, 238L, 145L, 56L, 55L, 42L, 29L, 28L, 36L, 32L, 39L, 
-37L, 46L, 69L, 85L, 141L, 185L, 289L, 508L, 610L, 765L, 899L), 
-    Friday = c(827L, 619L, 410L, 401L, 223L, 139L, 70L, 40L, 
-    40L, 38L, 38L, 27L, 37L, 27L, 42L, 59L, 55L, 136L, 223L, 
-    335L, 591L, 866L, 976L, 1265L), Saturday = c(1379L, 1327L, 
-    979L, 693L, 346L, 188L, 155L, 160L, 79L, 44L, 52L, 44L, 73L, 
-    41L, 58L, 75L, 96L, 154L, 236L, 337L, 490L, 754L, 1026L, 
-    1179L), Sunday = c(1332L, 1356L, 1011L, 718L, 410L, 287L, 
-    213L, 200L, 96L, 58L, 69L, 39L, 59L, 45L, 53L, 70L, 95L, 
-    130L, 121L, 146L, 166L, 131L, 114L, 159L)), .Names = c("Monday", 
-"Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"
-), class = "data.frame", row.names = c("0", "1", "2", "3", "4", 
-"5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", 
-"16", "17", "18", "19", "20", "21", "22", "23"))
diff --git a/data/alcoff.rda b/data/alcoff.rda
new file mode 100644
index 0000000..291d0e2
Binary files /dev/null and b/data/alcoff.rda differ
diff --git a/data/auuc.R b/data/auuc.R
deleted file mode 100644
index e3d9beb..0000000
--- a/data/auuc.R
+++ /dev/null
@@ -1,6 +0,0 @@
-"auuc" <-
-structure(list(Commerce = c(446, 937, 311, 49), Arts = c(895, 
-1834, 805, 157), SciEng = c(496, 994, 430, 62), Law = c(170, 
-246, 95, 15), Medicine = c(184, 198, 48, 9)), .Names = c("Commerce", 
-"Arts", "SciEng", "Law", "Medicine"), row.names = c("SES1", "SES2", 
-"SES3", "SES4"), class = "data.frame")
diff --git a/data/auuc.rda b/data/auuc.rda
new file mode 100644
index 0000000..7761c87
Binary files /dev/null and b/data/auuc.rda differ
diff --git a/data/azprocedure.R b/data/azprocedure.R
deleted file mode 100644
index 9b6f457..0000000
--- a/data/azprocedure.R
+++ /dev/null
@@ -1,2289 +0,0 @@
-azprocedure <-
-structure(list(hospital = c(3.60000014305115, 6.7000002861023, 
-2.5, 6.5, 3.70000004768372, 4.30000019073486, 6.5, 5.19999980926514, 
-3.70000004768372, 4.30000019073486, 3.60000014305115, 5.19999980926514, 
-6.80000019073486, 2.40000009536743, 3.09999990463257, 2.5, 3.09999990463257, 
-3.70000004768372, 6, 6.80000019073486, 6.7000002861023, 5.19999980926514, 
-2.5, 2.5, 5.19999980926514, 3.60000014305115, 3.70000004768372, 
-2.5, 6.7000002861023, 2.5, 4.30000019073486, 3.60000014305115, 
-6.7000002861023, 6.80000019073486, 3.09999990463257, 6, 3.09999990463257, 
-4.30000019073486, 6, 6.5, 6, 2.5, 4.30000019073486, 6.5, 6, 3.60000014305115, 
-2.5, 3.19999980926514, 2.70000004768372, 3.60000014305115, 6.80000019073486, 
-3.19999980926514, 3.19999980926514, 4.30000019073486, 4.30000019073486, 
-0.100000001490116, 2.5, 2.5, 2.40000009536743, 9.10000038146973, 
-6.80000019073486, 3.70000004768372, 5.19999980926514, 3.70000004768372, 
-2.5, 6.5, 5.19999980926514, 5.19999980926514, 2.5, 6.5, 4.30000019073486, 
-2.5, 3.09999990463257, 6.7000002861023, 3.09999990463257, 3.19999980926514, 
-4.30000019073486, 6, 6.5, 2.5, 5.19999980926514, 5.19999980926514, 
-6.5, 2.5, 6.7000002861023, 2.5, 5.19999980926514, 3.60000014305115, 
-3.09999990463257, 3.60000014305115, 2.70000004768372, 2.40000009536743, 
-6.5, 3.60000014305115, 9.10000038146973, 4.30000019073486, 6, 
-3.60000014305115, 3.60000014305115, 2.5, 3.19999980926514, 9.10000038146973, 
-3.60000014305115, 6.5, 4.30000019073486, 3.09999990463257, 3.19999980926514, 
-2.5, 2.5, 2.5, 3.19999980926514, 6.5, 6.5, 5.19999980926514, 
-3.09999990463257, 3.19999980926514, 3.09999990463257, 6.7000002861023, 
-6.7000002861023, 2.5, 6.5, 2.5, 2.5, 5.19999980926514, 2.70000004768372, 
-3.09999990463257, 6.5, 5.19999980926514, 2.5, 2.5, 6.5, 2.5, 
-2.5, 3.09999990463257, 2.5, 5.19999980926514, 6.7000002861023, 
-4.30000019073486, 3.09999990463257, 6, 2.40000009536743, 2.5, 
-4.30000019073486, 3.09999990463257, 5.19999980926514, 2.5, 6.5, 
-3.09999990463257, 2.5, 2.5, 9.10000038146973, 6, 6.7000002861023, 
-6.5, 6, 2.5, 5.19999980926514, 2.5, 2.40000009536743, 2.5, 9.10000038146973, 
-5.19999980926514, 5.19999980926514, 9.10000038146973, 2.5, 5.19999980926514, 
-6.5, 3.09999990463257, 6.5, 3.60000014305115, 5.19999980926514, 
-3.09999990463257, 6, 2.5, 2.5, 6.5, 2.5, 2.5, 9.10000038146973, 
-5.19999980926514, 3.70000004768372, 6.7000002861023, 6.5, 3.60000014305115, 
-5.19999980926514, 3.09999990463257, 6.7000002861023, 4.30000019073486, 
-3.09999990463257, 6.5, 3.5, 5.19999980926514, 2.5, 5.19999980926514, 
-2.5, 3.09999990463257, 3.09999990463257, 6.5, 6, 2.5, 6.7000002861023, 
-2.5, 3.60000014305115, 3.70000004768372, 2.40000009536743, 6.5, 
-2.70000004768372, 6.7000002861023, 6, 5.19999980926514, 4.09999990463257, 
-3.09999990463257, 6.5, 5.19999980926514, 3.70000004768372, 4.30000019073486, 
-6.7000002861023, 5.19999980926514, 4.30000019073486, 2.5, 3.60000014305115, 
-2.5, 6.7000002861023, 5.19999980926514, 2.40000009536743, 4.09999990463257, 
-3.09999990463257, 2.5, 5.19999980926514, 3.5, 2.5, 6.7000002861023, 
-6, 6.5, 5.19999980926514, 5.19999980926514, 5.19999980926514, 
-6.7000002861023, 2.5, 6.5, 5.19999980926514, 2.40000009536743, 
-4.30000019073486, 4.30000019073486, 3.60000014305115, 2.40000009536743, 
-5.19999980926514, 3.09999990463257, 3.09999990463257, 5.19999980926514, 
-2.5, 2.5, 3.60000014305115, 3.19999980926514, 6, 2.5, 3.19999980926514, 
-3.09999990463257, 3.70000004768372, 6.7000002861023, 2.5, 3.70000004768372, 
-6.7000002861023, 3.09999990463257, 3.70000004768372, 3.60000014305115, 
-6.7000002861023, 6.5, 2.70000004768372, 5.19999980926514, 6.80000019073486, 
-6, 6.5, 6.7000002861023, 6, 6.80000019073486, 3.70000004768372, 
-2.5, 3.60000014305115, 5.19999980926514, 3.60000014305115, 3.09999990463257, 
-6.5, 6, 4.30000019073486, 6, 6.7000002861023, 3.60000014305115, 
-2.70000004768372, 3.70000004768372, 2.5, 2.5, 2.5, 5.19999980926514, 
-3.09999990463257, 2.70000004768372, 4.09999990463257, 6.5, 6.7000002861023, 
-6.80000019073486, 3.09999990463257, 3.60000014305115, 2.40000009536743, 
-4.30000019073486, 6.5, 6.80000019073486, 2.5, 4.30000019073486, 
-3.60000014305115, 3.60000014305115, 2.5, 2.5, 2.5, 6.5, 6, 5.19999980926514, 
-5.19999980926514, 3.09999990463257, 2.5, 6.5, 3.09999990463257, 
-3.09999990463257, 5.19999980926514, 3.70000004768372, 6.5, 5.19999980926514, 
-3.5, 2.5, 6.5, 3.19999980926514, 9.10000038146973, 3.60000014305115, 
-5.19999980926514, 6.5, 3.70000004768372, 6.5, 6.7000002861023, 
-3.5, 6.5, 3.5, 6.5, 3.09999990463257, 2.5, 2.5, 3.60000014305115, 
-3.70000004768372, 2.70000004768372, 3.5, 2.5, 2.5, 6, 2.5, 6.7000002861023, 
-2.40000009536743, 4.30000019073486, 2.40000009536743, 6, 2.70000004768372, 
-3.60000014305115, 6, 6.7000002861023, 2.5, 3.60000014305115, 
-3.09999990463257, 2.5, 6.80000019073486, 4.09999990463257, 5.19999980926514, 
-3.60000014305115, 6.80000019073486, 2.5, 5.19999980926514, 2.40000009536743, 
-2.5, 6, 5.19999980926514, 5.19999980926514, 3.09999990463257, 
-3.60000014305115, 2.5, 2.40000009536743, 5.19999980926514, 2.5, 
-5.19999980926514, 5.19999980926514, 3.09999990463257, 2.5, 4.30000019073486, 
-2.5, 5.19999980926514, 3.5, 2.5, 3.09999990463257, 3.09999990463257, 
-4.09999990463257, 5.19999980926514, 2.5, 2.70000004768372, 3.70000004768372, 
-9.10000038146973, 5.19999980926514, 3.60000014305115, 2.5, 2.5, 
-9.10000038146973, 2.70000004768372, 2.5, 3.09999990463257, 5.19999980926514, 
-3.19999980926514, 6, 2.70000004768372, 3.09999990463257, 2.5, 
-6, 3.09999990463257, 6.5, 2.5, 3.09999990463257, 3.70000004768372, 
-6.5, 3.09999990463257, 5.19999980926514, 9.10000038146973, 6, 
-5.19999980926514, 2.5, 3.70000004768372, 3.19999980926514, 3.70000004768372, 
-4.09999990463257, 2.5, 2.5, 2.5, 3.60000014305115, 2.5, 5.19999980926514, 
-5.19999980926514, 2.5, 5.19999980926514, 5.19999980926514, 2.5, 
-2.40000009536743, 6, 2.5, 6, 2.5, 2.5, 3.09999990463257, 2.5, 
-3.60000014305115, 6.5, 3.70000004768372, 3.09999990463257, 2.40000009536743, 
-2.5, 5.19999980926514, 6.5, 2.5, 3.70000004768372, 4.30000019073486, 
-2.5, 9.10000038146973, 2.40000009536743, 6.5, 6, 2.5, 9.10000038146973, 
-2.5, 2.5, 3.09999990463257, 2.5, 5.19999980926514, 2.5, 2.5, 
-2.5, 6, 3.09999990463257, 2.70000004768372, 3.09999990463257, 
-2.5, 2.40000009536743, 2.40000009536743, 5.19999980926514, 9.10000038146973, 
-5.19999980926514, 6.7000002861023, 2.5, 3.09999990463257, 2.5, 
-3.5, 3.09999990463257, 9.10000038146973, 3.09999990463257, 2.5, 
-9.10000038146973, 2.5, 3.09999990463257, 6.7000002861023, 3.09999990463257, 
-6, 2.5, 2.5, 2.5, 6, 2.40000009536743, 6.5, 2.70000004768372, 
-5.19999980926514, 6.80000019073486, 4.30000019073486, 4.30000019073486, 
-6.5, 3.09999990463257, 3.60000014305115, 3.60000014305115, 5.19999980926514, 
-6.7000002861023, 2.5, 2.5, 6.7000002861023, 9.10000038146973, 
-5.19999980926514, 5.19999980926514, 2.70000004768372, 2.5, 3.09999990463257, 
-6.80000019073486, 2.5, 6.5, 6.7000002861023, 3.09999990463257, 
-4.30000019073486, 3.09999990463257, 3.09999990463257, 2.70000004768372, 
-2.5, 5.19999980926514, 6.7000002861023, 2.5, 2.5, 3.60000014305115, 
-3.09999990463257, 2.5, 5.19999980926514, 2.5, 3.09999990463257, 
-2.5, 3.09999990463257, 2.5, 2.5, 2.70000004768372, 3.09999990463257, 
-5.19999980926514, 2.5, 2.5, 6.5, 6.80000019073486, 2.40000009536743, 
-2.5, 5.19999980926514, 2.5, 9.10000038146973, 5.19999980926514, 
-2.5, 2.40000009536743, 5.19999980926514, 3.09999990463257, 3.60000014305115, 
-2.5, 2.5, 2.5, 3.09999990463257, 6.5, 6.7000002861023, 2.40000009536743, 
-2.70000004768372, 6.5, 4.30000019073486, 9.10000038146973, 3.09999990463257, 
-4.30000019073486, 3.09999990463257, 3.09999990463257, 3.60000014305115, 
-3.09999990463257, 6, 2.5, 2.5, 2.5, 2.40000009536743, 3.09999990463257, 
-5.19999980926514, 6.7000002861023, 5.19999980926514, 2.70000004768372, 
-3.19999980926514, 4.30000019073486, 3.09999990463257, 2.5, 6.5, 
-5.19999980926514, 3.09999990463257, 2.5, 3.09999990463257, 3.60000014305115, 
-5.19999980926514, 4.09999990463257, 2.5, 5.19999980926514, 6, 
-5.19999980926514, 5.19999980926514, 3.09999990463257, 6.5, 6.5, 
-2.5, 5.19999980926514, 6.5, 3.19999980926514, 2.5, 6.5, 3.70000004768372, 
-6.5, 9.10000038146973, 3.60000014305115, 3.09999990463257, 3.70000004768372, 
-3.09999990463257, 2.5, 2.5, 2.5, 6.7000002861023, 5.19999980926514, 
-6, 5.19999980926514, 5.19999980926514, 3.09999990463257, 2.5, 
-2.5, 2.5, 6, 3.09999990463257, 2.5, 2.5, 3.09999990463257, 4.30000019073486, 
-6, 6, 6.80000019073486, 3.60000014305115, 3.5, 2.5, 2.70000004768372, 
-3.09999990463257, 6.5, 6, 3.09999990463257, 3.60000014305115, 
-6, 5.19999980926514, 5.19999980926514, 2.40000009536743, 6.5, 
-2.5, 2.5, 2.5, 5.19999980926514, 2.5, 6.7000002861023, 4.09999990463257, 
-6.5, 2.5, 5.19999980926514, 6.5, 6.5, 2.5, 6.5, 5.19999980926514, 
-3.09999990463257, 6.5, 2.70000004768372, 9.10000038146973, 2.5, 
-2.5, 3.70000004768372, 2.5, 2.5, 3.70000004768372, 6.7000002861023, 
-5.19999980926514, 2.40000009536743, 3.09999990463257, 2.5, 3.09999990463257, 
-3.09999990463257, 5.19999980926514, 6, 6.5, 5.19999980926514, 
-6.7000002861023, 2.5, 5.19999980926514, 6.7000002861023, 2.5, 
-5.19999980926514, 5.19999980926514, 4.30000019073486, 3.09999990463257, 
-5.19999980926514, 2.40000009536743, 2.5, 2.5, 3.60000014305115, 
-6.7000002861023, 6, 3.09999990463257, 4.30000019073486, 2.5, 
-6.7000002861023, 2.5, 4.09999990463257, 2.5, 3.09999990463257, 
-4.30000019073486, 6.5, 2.5, 3.19999980926514, 6.5, 3.09999990463257, 
-3.60000014305115, 3.19999980926514, 3.70000004768372, 6, 6.5, 
-3.09999990463257, 6.5, 6.80000019073486, 2.70000004768372, 5.19999980926514, 
-2.5, 5.19999980926514, 6, 5.19999980926514, 3.60000014305115, 
-2.70000004768372, 5.19999980926514, 3.09999990463257, 3.60000014305115, 
-9.10000038146973, 3.09999990463257, 6, 3.09999990463257, 6.5, 
-6, 2.5, 2.5, 2.5, 5.19999980926514, 2.5, 9.10000038146973, 5.19999980926514, 
-2.40000009536743, 5.19999980926514, 5.19999980926514, 5.19999980926514, 
-5.19999980926514, 5.19999980926514, 6.5, 5.19999980926514, 2.5, 
-5.19999980926514, 2.5, 5.19999980926514, 2.5, 6.5, 6.5, 6.7000002861023, 
-2.40000009536743, 3.09999990463257, 6.5, 2.5, 5.19999980926514, 
-3.60000014305115, 4.30000019073486, 2.70000004768372, 2.40000009536743, 
-6.5, 6, 5.19999980926514, 6.80000019073486, 6, 9.10000038146973, 
-4.30000019073486, 6, 6, 3.09999990463257, 2.5, 4.30000019073486, 
-2.5, 5.19999980926514, 5.19999980926514, 3.09999990463257, 3.70000004768372, 
-6.5, 3.60000014305115, 2.5, 2.5, 2.70000004768372, 5.19999980926514, 
-2.5, 2.5, 6.5, 3.19999980926514, 2.5, 9.10000038146973, 6, 6.7000002861023, 
-5.19999980926514, 2.5, 2.5, 6, 9.10000038146973, 2.5, 5.19999980926514, 
-5.19999980926514, 2.5, 5.19999980926514, 5.19999980926514, 6.5, 
-2.5, 4.09999990463257, 2.5, 6.7000002861023, 4.09999990463257, 
-2.5, 2.5, 6.5, 5.19999980926514, 9.10000038146973, 5.19999980926514, 
-5.19999980926514, 2.5, 6, 5.19999980926514, 6.7000002861023, 
-2.5, 3.70000004768372, 5.19999980926514, 3.09999990463257, 4.09999990463257, 
-6.7000002861023, 2.70000004768372, 3.09999990463257, 6.5, 4.30000019073486, 
-6.7000002861023, 9.10000038146973, 6, 2.5, 3.09999990463257, 
-3.19999980926514, 6.7000002861023, 2.5, 3.09999990463257, 2.5, 
-3.09999990463257, 2.40000009536743, 3.09999990463257, 3.09999990463257, 
-3.70000004768372, 9.10000038146973, 6.5, 3.60000014305115, 2.5, 
-5.19999980926514, 2.5, 6, 3.60000014305115, 3.09999990463257, 
-4.09999990463257, 4.09999990463257, 6.5, 2.40000009536743, 9.10000038146973, 
-3.09999990463257, 5.19999980926514, 6, 2.70000004768372, 6.7000002861023, 
-4.30000019073486, 3.5, 9.10000038146973, 5.19999980926514, 6.80000019073486, 
-6.5, 5.19999980926514, 5.19999980926514, 3.19999980926514, 5.19999980926514, 
-2.5, 6, 5.19999980926514, 2.70000004768372, 3.09999990463257, 
-5.19999980926514, 5.19999980926514, 5.19999980926514, 2.5, 2.5, 
-6.80000019073486, 6, 2.40000009536743, 2.70000004768372, 9.10000038146973, 
-6.80000019073486, 6.5, 5.19999980926514, 5.19999980926514, 3.09999990463257, 
-3.09999990463257, 4.30000019073486, 3.70000004768372, 2.5, 2.5, 
-6, 6.5, 3.09999990463257, 5.19999980926514, 6, 9.10000038146973, 
-6, 5.19999980926514, 4.30000019073486, 9.10000038146973, 2.5, 
-3.09999990463257, 6.7000002861023, 6, 5.19999980926514, 3.60000014305115, 
-2.5, 3.70000004768372, 3.09999990463257, 6.5, 4.09999990463257, 
-6.7000002861023, 2.5, 2.70000004768372, 5.19999980926514, 2.5, 
-5.19999980926514, 2.40000009536743, 4.09999990463257, 2.5, 3.5, 
-5.19999980926514, 5.19999980926514, 3.70000004768372, 9.10000038146973, 
-6.5, 3.5, 3.09999990463257, 6, 5.19999980926514, 3.09999990463257, 
-4.09999990463257, 2.5, 5.19999980926514, 5.19999980926514, 5.19999980926514, 
-3.09999990463257, 5.19999980926514, 4.30000019073486, 6.80000019073486, 
-3.09999990463257, 2.5, 5.19999980926514, 2.5, 3.70000004768372, 
-6, 5.19999980926514, 5.19999980926514, 2.5, 2.5, 6.80000019073486, 
-5.19999980926514, 3.09999990463257, 5.19999980926514, 4.09999990463257, 
-3.60000014305115, 6, 3.09999990463257, 2.5, 3.09999990463257, 
-3.09999990463257, 2.5, 6, 5.19999980926514, 4.30000019073486, 
-3.09999990463257, 3.09999990463257, 5.19999980926514, 2.5, 6.80000019073486, 
-2.5, 5.19999980926514, 2.5, 3.09999990463257, 6.7000002861023, 
-3.60000014305115, 2.5, 6.5, 3.70000004768372, 3.09999990463257, 
-5.19999980926514, 4.09999990463257, 6, 6, 3.70000004768372, 6, 
-2.70000004768372, 2.70000004768372, 3.19999980926514, 6, 2.5, 
-5.19999980926514, 6.5, 6.5, 3.19999980926514, 3.09999990463257, 
-6, 2.70000004768372, 6, 6, 3.60000014305115, 2.5, 9.10000038146973, 
-2.5, 6.5, 3.60000014305115, 5.19999980926514, 6.5, 2.70000004768372, 
-6.7000002861023, 2.5, 6, 3.19999980926514, 0.100000001490116, 
-2.70000004768372, 5.19999980926514, 5.19999980926514, 6.7000002861023, 
-2.5, 2.5, 3.19999980926514, 5.19999980926514, 3.09999990463257, 
-6, 2.5, 2.5, 2.5, 2.5, 6.5, 2.40000009536743, 2.5, 6.5, 6.5, 
-2.5, 6.5, 3.09999990463257, 4.09999990463257, 5.19999980926514, 
-6.5, 2.5, 6.5, 5.19999980926514, 6, 6.5, 2.5, 3.70000004768372, 
-3.09999990463257, 2.5, 2.5, 6.80000019073486, 3.09999990463257, 
-2.5, 2.40000009536743, 5.19999980926514, 6.7000002861023, 6.7000002861023, 
-5.19999980926514, 2.5, 5.19999980926514, 6.5, 3.09999990463257, 
-3.09999990463257, 6.5, 5.19999980926514, 4.30000019073486, 6.80000019073486, 
-4.30000019073486, 2.5, 6, 2.5, 4.30000019073486, 6.5, 2.70000004768372, 
-2.5, 5.19999980926514, 6.7000002861023, 2.5, 3.09999990463257, 
-3.09999990463257, 6.5, 5.19999980926514, 3.70000004768372, 6.7000002861023, 
-5.19999980926514, 3.09999990463257, 2.70000004768372, 6.5, 9.10000038146973, 
-6, 6.5, 3.70000004768372, 6.80000019073486, 4.30000019073486, 
-3.09999990463257, 5.19999980926514, 5.19999980926514, 3.09999990463257, 
-3.09999990463257, 3.09999990463257, 6.7000002861023, 6, 3.60000014305115, 
-2.70000004768372, 3.70000004768372, 6, 3.60000014305115, 5.19999980926514, 
-5.19999980926514, 6.5, 3.60000014305115, 3.09999990463257, 3.19999980926514, 
-9.10000038146973, 6.5, 6.5, 6, 2.5, 6.80000019073486, 2.40000009536743, 
-6, 9.10000038146973, 6.5, 6.7000002861023, 2.5, 6.7000002861023, 
-6.5, 3.60000014305115, 3.70000004768372, 6.5, 6.5, 4.30000019073486, 
-4.09999990463257, 2.5, 3.09999990463257, 2.70000004768372, 6.5, 
-3.60000014305115, 3.5, 6.5, 2.40000009536743, 6.5, 5.19999980926514, 
-5.19999980926514, 4.30000019073486, 2.40000009536743, 6, 3.19999980926514, 
-6.5, 3.09999990463257, 6.7000002861023, 2.5, 6, 2.70000004768372, 
-4.30000019073486, 6.5, 3.60000014305115, 2.70000004768372, 6.7000002861023, 
-3.09999990463257, 6.7000002861023, 6.80000019073486, 6.5, 2.5, 
-3.70000004768372, 3.5, 5.19999980926514, 2.70000004768372, 4.30000019073486, 
-3.09999990463257, 3.70000004768372, 2.5, 6, 6, 6.7000002861023, 
-6.80000019073486, 5.19999980926514, 3.70000004768372, 5.19999980926514, 
-2.5, 5.19999980926514, 5.19999980926514, 2.70000004768372, 9.10000038146973, 
-6.5, 3.60000014305115, 3.09999990463257, 3.70000004768372, 3.19999980926514, 
-2.5, 2.70000004768372, 6, 5.19999980926514, 6.7000002861023, 
-2.40000009536743, 6.7000002861023, 3.09999990463257, 6.5, 2.5, 
-6.5, 5.19999980926514, 5.19999980926514, 3.09999990463257, 3.60000014305115, 
-2.5, 4.09999990463257, 6.80000019073486, 6.7000002861023, 2.5, 
-2.5, 6, 6.80000019073486, 3.19999980926514, 5.19999980926514, 
-5.19999980926514, 2.5, 6.5, 9.10000038146973, 2.5, 2.5, 3.09999990463257, 
-3.5, 6.5, 5.19999980926514, 4.09999990463257, 6.5, 3.09999990463257, 
-2.5, 5.19999980926514, 2.40000009536743, 3.70000004768372, 2.5, 
-3.60000014305115, 6.5, 9.10000038146973, 3.19999980926514, 6.80000019073486, 
-9.10000038146973, 6, 3.09999990463257, 6.7000002861023, 5.19999980926514, 
-9.10000038146973, 2.70000004768372, 2.40000009536743, 2.40000009536743, 
-2.5, 5.19999980926514, 6.5, 6.7000002861023, 3.60000014305115, 
-6.7000002861023, 3.60000014305115, 4.30000019073486, 6.80000019073486, 
-3.70000004768372, 2.5, 3.09999990463257, 2.5, 2.5, 5.19999980926514, 
-2.70000004768372, 6, 2.5, 3.60000014305115, 2.40000009536743, 
-3.60000014305115, 2.70000004768372, 3.09999990463257, 6.80000019073486, 
-6.80000019073486, 6.5, 3.19999980926514, 2.5, 2.5, 2.5, 2.70000004768372, 
-2.40000009536743, 3.60000014305115, 2.70000004768372, 4.09999990463257, 
-6.5, 3.09999990463257, 3.70000004768372, 6, 5.19999980926514, 
-6.5, 5.19999980926514, 3.60000014305115, 3.09999990463257, 6, 
-2.5, 3.60000014305115, 6.80000019073486, 6, 2.5, 9.10000038146973, 
-6.7000002861023, 3.09999990463257, 2.5, 5.19999980926514, 2.5, 
-6, 2.5, 6.80000019073486, 4.09999990463257, 6.5, 6.5, 2.5, 6.7000002861023, 
-2.5, 6.7000002861023, 6.7000002861023, 6, 2.5, 2.70000004768372, 
-6.5, 3.70000004768372, 3.60000014305115, 6.7000002861023, 4.30000019073486, 
-3.60000014305115, 6.5, 3.09999990463257, 3.09999990463257, 2.5, 
-3.09999990463257, 3.09999990463257, 3.70000004768372, 6.5, 6, 
-3.09999990463257, 9.10000038146973, 3.09999990463257, 2.5, 3.19999980926514, 
-2.5, 3.60000014305115, 2.5, 2.40000009536743, 2.70000004768372, 
-6.5, 4.30000019073486, 9.10000038146973, 6, 5.19999980926514, 
-6.7000002861023, 2.5, 3.19999980926514, 6.5, 2.5, 9.10000038146973, 
-2.5, 9.10000038146973, 6.5, 2.40000009536743, 6.7000002861023, 
-2.70000004768372, 3.60000014305115, 4.09999990463257, 6.5, 6.5, 
-6.7000002861023, 3.60000014305115, 9.10000038146973, 3.19999980926514, 
-3.70000004768372, 9.10000038146973, 5.19999980926514, 3.09999990463257, 
-3.09999990463257, 3.5, 3.09999990463257, 5.19999980926514, 3.09999990463257, 
-2.5, 3.09999990463257, 6.7000002861023, 3.60000014305115, 3.60000014305115, 
-2.5, 6.5, 2.5, 6.7000002861023, 6.5, 6.80000019073486, 3.09999990463257, 
-6.7000002861023, 5.19999980926514, 2.5, 6.7000002861023, 3.09999990463257, 
-6.5, 6, 2.5, 2.5, 2.70000004768372, 9.10000038146973, 9.10000038146973, 
-3.09999990463257, 2.40000009536743, 3.09999990463257, 3.09999990463257, 
-3.19999980926514, 5.19999980926514, 5.19999980926514, 6.80000019073486, 
-6, 3.09999990463257, 6, 6.5, 6.80000019073486, 3.19999980926514, 
-6.5, 5.19999980926514, 6.5, 6.5, 5.19999980926514, 3.60000014305115, 
-3.19999980926514, 3.60000014305115, 2.5, 3.60000014305115, 5.19999980926514, 
-6.7000002861023, 5.19999980926514, 6, 6.7000002861023, 2.40000009536743, 
-9.10000038146973, 5.19999980926514, 9.10000038146973, 5.19999980926514, 
-2.70000004768372, 3.70000004768372, 6.5, 2.70000004768372, 3.09999990463257, 
-3.19999980926514, 3.09999990463257, 3.09999990463257, 6.5, 3.19999980926514, 
-2.5, 9.10000038146973, 2.5, 3.09999990463257, 3.70000004768372, 
-4.09999990463257, 6.7000002861023, 2.5, 6.7000002861023, 3.09999990463257, 
-3.60000014305115, 6.7000002861023, 4.30000019073486, 4.09999990463257, 
-2.40000009536743, 6.80000019073486, 4.30000019073486, 4.30000019073486, 
-3.09999990463257, 3.09999990463257, 3.5, 5.19999980926514, 2.5, 
-9.10000038146973, 9.10000038146973, 3.09999990463257, 3.60000014305115, 
-3.70000004768372, 2.5, 3.09999990463257, 5.19999980926514, 6.5, 
-3.09999990463257, 2.5, 4.30000019073486, 2.5, 3.70000004768372, 
-4.30000019073486, 4.30000019073486, 2.5, 3.60000014305115, 3.60000014305115, 
-6.80000019073486, 3.60000014305115, 6.5, 3.09999990463257, 9.10000038146973, 
-2.70000004768372, 5.19999980926514, 3.09999990463257, 6.5, 6.80000019073486, 
-6, 2.5, 3.09999990463257, 3.09999990463257, 3.60000014305115, 
-2.5, 6.7000002861023, 3.70000004768372, 2.70000004768372, 4.09999990463257, 
-2.70000004768372, 3.70000004768372, 2.5, 5.19999980926514, 6.5, 
-3.5, 5.19999980926514, 3.19999980926514, 3.5, 3.09999990463257, 
-3.60000014305115, 2.70000004768372, 5.19999980926514, 3.60000014305115, 
-5.19999980926514, 9.10000038146973, 2.5, 6, 3.60000014305115, 
-2.40000009536743, 3.70000004768372, 2.70000004768372, 5.19999980926514, 
-2.5, 2.5, 6, 6, 6.5, 6.7000002861023, 3.5, 3.19999980926514, 
-2.5, 3.60000014305115, 6.7000002861023, 6.5, 2.5, 4.30000019073486, 
-9.10000038146973, 4.09999990463257, 6.7000002861023, 3.19999980926514, 
-2.70000004768372, 3.60000014305115, 3.60000014305115, 2.5, 6.80000019073486, 
-6, 5.19999980926514, 2.40000009536743, 2.5, 2.5, 2.40000009536743, 
-6.7000002861023, 3.19999980926514, 6, 5.19999980926514, 5.19999980926514, 
-9.10000038146973, 5.19999980926514, 6.5, 5.19999980926514, 2.5, 
-6.80000019073486, 4.09999990463257, 5.19999980926514, 9.10000038146973, 
-2.40000009536743, 4.30000019073486, 5.19999980926514, 5.19999980926514, 
-3.09999990463257, 4.30000019073486, 2.70000004768372, 2.5, 5.19999980926514, 
-4.30000019073486, 3.60000014305115, 6.5, 6, 5.19999980926514, 
-5.19999980926514, 6.7000002861023, 9.10000038146973, 4.30000019073486, 
-2.5, 2.5, 5.19999980926514, 3.60000014305115, 6, 6, 6.5, 2.5, 
-2.5, 2.5, 9.10000038146973, 6.7000002861023, 2.70000004768372, 
-6.5, 9.10000038146973, 6.80000019073486, 6, 2.70000004768372, 
-3.70000004768372, 2.5, 5.19999980926514, 5.19999980926514, 3.60000014305115, 
-3.70000004768372, 2.5, 6.80000019073486, 2.5, 6, 5.19999980926514, 
-3.60000014305115, 6.5, 6.5, 6, 3.70000004768372, 5.19999980926514, 
-2.40000009536743, 6, 5.19999980926514, 3.09999990463257, 6.7000002861023, 
-3.60000014305115, 6.7000002861023, 9.10000038146973, 9.10000038146973, 
-6.7000002861023, 6.5, 4.30000019073486, 6.7000002861023, 3.60000014305115, 
-2.70000004768372, 5.19999980926514, 3.09999990463257, 2.70000004768372, 
-3.60000014305115, 2.70000004768372, 3.70000004768372, 0.100000001490116, 
-6.5, 5.19999980926514, 6.5, 3.70000004768372, 5.19999980926514, 
-6.5, 3.09999990463257, 4.30000019073486, 3.70000004768372, 3.09999990463257, 
-2.5, 6.5, 6.5, 9.10000038146973, 6.5, 6, 3.60000014305115, 6.7000002861023, 
-3.60000014305115, 4.09999990463257, 6.5, 4.30000019073486, 2.5, 
-3.19999980926514, 2.70000004768372, 6.7000002861023, 6.5, 6.7000002861023, 
-6.7000002861023, 3.09999990463257, 2.5, 6.5, 4.30000019073486, 
-3.70000004768372, 2.5, 5.19999980926514, 2.5, 3.09999990463257, 
-2.5, 5.19999980926514, 4.09999990463257, 6, 6, 6, 3.09999990463257, 
-6.80000019073486, 3.09999990463257, 2.40000009536743, 3.70000004768372, 
-2.5, 2.5, 6.5, 3.19999980926514, 6.7000002861023, 5.19999980926514, 
-4.30000019073486, 3.60000014305115, 4.09999990463257, 6.5, 4.09999990463257, 
-2.5, 4.09999990463257, 5.19999980926514, 9.10000038146973, 2.5, 
-5.19999980926514, 6, 6.5, 4.30000019073486, 2.5, 9.10000038146973, 
-6.80000019073486, 3.19999980926514, 2.40000009536743, 6.5, 2.5, 
-4.30000019073486, 2.40000009536743, 3.19999980926514, 6.5, 2.5, 
-6, 2.5, 6.80000019073486, 5.19999980926514, 6, 3.60000014305115, 
-2.5, 2.5, 3.60000014305115, 2.5, 2.5, 2.5, 2.40000009536743, 
-2.40000009536743, 5.19999980926514, 3.19999980926514, 4.30000019073486, 
-5.19999980926514, 3.19999980926514, 3.5, 6, 6.80000019073486, 
-5.19999980926514, 4.09999990463257, 6, 9.10000038146973, 5.19999980926514, 
-2.5, 9.10000038146973, 3.09999990463257, 3.09999990463257, 2.70000004768372, 
-6.5, 3.19999980926514, 5.19999980926514, 2.70000004768372, 3.09999990463257, 
-2.70000004768372, 3.70000004768372, 2.70000004768372, 3.09999990463257, 
-6, 6, 6.80000019073486, 4.09999990463257, 6.5, 2.40000009536743, 
-3.60000014305115, 0.100000001490116, 6, 2.5, 2.70000004768372, 
-2.40000009536743, 6.7000002861023, 4.09999990463257, 2.40000009536743, 
-3.09999990463257, 3.70000004768372, 3.60000014305115, 6.80000019073486, 
-6.5, 5.19999980926514, 4.09999990463257, 3.09999990463257, 3.09999990463257, 
-2.70000004768372, 2.5, 3.5, 6, 6.7000002861023, 6.5, 9.10000038146973, 
-6, 9.10000038146973, 5.19999980926514, 5.19999980926514, 2.70000004768372, 
-3.70000004768372, 4.30000019073486, 3.19999980926514, 9.10000038146973, 
-5.19999980926514, 3.60000014305115, 3.60000014305115, 3.09999990463257, 
-6.7000002861023, 6.7000002861023, 2.5, 3.70000004768372, 5.19999980926514, 
-5.19999980926514, 6.80000019073486, 2.5, 2.5, 3.70000004768372, 
-6.5, 4.30000019073486, 3.70000004768372, 5.19999980926514, 5.19999980926514, 
-2.5, 2.5, 3.70000004768372, 2.5, 2.5, 3.19999980926514, 2.40000009536743, 
-5.19999980926514, 6.5, 9.10000038146973, 3.5, 5.19999980926514, 
-6.5, 6.5, 2.5, 6, 5.19999980926514, 5.19999980926514, 5.19999980926514, 
-6, 2.5, 2.5, 3.09999990463257, 5.19999980926514, 6.5, 6, 6.5, 
-6.80000019073486, 9.10000038146973, 2.70000004768372, 2.5, 2.70000004768372, 
-2.40000009536743, 3.60000014305115, 3.19999980926514, 3.70000004768372, 
-2.5, 9.10000038146973, 4.09999990463257, 3.70000004768372, 3.60000014305115, 
-6.7000002861023, 2.5, 3.09999990463257, 3.70000004768372, 2.70000004768372, 
-3.60000014305115, 2.5, 2.5, 2.5, 2.5, 6.80000019073486, 2.40000009536743, 
-2.70000004768372, 9.10000038146973, 2.5, 6.5, 6.5, 6.7000002861023, 
-3.70000004768372, 3.60000014305115, 3.60000014305115, 0.100000001490116, 
-3.09999990463257, 6, 3.09999990463257, 4.09999990463257, 6.7000002861023, 
-3.09999990463257, 2.5, 2.70000004768372, 3.09999990463257, 4.09999990463257, 
-6.5, 3.19999980926514, 2.5, 3.60000014305115, 2.40000009536743, 
-4.09999990463257, 2.5, 3.5, 3.09999990463257, 2.5, 5.19999980926514, 
-4.30000019073486, 3.5, 3.19999980926514, 6.5, 5.19999980926514, 
-3.19999980926514, 6.5, 6.7000002861023, 5.19999980926514, 3.09999990463257, 
-3.60000014305115, 6, 3.09999990463257, 6.7000002861023, 6.7000002861023, 
-2.5, 6.5, 6.7000002861023, 6, 3.19999980926514, 6.7000002861023, 
-6.80000019073486, 3.09999990463257, 2.70000004768372, 5.19999980926514, 
-4.30000019073486, 6.5, 5.19999980926514, 6.5, 3.09999990463257, 
-5.19999980926514, 5.19999980926514, 2.5, 6.5, 6.5, 2.5, 2.5, 
-4.30000019073486, 5.19999980926514, 2.70000004768372, 6.5, 6.80000019073486, 
-5.19999980926514, 6.80000019073486, 5.19999980926514, 5.19999980926514, 
-5.19999980926514, 6.5, 9.10000038146973, 2.5, 2.5, 4.30000019073486, 
-5.19999980926514, 3.09999990463257, 6.5, 6.7000002861023, 2.40000009536743, 
-2.5, 2.5, 6.5, 3.19999980926514, 2.70000004768372, 3.09999990463257, 
-2.5, 2.40000009536743, 3.09999990463257, 5.19999980926514, 4.30000019073486, 
-5.19999980926514, 5.19999980926514, 2.70000004768372, 5.19999980926514, 
-5.19999980926514, 2.70000004768372, 3.5, 4.30000019073486, 6.5, 
-3.60000014305115, 2.5, 4.09999990463257, 2.5, 5.19999980926514, 
-3.09999990463257, 3.09999990463257, 3.09999990463257, 6.5, 2.70000004768372, 
-2.70000004768372, 2.5, 5.19999980926514, 6.7000002861023, 3.09999990463257, 
-9.10000038146973, 6.5, 0.100000001490116, 3.19999980926514, 2.5, 
-6.5, 3.09999990463257, 5.19999980926514, 6.80000019073486, 6.7000002861023, 
-2.5, 4.30000019073486, 6.5, 6.5, 6.80000019073486, 5.19999980926514, 
-6.5, 3.60000014305115, 6.80000019073486, 6.5, 3.60000014305115, 
-9.10000038146973, 4.09999990463257, 6.7000002861023, 2.5, 6.7000002861023, 
-4.30000019073486, 2.70000004768372, 2.70000004768372, 3.5, 6.80000019073486, 
-2.70000004768372, 3.60000014305115, 3.19999980926514, 4.09999990463257, 
-2.5, 6.5, 5.19999980926514, 3.09999990463257, 2.5, 2.5, 2.70000004768372, 
-2.5, 2.5, 6.80000019073486, 5.19999980926514, 3.09999990463257, 
-3.5, 6.5, 5.19999980926514, 4.09999990463257, 2.5, 3.70000004768372, 
-2.5, 3.09999990463257, 3.09999990463257, 0.100000001490116, 5.19999980926514, 
-6, 0.100000001490116, 6, 6.5, 6.5, 3.09999990463257, 9.10000038146973, 
-6.7000002861023, 6.80000019073486, 2.5, 6.5, 3.60000014305115, 
-2.40000009536743, 6, 6, 3.09999990463257, 2.5, 6.5, 3.19999980926514, 
-4.30000019073486, 2.5, 6.5, 2.70000004768372, 5.19999980926514, 
-9.10000038146973, 3.09999990463257, 2.70000004768372, 3.70000004768372, 
-5.19999980926514, 3.60000014305115, 2.5, 3.09999990463257, 6.5, 
-5.19999980926514, 6.7000002861023, 9.10000038146973, 4.30000019073486, 
-4.09999990463257, 6.7000002861023, 3.60000014305115, 3.09999990463257, 
-4.30000019073486, 5.19999980926514, 5.19999980926514, 6.5, 6.5, 
-5.19999980926514, 6, 4.30000019073486, 2.5, 2.70000004768372, 
-2.5, 3.60000014305115, 2.5, 3.19999980926514, 6.80000019073486, 
-2.5, 3.60000014305115, 6.80000019073486, 3.70000004768372, 3.09999990463257, 
-6.7000002861023, 2.5, 4.30000019073486, 2.5, 6, 6, 3.09999990463257, 
-2.5, 5.19999980926514, 2.5, 6.7000002861023, 3.5, 3.60000014305115, 
-6.5, 4.09999990463257, 6.5, 6.5, 5.19999980926514, 5.19999980926514, 
-2.70000004768372, 4.30000019073486, 3.09999990463257, 2.5, 3.19999980926514, 
-2.5, 2.5, 6.5, 2.5, 6, 2.5, 2.5, 5.19999980926514, 5.19999980926514, 
-4.30000019073486, 6.7000002861023, 6.5, 2.5, 6.5, 3.60000014305115, 
-6, 5.19999980926514, 5.19999980926514, 5.19999980926514, 6.80000019073486, 
-2.5, 2.40000009536743, 6.80000019073486, 6.7000002861023, 6.5, 
-6.5, 6.7000002861023, 6.5, 6, 3.70000004768372, 3.5, 5.19999980926514, 
-3.09999990463257, 3.09999990463257, 3.09999990463257, 3.09999990463257, 
-3.09999990463257, 3.5, 3.09999990463257, 3.09999990463257, 3.19999980926514, 
-2.5, 5.19999980926514, 3.09999990463257, 6.5, 6.5, 3.19999980926514, 
-2.5, 3.60000014305115, 6.5, 3.70000004768372, 9.10000038146973, 
-3.09999990463257, 5.19999980926514, 4.30000019073486, 2.40000009536743, 
-6, 3.60000014305115, 6.7000002861023, 4.30000019073486, 6.80000019073486, 
-2.70000004768372, 2.5, 6.5, 6.5, 2.40000009536743, 3.09999990463257, 
-3.70000004768372, 4.30000019073486, 5.19999980926514, 5.19999980926514, 
-4.09999990463257, 5.19999980926514, 3.19999980926514, 6.5, 6.5, 
-6, 6.5, 6.80000019073486, 4.09999990463257, 2.40000009536743, 
-6.7000002861023, 3.60000014305115, 2.40000009536743, 3.60000014305115, 
-4.09999990463257, 3.09999990463257, 6.7000002861023, 6.5, 3.09999990463257, 
-5.19999980926514, 6.5, 3.09999990463257, 2.5, 6.5, 3.09999990463257, 
-2.5, 6.7000002861023, 3.60000014305115, 4.09999990463257, 5.19999980926514, 
-2.40000009536743, 6.5, 2.5, 6.7000002861023, 3.09999990463257, 
-3.70000004768372, 6.5, 4.09999990463257, 2.5, 2.5, 3.60000014305115, 
-3.19999980926514, 2.5, 5.19999980926514, 6.5, 2.5, 2.70000004768372, 
-3.19999980926514, 2.70000004768372, 3.09999990463257, 4.09999990463257, 
-3.60000014305115, 2.40000009536743, 6.5, 9.10000038146973, 9.10000038146973, 
-2.40000009536743, 4.30000019073486, 6.80000019073486, 2.40000009536743, 
-5.19999980926514, 9.10000038146973, 3.60000014305115, 3.60000014305115, 
-9.10000038146973, 3.09999990463257, 2.40000009536743, 3.70000004768372, 
-5.19999980926514, 6.80000019073486, 3.09999990463257, 3.60000014305115, 
-5.19999980926514, 3.70000004768372, 6.7000002861023, 5.19999980926514, 
-3.09999990463257, 5.19999980926514, 6.5, 9.10000038146973, 9.10000038146973, 
-9.10000038146973, 2.5, 4.09999990463257, 6.7000002861023, 2.5, 
-3.09999990463257, 3.09999990463257, 6.7000002861023, 6.7000002861023, 
-3.09999990463257, 6.5, 3.5, 6.5, 3.09999990463257, 2.5, 3.09999990463257, 
-3.09999990463257, 3.70000004768372, 3.70000004768372, 3.60000014305115, 
-3.09999990463257, 4.30000019073486, 4.30000019073486, 6.5, 5.19999980926514, 
-6.5, 3.09999990463257, 2.70000004768372, 6, 3.60000014305115, 
-5.19999980926514, 4.30000019073486, 3.60000014305115, 3.70000004768372, 
-2.5, 6, 6.5, 6.7000002861023, 5.19999980926514, 6.80000019073486, 
-3.60000014305115, 3.19999980926514, 2.5, 6.5, 6.5, 5.19999980926514, 
-2.40000009536743, 2.5, 4.30000019073486, 3.09999990463257, 2.70000004768372, 
-3.60000014305115, 2.70000004768372, 2.40000009536743, 2.5, 6, 
-2.5, 2.5, 2.70000004768372, 6.5, 6.7000002861023, 6.7000002861023, 
-3.19999980926514, 2.5, 3.09999990463257, 2.70000004768372, 5.19999980926514, 
-9.10000038146973, 6.80000019073486, 2.5, 2.40000009536743, 3.60000014305115, 
-3.09999990463257, 3.09999990463257, 4.30000019073486, 3.09999990463257, 
-5.19999980926514, 6, 6.5, 2.70000004768372, 3.19999980926514, 
-6, 5.19999980926514, 3.09999990463257, 3.09999990463257, 4.30000019073486, 
-5.19999980926514, 2.5, 3.09999990463257, 4.30000019073486, 2.5, 
-6, 2.5, 6.7000002861023, 2.5, 5.19999980926514, 3.70000004768372, 
-6.7000002861023, 6.5, 3.09999990463257, 2.40000009536743, 6.7000002861023, 
-2.5, 2.40000009536743, 6.5, 3.19999980926514, 6.5, 2.5, 6.7000002861023, 
-2.5, 3.19999980926514, 3.70000004768372, 2.5, 2.5, 5.19999980926514, 
-6.5, 3.70000004768372, 5.19999980926514, 2.5, 2.5, 2.40000009536743, 
-6.7000002861023, 6.80000019073486, 6.5, 2.40000009536743, 6.7000002861023, 
-3.70000004768372, 6, 3.09999990463257, 9.10000038146973, 6.7000002861023, 
-6.5, 3.60000014305115, 2.5, 6.5, 2.70000004768372, 3.09999990463257, 
-6.80000019073486, 2.70000004768372, 4.30000019073486, 4.30000019073486, 
-3.09999990463257, 4.30000019073486, 2.40000009536743, 6.5, 6.5, 
-5.19999980926514, 4.30000019073486, 3.09999990463257, 6.5, 2.40000009536743, 
-3.09999990463257, 5.19999980926514, 2.5, 9.10000038146973, 2.5, 
-2.70000004768372, 2.5, 2.5, 3.09999990463257, 2.5, 2.40000009536743, 
-6.5, 2.5, 3.09999990463257, 5.19999980926514, 3.09999990463257, 
-3.09999990463257, 6.80000019073486, 6.5, 3.60000014305115, 3.60000014305115, 
-2.5, 2.70000004768372, 2.5, 6, 6, 5.19999980926514, 6, 3.5, 4.30000019073486, 
-6, 6.7000002861023, 2.40000009536743, 9.10000038146973, 5.19999980926514, 
-2.5, 4.30000019073486, 3.09999990463257, 2.5, 6.5, 3.09999990463257, 
-4.09999990463257, 6.7000002861023, 3.70000004768372, 6.7000002861023, 
-2.40000009536743, 4.30000019073486, 2.70000004768372, 2.40000009536743, 
-4.30000019073486, 3.09999990463257, 3.09999990463257, 6.80000019073486, 
-3.19999980926514, 5.19999980926514, 2.40000009536743, 2.5, 6.5, 
-2.70000004768372, 2.70000004768372, 5.19999980926514, 3.70000004768372, 
-3.60000014305115, 6.80000019073486, 3.60000014305115, 6, 6.5, 
-5.19999980926514, 2.40000009536743, 9.10000038146973, 6.5, 3.70000004768372, 
-3.09999990463257, 3.5, 3.19999980926514, 3.09999990463257, 6.80000019073486, 
-4.09999990463257, 3.19999980926514, 9.10000038146973, 6.7000002861023, 
-6.5, 3.09999990463257, 6.7000002861023, 2.70000004768372, 6.5, 
-6, 2.40000009536743, 3.70000004768372, 2.40000009536743, 5.19999980926514, 
-9.10000038146973, 3.19999980926514, 6.5, 6.7000002861023, 2.5, 
-6.5, 6.7000002861023, 5.19999980926514, 6, 6.5, 6.5, 3.09999990463257, 
-4.30000019073486, 5.19999980926514, 3.19999980926514, 6, 5.19999980926514, 
-6.5, 2.5, 5.19999980926514, 2.70000004768372, 9.10000038146973, 
-2.40000009536743, 5.19999980926514, 3.19999980926514, 5.19999980926514, 
-2.5, 3.09999990463257, 3.09999990463257, 2.5, 2.70000004768372, 
-2.40000009536743, 5.19999980926514, 6.5, 6.5, 3.60000014305115, 
-2.40000009536743, 6.7000002861023, 2.70000004768372, 3.70000004768372, 
-5.19999980926514, 3.70000004768372, 3.60000014305115, 3.09999990463257, 
-6.80000019073486, 6.7000002861023, 2.40000009536743, 2.5, 3.70000004768372, 
-2.40000009536743, 3.70000004768372, 2.40000009536743, 3.19999980926514, 
-3.09999990463257, 3.09999990463257, 3.19999980926514, 4.30000019073486, 
-3.09999990463257, 3.70000004768372, 4.30000019073486, 6.5, 9.10000038146973, 
-2.40000009536743, 3.09999990463257, 2.40000009536743, 6, 6.5, 
-6.5, 5.19999980926514, 2.40000009536743, 5.19999980926514, 3.09999990463257, 
-6.5, 6.5, 3.70000004768372, 6.5, 3.09999990463257, 4.30000019073486, 
-5.19999980926514, 9.10000038146973, 2.5, 5.19999980926514, 5.19999980926514, 
-9.10000038146973, 2.5, 2.5, 3.09999990463257, 4.09999990463257, 
-2.40000009536743, 0.100000001490116, 4.30000019073486, 3.60000014305115, 
-2.70000004768372, 6.5, 2.40000009536743, 3.60000014305115, 6.7000002861023, 
-5.19999980926514, 3.5, 2.70000004768372, 3.09999990463257, 2.70000004768372, 
-6, 6.5, 3.09999990463257, 2.70000004768372, 0.100000001490116, 
-6.5, 5.19999980926514, 5.19999980926514, 5.19999980926514, 6.5, 
-3.5, 6.80000019073486, 3.09999990463257, 3.60000014305115, 5.19999980926514, 
-3.70000004768372, 9.10000038146973, 5.19999980926514, 2.5, 9.10000038146973, 
-6.7000002861023, 9.10000038146973, 3.09999990463257, 3.60000014305115, 
-3.09999990463257, 2.5, 5.19999980926514, 5.19999980926514, 6, 
-5.19999980926514, 3.09999990463257, 3.60000014305115, 9.10000038146973, 
-2.70000004768372, 6.5, 5.19999980926514, 5.19999980926514, 6.7000002861023, 
-5.19999980926514, 6.80000019073486, 6.5, 6, 6.5, 2.40000009536743, 
-6.80000019073486, 3.60000014305115, 3.60000014305115, 3.09999990463257, 
-3.09999990463257, 5.19999980926514, 2.5, 5.19999980926514, 2.5, 
-6.5, 3.5, 2.5, 4.09999990463257, 2.5, 2.5, 5.19999980926514, 
-3.60000014305115, 2.5, 3.60000014305115, 3.60000014305115, 3.09999990463257, 
-4.09999990463257, 6.80000019073486, 3.19999980926514, 6, 3.60000014305115, 
-9.10000038146973, 5.19999980926514, 3.09999990463257, 5.19999980926514, 
-6.5, 6.7000002861023, 5.19999980926514, 0.100000001490116, 2.5, 
-2.5, 9.10000038146973, 2.70000004768372, 2.40000009536743, 9.10000038146973, 
-6, 6.5, 3.09999990463257, 2.5, 3.09999990463257, 3.70000004768372, 
-3.60000014305115, 6.5, 3.09999990463257, 3.5, 3.09999990463257, 
-2.5, 2.5, 3.09999990463257, 3.09999990463257, 3.70000004768372, 
-6.7000002861023, 3.60000014305115, 3.09999990463257, 6.5, 6.5, 
-2.40000009536743, 6.7000002861023, 6.5, 3.09999990463257, 2.70000004768372, 
-6.7000002861023, 6.5, 3.70000004768372, 6.5, 3.09999990463257, 
-2.5, 4.30000019073486, 3.70000004768372, 6.5, 2.40000009536743, 
-6.7000002861023, 3.09999990463257, 6.5, 6.7000002861023, 2.5, 
-2.70000004768372, 2.5, 6.80000019073486, 4.09999990463257, 2.70000004768372, 
-2.70000004768372, 6.5, 3.70000004768372, 2.70000004768372, 3.09999990463257, 
-2.5, 6.80000019073486, 2.70000004768372, 3.09999990463257, 3.09999990463257, 
-3.09999990463257, 3.60000014305115, 3.09999990463257, 6.7000002861023, 
-3.19999980926514, 4.09999990463257, 2.70000004768372, 6.80000019073486, 
-5.19999980926514, 6.5, 6.7000002861023, 2.5, 2.40000009536743, 
-2.5, 6.5, 4.09999990463257, 4.09999990463257, 4.09999990463257, 
-5.19999980926514, 3.09999990463257, 5.19999980926514, 6.7000002861023, 
-6.7000002861023, 3.19999980926514, 5.19999980926514, 6.7000002861023, 
-2.70000004768372, 5.19999980926514, 6.5, 5.19999980926514, 2.40000009536743, 
-6.5, 2.70000004768372, 3.09999990463257, 5.19999980926514, 2.5, 
-2.5, 5.19999980926514, 3.09999990463257, 2.5, 2.70000004768372, 
-5.19999980926514, 6.5, 3.19999980926514, 3.60000014305115, 2.40000009536743, 
-3.09999990463257, 3.60000014305115, 5.19999980926514, 3.09999990463257, 
-3.09999990463257, 6.5, 9.10000038146973, 6.5, 2.5, 3.09999990463257, 
-6.5, 4.30000019073486, 3.60000014305115, 6, 3.60000014305115, 
-4.30000019073486, 6.5, 9.10000038146973, 5.19999980926514, 6.5, 
-2.5, 3.5, 6.7000002861023, 6.5, 3.09999990463257, 2.70000004768372, 
-3.09999990463257, 2.40000009536743, 3.5, 6.5, 5.19999980926514, 
-3.60000014305115, 4.30000019073486, 3.70000004768372, 6.7000002861023, 
-5.19999980926514, 2.5, 6.7000002861023, 2.70000004768372, 3.5, 
-6, 3.19999980926514, 4.09999990463257, 2.5, 3.60000014305115, 
-6.5, 5.19999980926514, 4.09999990463257, 3.60000014305115, 2.40000009536743, 
-3.5, 4.30000019073486, 2.70000004768372, 3.60000014305115, 2.70000004768372, 
-5.19999980926514, 2.40000009536743, 5.19999980926514, 3.5, 4.09999990463257, 
-6, 4.09999990463257, 3.5, 6, 3.09999990463257, 5.19999980926514, 
-3.60000014305115, 3.5, 2.40000009536743, 5.19999980926514, 2.5, 
-6.5, 2.5, 2.5, 2.5, 4.09999990463257, 5.19999980926514, 6.7000002861023, 
-3.09999990463257, 6.5, 6.5, 6.80000019073486, 5.19999980926514, 
-6.7000002861023, 3.19999980926514, 3.5, 2.5, 3.09999990463257, 
-5.19999980926514, 6.5, 6.80000019073486, 2.70000004768372, 2.5, 
-3.70000004768372, 2.5, 2.40000009536743, 6.7000002861023, 3.19999980926514, 
-3.09999990463257, 5.19999980926514, 2.5, 6.5, 2.5, 2.5, 3.60000014305115, 
-6.5, 3.09999990463257, 3.09999990463257, 3.60000014305115, 6.7000002861023, 
-6, 2.5, 3.09999990463257, 6.5, 9.10000038146973, 2.40000009536743, 
-6.80000019073486, 6.7000002861023, 3.70000004768372, 0.100000001490116, 
-6.5, 3.09999990463257, 3.70000004768372, 3.70000004768372, 2.5, 
-5.19999980926514, 5.19999980926514, 6.5, 3.09999990463257, 3.09999990463257, 
-2.5, 6.80000019073486, 6.5, 2.40000009536743, 6.7000002861023, 
-3.09999990463257, 3.09999990463257, 6.7000002861023, 4.30000019073486, 
-3.19999980926514, 6.5, 9.10000038146973, 9.10000038146973, 2.70000004768372, 
-3.19999980926514, 3.5, 3.09999990463257, 2.5, 4.09999990463257, 
-5.19999980926514, 3.09999990463257, 4.09999990463257, 6, 2.70000004768372, 
-3.09999990463257, 6.7000002861023, 3.19999980926514, 6.5, 2.5, 
-3.09999990463257, 4.09999990463257, 3.60000014305115, 3.60000014305115, 
-3.09999990463257, 3.09999990463257, 6.5, 3.19999980926514, 3.09999990463257, 
-6.80000019073486, 5.19999980926514, 4.30000019073486, 3.60000014305115, 
-3.60000014305115, 6.7000002861023, 6.5, 9.10000038146973, 9.10000038146973, 
-3.09999990463257, 3.09999990463257, 3.09999990463257, 2.5, 0.100000001490116, 
-2.40000009536743, 3.19999980926514, 6, 4.30000019073486, 3.70000004768372, 
-6.80000019073486, 3.09999990463257, 4.09999990463257, 4.30000019073486, 
-3.19999980926514, 3.09999990463257, 2.70000004768372, 0.100000001490116, 
-3.70000004768372, 6.80000019073486, 3.5, 2.70000004768372, 2.5, 
-3.19999980926514, 4.09999990463257, 3.09999990463257, 6.80000019073486, 
-2.5, 2.70000004768372, 6.80000019073486, 6.5, 3.19999980926514, 
-3.19999980926514, 6, 9.10000038146973, 3.19999980926514, 5.19999980926514, 
-2.70000004768372, 3.19999980926514, 3.19999980926514, 3.5, 6.5, 
-5.19999980926514, 3.09999990463257, 4.30000019073486, 6.5, 4.30000019073486, 
-3.09999990463257, 3.70000004768372, 6.7000002861023, 3.60000014305115, 
-3.19999980926514, 6.5, 2.5, 6.5, 6.7000002861023, 6, 4.30000019073486, 
-3.70000004768372, 6.7000002861023, 5.19999980926514, 5.19999980926514, 
-3.09999990463257, 3.60000014305115, 3.09999990463257, 6, 6.5, 
-3.19999980926514, 2.70000004768372, 5.19999980926514, 6.5, 6.5, 
-3.60000014305115, 2.40000009536743, 5.19999980926514, 6.7000002861023, 
-5.19999980926514, 3.09999990463257, 2.5, 6.80000019073486, 5.19999980926514, 
-4.09999990463257, 3.09999990463257, 2.5, 2.5, 3.09999990463257, 
-6.7000002861023, 3.5, 5.19999980926514, 3.60000014305115, 6.7000002861023, 
-5.19999980926514, 5.19999980926514, 2.70000004768372, 4.30000019073486, 
-6.7000002861023, 3.60000014305115, 6.80000019073486, 2.70000004768372, 
-4.09999990463257, 6.7000002861023, 3.19999980926514, 3.19999980926514, 
-2.5, 6.7000002861023, 3.70000004768372, 3.09999990463257, 6.5, 
-2.5, 6.80000019073486, 5.19999980926514, 2.40000009536743, 2.70000004768372, 
-6.5, 3.19999980926514, 6.5, 6.5, 3.5, 2.40000009536743, 3.5, 
-3.60000014305115, 4.30000019073486, 5.19999980926514, 2.40000009536743, 
-3.09999990463257, 3.09999990463257, 6.5, 4.30000019073486, 3.19999980926514, 
-4.09999990463257, 6.7000002861023, 2.40000009536743, 6.7000002861023, 
-3.09999990463257, 2.5, 9.10000038146973, 2.40000009536743, 2.5, 
-3.70000004768372, 3.09999990463257, 3.19999980926514, 3.09999990463257, 
-2.70000004768372, 6.7000002861023, 3.70000004768372, 5.19999980926514, 
-6.5, 6.7000002861023, 5.19999980926514, 3.09999990463257, 6.5, 
-3.60000014305115, 2.70000004768372, 6.5, 2.70000004768372, 3.60000014305115, 
-5.19999980926514, 6, 3.60000014305115, 6, 2.5, 6.7000002861023, 
-5.19999980926514, 6.5, 3.60000014305115, 3.70000004768372, 6.7000002861023, 
-4.09999990463257, 6.7000002861023, 3.09999990463257, 5.19999980926514, 
-9.10000038146973, 2.70000004768372, 6.7000002861023, 3.60000014305115, 
-4.09999990463257, 3.5, 3.5, 3.70000004768372, 6, 2.40000009536743, 
-4.30000019073486, 6.5, 3.09999990463257, 3.60000014305115, 2.40000009536743, 
-6.7000002861023, 5.19999980926514, 2.40000009536743, 3.60000014305115, 
-2.5, 3.19999980926514, 3.60000014305115, 3.09999990463257, 2.40000009536743, 
-3.09999990463257, 3.09999990463257, 6.7000002861023, 3.60000014305115, 
-3.19999980926514, 3.19999980926514, 3.60000014305115, 3.09999990463257, 
-6, 6.7000002861023, 4.30000019073486, 5.19999980926514, 6.80000019073486, 
-3.19999980926514, 3.19999980926514, 4.30000019073486, 3.70000004768372, 
-3.09999990463257, 5.19999980926514, 2.70000004768372, 6.7000002861023, 
-6.7000002861023, 3.5, 2.40000009536743, 2.40000009536743, 3.70000004768372, 
-3.60000014305115, 5.19999980926514, 3.09999990463257, 3.09999990463257, 
-3.09999990463257, 3.19999980926514, 6.7000002861023, 2.5, 6, 
-4.09999990463257, 2.40000009536743, 2.5, 2.70000004768372, 3.09999990463257, 
-3.09999990463257, 3.09999990463257, 3.19999980926514, 2.5, 5.19999980926514, 
-5.19999980926514, 4.30000019073486, 2.70000004768372, 6.5, 3.19999980926514, 
-4.30000019073486, 5.19999980926514, 6.5, 9.10000038146973, 3.09999990463257, 
-3.09999990463257, 3.5, 2.5, 6.7000002861023, 3.09999990463257, 
-3.60000014305115, 6.5, 6.7000002861023, 3.09999990463257, 3.19999980926514, 
-2.70000004768372, 2.70000004768372, 9.10000038146973, 5.19999980926514, 
-6.80000019073486, 3.19999980926514, 6, 3.70000004768372, 5.19999980926514, 
-3.60000014305115, 2.70000004768372, 2.70000004768372, 3.19999980926514, 
-3.09999990463257, 3.09999990463257, 2.70000004768372, 6.5, 2.5, 
-6.7000002861023, 3.70000004768372, 2.40000009536743, 3.09999990463257, 
-3.60000014305115, 3.09999990463257, 6, 3.19999980926514, 3.60000014305115, 
-6, 3.19999980926514, 9.10000038146973, 2.70000004768372, 2.5, 
-2.70000004768372, 3.60000014305115, 3.19999980926514, 5.19999980926514, 
-2.5, 2.70000004768372, 2.5, 3.60000014305115, 6.7000002861023, 
-2.40000009536743, 6.5, 5.19999980926514, 2.5, 2.40000009536743, 
-4.30000019073486, 6, 3.09999990463257, 3.09999990463257, 2.70000004768372, 
-6.7000002861023, 2.5, 6.7000002861023, 4.09999990463257, 6, 5.19999980926514, 
-6.5, 2.5, 6.80000019073486, 2.70000004768372, 2.5, 6.7000002861023, 
-6.80000019073486, 9.10000038146973, 2.40000009536743, 6.5, 6, 
-6.5, 3.19999980926514, 3.19999980926514, 2.5, 3.09999990463257, 
-5.19999980926514, 2.40000009536743, 3.19999980926514, 3.09999990463257, 
-3.09999990463257, 2.70000004768372, 4.09999990463257, 3.09999990463257, 
-3.70000004768372, 6.5, 3.70000004768372, 2.40000009536743, 5.19999980926514, 
-4.09999990463257, 3.60000014305115, 2.40000009536743, 6.7000002861023, 
-6.5, 4.09999990463257, 5.19999980926514, 3.19999980926514, 3.19999980926514, 
-6.5, 4.30000019073486, 6, 6.5, 6.5, 5.19999980926514, 2.5, 6.5, 
-3.09999990463257, 3.09999990463257, 2.70000004768372, 5.19999980926514, 
-3.60000014305115, 5.19999980926514, 0.100000001490116, 2.70000004768372, 
-4.30000019073486, 4.30000019073486, 3.5, 2.70000004768372, 3.09999990463257, 
-3.09999990463257, 6, 3.60000014305115, 6.7000002861023, 3.09999990463257, 
-3.60000014305115, 5.19999980926514, 6.80000019073486, 2.5, 5.19999980926514, 
-3.70000004768372, 2.40000009536743, 3.09999990463257, 5.19999980926514, 
-4.09999990463257, 4.30000019073486, 3.19999980926514, 5.19999980926514, 
-2.5, 6.80000019073486, 2.40000009536743, 6.5, 3.09999990463257, 
-6.7000002861023, 2.40000009536743, 5.19999980926514, 0.100000001490116, 
-6.80000019073486, 5.19999980926514, 4.30000019073486, 5.19999980926514, 
-9.10000038146973, 6.7000002861023, 4.09999990463257, 6, 2.40000009536743, 
-3.19999980926514, 6.7000002861023, 3.60000014305115, 5.19999980926514, 
-3.19999980926514, 3.19999980926514, 2.70000004768372, 5.19999980926514, 
-3.70000004768372, 6.7000002861023, 6.7000002861023, 6.5, 2.40000009536743, 
-5.19999980926514, 3.09999990463257, 5.19999980926514, 9.10000038146973, 
-6.5, 6.5, 3.70000004768372, 5.19999980926514, 6.5, 4.09999990463257, 
-2.5, 2.70000004768372, 3.5, 3.19999980926514, 3.5, 9.10000038146973, 
-3.70000004768372, 6, 5.19999980926514, 3.19999980926514, 3.19999980926514, 
-3.19999980926514, 2.40000009536743, 6.5, 6.5, 9.10000038146973, 
-2.70000004768372, 3.19999980926514, 2.5, 0.100000001490116, 3.09999990463257, 
-6.5, 9.10000038146973, 3.09999990463257, 6.7000002861023, 6.5, 
-4.30000019073486, 6.5, 5.19999980926514, 3.19999980926514, 6.5, 
-3.60000014305115, 3.70000004768372, 3.09999990463257, 2.40000009536743, 
-6.5, 6.7000002861023, 3.70000004768372, 5.19999980926514, 2.70000004768372, 
-2.5, 5.19999980926514, 5.19999980926514, 5.19999980926514, 3.09999990463257, 
-3.09999990463257, 3.19999980926514, 4.30000019073486, 3.09999990463257, 
-2.70000004768372, 6, 3.19999980926514, 5.19999980926514, 3.60000014305115, 
-9.10000038146973, 5.19999980926514, 3.09999990463257, 3.60000014305115, 
-6.7000002861023, 6.5, 6.7000002861023, 6, 2.5, 2.70000004768372, 
-6, 6.80000019073486, 6.80000019073486, 2.5, 3.19999980926514, 
-4.09999990463257, 5.19999980926514, 5.19999980926514, 2.5, 3.09999990463257, 
-5.19999980926514, 4.30000019073486, 2.70000004768372, 6.5, 5.19999980926514, 
-2.40000009536743, 4.09999990463257, 2.70000004768372, 2.40000009536743, 
-2.5, 9.10000038146973, 3.19999980926514, 6.5, 3.09999990463257, 
-4.09999990463257, 2.70000004768372, 4.30000019073486, 3.19999980926514, 
-6.7000002861023, 6.80000019073486, 9.10000038146973, 3.09999990463257, 
-3.19999980926514, 4.09999990463257, 5.19999980926514, 2.5, 6, 
-2.70000004768372, 2.5, 2.70000004768372, 3.09999990463257, 4.09999990463257, 
-6.7000002861023, 9.10000038146973, 3.09999990463257, 5.19999980926514, 
-4.30000019073486, 2.70000004768372, 5.19999980926514, 6.5, 5.19999980926514
-), sex = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
-0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 0L, 1L, 1L, 0L, 0L, 1L, 1L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-0L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 0L, 1L, 1L, 1L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 0L, 0L, 
-1L, 0L, 0L, 1L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 1L, 
-1L, 1L, 0L, 0L, 0L, 1L, 1L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 1L, 1L, 0L, 
-1L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 0L, 0L, 1L, 1L, 
-1L, 0L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 1L, 0L, 0L, 1L, 
-1L, 1L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 1L, 1L, 
-1L, 0L, 0L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 
-1L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 
-1L, 1L, 0L, 1L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 0L, 
-0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-0L, 0L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 1L, 1L, 1L, 0L, 0L, 1L, 
-1L, 1L, 1L, 0L, 0L, 1L, 1L, 1L, 0L, 0L, 1L, 1L, 0L, 1L, 1L, 1L, 
-0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 
-0L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 
-0L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 1L, 1L, 
-1L, 1L, 1L, 1L, 0L, 0L, 0L, 1L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 0L, 
-0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 1L, 
-1L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
-1L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 
-1L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 
-1L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 
-1L, 1L, 0L, 0L, 0L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 0L, 
-0L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 
-0L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 0L, 0L, 
-1L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 0L, 
-0L, 0L, 1L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 
-0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 
-0L, 0L, 0L, 0L, 1L, 1L, 1L, 0L, 0L, 1L, 1L, 1L, 1L, 0L, 1L, 1L, 
-1L, 1L, 0L, 0L, 0L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 
-1L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 
-0L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 
-0L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 
-0L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 
-0L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 
-1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 
-0L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 0L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 
-1L, 1L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 0L, 0L, 1L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 1L, 
-1L, 1L, 1L, 0L, 0L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 0L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 0L, 0L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 0L, 0L, 0L, 0L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 0L, 
-0L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 1L, 1L, 
-0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 1L, 1L, 1L, 1L, 0L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 
-0L, 0L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 1L, 0L, 1L, 1L, 0L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
-1L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 
-1L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 
-0L, 0L, 0L, 1L, 1L, 0L, 1L, 1L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 0L, 
-0L, 1L, 1L, 1L, 1L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-0L, 0L, 0L, 0L, 0L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 
-1L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 
-0L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
-0L, 0L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 
-0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 0L, 0L, 
-0L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 
-1L, 1L, 1L, 1L, 0L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 
-0L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 
-0L, 0L, 0L, 0L, 1L, 1L, 1L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 0L, 0L, 0L, 1L, 1L, 1L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 0L, 1L, 1L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 0L, 0L, 0L, 1L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 0L, 0L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 
-0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 1L, 0L, 0L, 0L, 1L, 1L, 
-1L, 1L, 1L, 0L, 0L, 0L, 0L, 1L, 1L, 0L, 0L, 0L, 0L, 1L, 1L, 0L, 
-1L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 
-0L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 
-1L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 
-0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 
-1L, 1L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 0L, 1L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 
-1L, 0L, 1L, 1L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 
-0L, 0L, 0L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 1L, 1L, 1L, 0L, 
-0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 1L, 1L, 1L, 0L, 0L, 1L, 0L, 
-0L, 0L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 0L, 0L, 0L, 
-0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 0L, 0L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 
-0L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-0L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 0L, 0L, 0L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 0L, 1L, 1L, 0L, 0L, 0L, 0L, 
-0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 
-0L, 0L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-0L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 1L, 
-1L, 1L, 0L, 0L, 0L, 0L, 1L, 1L, 0L, 0L, 1L, 1L, 1L, 0L, 0L, 0L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 0L, 
-0L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 1L, 0L, 
-0L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 0L, 
-1L, 1L, 0L, 1L, 1L, 1L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 
-0L, 1L, 1L, 1L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-0L, 0L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 0L, 0L, 1L, 
-0L, 0L, 1L, 1L, 1L, 1L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 
-1L, 0L, 0L, 0L, 0L, 1L, 1L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 0L, 0L, 
-0L, 0L, 0L, 0L, 1L, 1L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 
-0L, 0L, 0L, 1L, 1L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 1L, 
-0L, 0L, 0L, 1L, 1L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 
-1L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 1L, 1L, 0L, 
-0L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 0L, 1L, 0L, 0L, 0L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 
-0L, 0L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 0L, 1L, 1L, 
-1L, 1L, 1L, 1L, 0L, 1L, 0L, 0L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 
-0L, 0L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-0L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 1L, 0L, 0L, 
-1L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 1L, 
-1L, 1L, 1L, 1L, 1L, 0L, 0L, 1L, 0L, 0L, 0L, 1L, 1L, 0L, 0L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 0L, 0L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 0L, 0L, 0L, 0L, 1L, 1L, 0L, 0L, 0L, 1L, 0L, 0L, 1L, 
-1L, 1L, 1L, 1L, 0L, 1L, 0L, 0L, 0L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 
-1L, 0L, 1L, 1L, 0L, 0L, 0L, 1L, 0L, 0L, 1L, 1L, 0L, 0L, 0L, 1L, 
-1L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 
-1L, 1L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 1L, 
-0L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 0L, 0L, 1L, 1L, 1L, 1L, 0L, 0L, 
-0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 
-1L, 1L, 0L, 0L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 1L, 
-0L, 1L, 0L, 0L, 0L, 1L, 1L, 1L, 0L, 0L, 1L, 1L, 0L, 1L, 0L, 1L, 
-1L, 1L, 0L, 0L, 0L, 1L, 1L, 1L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 
-1L, 0L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 1L, 1L, 
-1L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 0L, 0L, 1L, 0L, 1L, 
-1L, 1L, 0L, 0L, 1L, 1L, 0L, 1L, 1L, 0L, 0L, 0L, 1L, 1L, 0L, 0L, 
-0L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 1L, 1L, 
-1L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 
-1L, 1L, 1L, 0L, 0L, 0L, 1L, 0L, 0L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 
-0L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 1L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 
-0L, 0L, 1L, 1L, 1L, 0L, 0L, 1L, 0L, 1L, 0L, 1L, 1L, 0L, 1L, 1L, 
-1L, 0L, 0L, 1L, 0L, 0L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 
-0L, 0L, 0L, 1L, 1L, 1L, 1L, 0L, 1L, 0L, 1L, 0L, 0L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 1L, 1L, 1L, 0L, 0L, 1L, 1L, 0L, 
-0L, 0L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 0L, 1L, 1L, 0L, 0L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 0L, 1L, 0L, 0L, 
-0L, 0L, 0L, 1L, 0L, 0L, 0L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 0L, 
-0L, 1L, 0L, 0L, 0L, 1L, 1L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 
-1L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 0L, 0L, 1L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 
-0L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 0L, 1L, 0L, 0L, 0L, 1L, 
-1L, 1L, 0L, 1L, 0L, 1L, 0L, 1L, 1L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 
-0L, 1L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 1L, 1L, 
-0L, 0L, 0L, 1L, 1L, 0L, 1L, 1L, 0L, 1L, 1L, 1L, 0L, 1L, 0L, 0L, 
-0L, 1L, 1L, 0L, 1L, 0L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 1L, 1L, 0L, 
-1L, 0L, 1L, 0L, 0L, 1L, 0L, 0L, 1L, 1L, 1L, 0L, 0L, 1L, 0L, 0L, 
-0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 1L, 0L, 1L, 1L, 1L, 
-0L, 0L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 0L, 1L, 1L, 
-1L, 0L, 1L, 0L, 1L, 1L, 1L, 0L, 1L, 1L, 0L, 0L, 1L, 1L, 1L, 1L, 
-1L, 0L, 1L, 1L, 0L, 1L, 1L, 0L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 0L, 
-1L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 1L, 
-1L, 0L, 0L, 0L, 1L, 1L, 0L, 1L, 0L, 1L, 0L, 0L, 0L, 1L, 0L, 0L, 
-0L, 0L, 1L, 1L, 0L, 0L, 1L, 1L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 0L, 
-1L, 0L, 0L, 1L, 0L, 0L, 1L, 1L), los = c(67L, 53L, 51L, 30L, 
-43L, 43L, 32L, 47L, 50L, 37L, 32L, 42L, 33L, 28L, 50L, 17L, 22L, 
-30L, 30L, 25L, 40L, 46L, 38L, 32L, 13L, 9L, 8L, 34L, 7L, 7L, 
-7L, 6L, 6L, 5L, 5L, 5L, 42L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 3L, 
-3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 27L, 11L, 2L, 2L, 2L, 
-2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
-13L, 1L, 1L, 1L, 1L, 1L, 9L, 16L, 12L, 7L, 6L, 5L, 5L, 4L, 4L, 
-4L, 4L, 4L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 
-2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
-2L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 26L, 8L, 25L, 12L, 7L, 
-7L, 7L, 6L, 5L, 5L, 5L, 5L, 14L, 13L, 4L, 4L, 4L, 4L, 4L, 4L, 
-4L, 4L, 4L, 4L, 4L, 11L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 2L, 
-2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
-2L, 2L, 2L, 2L, 2L, 10L, 1L, 1L, 1L, 1L, 1L, 1L, 19L, 17L, 8L, 
-8L, 8L, 7L, 6L, 6L, 6L, 5L, 5L, 5L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 
-3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 2L, 2L, 2L, 2L, 2L, 
-2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 10L, 10L, 
-1L, 1L, 1L, 1L, 9L, 9L, 9L, 8L, 8L, 23L, 7L, 7L, 6L, 6L, 6L, 
-9L, 9L, 14L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 13L, 19L, 4L, 4L, 
-4L, 4L, 4L, 4L, 4L, 21L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 
-3L, 3L, 3L, 11L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
-2L, 2L, 2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 15L, 8L, 
-8L, 12L, 12L, 7L, 7L, 21L, 17L, 6L, 6L, 6L, 6L, 6L, 5L, 5L, 30L, 
-4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 
-3L, 3L, 3L, 3L, 8L, 11L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
-2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 10L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 10L, 9L, 9L, 8L, 7L, 6L, 
-5L, 5L, 4L, 4L, 4L, 4L, 4L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 
-16L, 8L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
-2L, 10L, 10L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 13L, 26L, 8L, 8L, 8L, 7L, 16L, 28L, 6L, 6L, 6L, 
-6L, 9L, 9L, 19L, 25L, 25L, 5L, 14L, 29L, 4L, 4L, 4L, 4L, 4L, 
-8L, 12L, 3L, 3L, 3L, 3L, 3L, 11L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
-2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 36L, 24L, 10L, 1L, 1L, 
-1L, 1L, 1L, 10L, 10L, 5L, 5L, 13L, 4L, 4L, 4L, 12L, 3L, 3L, 3L, 
-7L, 11L, 6L, 6L, 6L, 9L, 14L, 5L, 5L, 5L, 6L, 6L, 6L, 9L, 4L, 
-11L, 15L, 8L, 8L, 3L, 3L, 3L, 3L, 3L, 3L, 8L, 8L, 7L, 7L, 2L, 
-2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 1L, 1L, 
-1L, 1L, 1L, 18L, 10L, 10L, 10L, 9L, 4L, 35L, 8L, 8L, 7L, 16L, 
-3L, 3L, 3L, 7L, 2L, 2L, 2L, 6L, 6L, 6L, 6L, 6L, 6L, 5L, 5L, 5L, 
-5L, 5L, 5L, 5L, 5L, 9L, 9L, 4L, 4L, 4L, 4L, 4L, 4L, 11L, 8L, 
-3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 8L, 7L, 2L, 2L, 2L, 
-2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 6L, 1L, 1L, 1L, 1L, 4L, 4L, 
-4L, 4L, 8L, 8L, 8L, 7L, 16L, 3L, 3L, 23L, 12L, 7L, 2L, 6L, 9L, 
-5L, 5L, 5L, 5L, 5L, 6L, 6L, 6L, 13L, 4L, 4L, 4L, 4L, 4L, 4L, 
-22L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 8L, 8L, 2L, 
-2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 24L, 13L, 6L, 5L, 5L, 
-10L, 10L, 1L, 1L, 1L, 1L, 10L, 5L, 5L, 9L, 4L, 4L, 8L, 7L, 7L, 
-3L, 3L, 3L, 23L, 12L, 7L, 7L, 4L, 2L, 2L, 6L, 6L, 29L, 10L, 10L, 
-1L, 5L, 5L, 5L, 6L, 13L, 4L, 4L, 8L, 3L, 3L, 3L, 3L, 3L, 3L, 
-8L, 7L, 7L, 7L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 5L, 
-5L, 9L, 10L, 10L, 10L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-10L, 5L, 9L, 4L, 8L, 8L, 8L, 7L, 3L, 40L, 7L, 4L, 4L, 4L, 4L, 
-4L, 15L, 2L, 2L, 2L, 2L, 2L, 2L, 6L, 9L, 18L, 5L, 5L, 5L, 5L, 
-6L, 9L, 4L, 4L, 4L, 4L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 8L, 3L, 3L, 
-3L, 8L, 7L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 15L, 6L, 
-5L, 1L, 1L, 1L, 1L, 1L, 1L, 31L, 10L, 10L, 5L, 5L, 4L, 12L, 12L, 
-18L, 7L, 16L, 3L, 11L, 11L, 4L, 4L, 2L, 2L, 10L, 10L, 9L, 13L, 
-36L, 9L, 9L, 6L, 6L, 9L, 8L, 30L, 4L, 4L, 4L, 22L, 22L, 3L, 3L, 
-3L, 3L, 3L, 3L, 8L, 8L, 7L, 7L, 3L, 3L, 3L, 3L, 3L, 7L, 15L, 
-6L, 6L, 6L, 6L, 6L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 23L, 6L, 16L, 
-9L, 10L, 5L, 5L, 5L, 1L, 1L, 1L, 1L, 21L, 2L, 2L, 2L, 2L, 2L, 
-2L, 2L, 2L, 2L, 4L, 4L, 4L, 11L, 25L, 3L, 3L, 7L, 7L, 4L, 4L, 
-4L, 4L, 8L, 13L, 13L, 24L, 11L, 19L, 2L, 2L, 6L, 6L, 20L, 20L, 
-1L, 5L, 5L, 5L, 5L, 5L, 17L, 6L, 10L, 9L, 15L, 15L, 4L, 4L, 4L, 
-4L, 4L, 3L, 3L, 3L, 3L, 3L, 3L, 7L, 7L, 3L, 3L, 3L, 3L, 3L, 8L, 
-8L, 12L, 6L, 2L, 2L, 2L, 2L, 2L, 16L, 5L, 5L, 5L, 5L, 5L, 9L, 
-10L, 10L, 5L, 5L, 5L, 1L, 1L, 5L, 9L, 2L, 2L, 2L, 2L, 2L, 2L, 
-2L, 2L, 2L, 2L, 2L, 4L, 4L, 4L, 4L, 4L, 8L, 7L, 3L, 3L, 3L, 3L, 
-7L, 2L, 4L, 4L, 8L, 2L, 2L, 6L, 1L, 1L, 9L, 9L, 5L, 5L, 14L, 
-17L, 6L, 17L, 8L, 8L, 4L, 4L, 4L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 
-3L, 3L, 3L, 3L, 12L, 7L, 3L, 3L, 3L, 19L, 8L, 8L, 7L, 15L, 28L, 
-11L, 6L, 6L, 6L, 2L, 17L, 6L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 1L, 
-1L, 1L, 1L, 5L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 4L, 4L, 
-4L, 4L, 4L, 6L, 4L, 4L, 8L, 7L, 7L, 3L, 3L, 3L, 3L, 3L, 15L, 
-4L, 4L, 4L, 4L, 34L, 2L, 10L, 10L, 6L, 13L, 1L, 1L, 5L, 17L, 
-6L, 8L, 8L, 8L, 4L, 4L, 14L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 
-7L, 12L, 12L, 7L, 3L, 3L, 7L, 6L, 6L, 6L, 2L, 2L, 2L, 2L, 2L, 
-2L, 2L, 22L, 5L, 14L, 5L, 5L, 5L, 5L, 1L, 2L, 2L, 2L, 2L, 2L, 
-2L, 2L, 2L, 4L, 4L, 4L, 6L, 11L, 4L, 3L, 3L, 3L, 23L, 11L, 11L, 
-7L, 26L, 4L, 4L, 4L, 2L, 2L, 10L, 1L, 1L, 1L, 10L, 10L, 1L, 9L, 
-9L, 5L, 5L, 5L, 17L, 6L, 6L, 6L, 10L, 15L, 8L, 4L, 4L, 4L, 4L, 
-14L, 14L, 3L, 3L, 3L, 12L, 7L, 3L, 3L, 22L, 19L, 8L, 7L, 6L, 
-6L, 6L, 2L, 2L, 9L, 16L, 5L, 10L, 5L, 5L, 5L, 1L, 20L, 5L, 13L, 
-2L, 2L, 2L, 2L, 2L, 2L, 4L, 4L, 4L, 8L, 8L, 7L, 7L, 22L, 18L, 
-18L, 3L, 3L, 3L, 7L, 2L, 15L, 4L, 4L, 4L, 4L, 4L, 17L, 17L, 17L, 
-17L, 2L, 10L, 25L, 16L, 16L, 1L, 1L, 1L, 5L, 5L, 5L, 1L, 9L, 
-9L, 9L, 25L, 15L, 6L, 6L, 6L, 10L, 15L, 4L, 4L, 14L, 14L, 14L, 
-14L, 14L, 26L, 14L, 3L, 3L, 3L, 3L, 3L, 18L, 7L, 3L, 13L, 13L, 
-13L, 7L, 6L, 6L, 2L, 2L, 2L, 2L, 2L, 9L, 12L, 12L, 12L, 12L, 
-12L, 12L, 47L, 6L, 16L, 5L, 5L, 5L, 5L, 14L, 11L, 11L, 11L, 11L, 
-11L, 14L, 13L, 13L, 13L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 4L, 
-4L, 10L, 10L, 10L, 10L, 10L, 10L, 12L, 12L, 7L, 9L, 9L, 9L, 9L, 
-9L, 8L, 3L, 2L, 2L, 15L, 4L, 4L, 17L, 8L, 8L, 8L, 8L, 8L, 8L, 
-8L, 8L, 8L, 8L, 8L, 8L, 8L, 11L, 6L, 9L, 1L, 1L, 12L, 12L, 1L, 
-1L, 1L, 1L, 5L, 5L, 5L, 7L, 7L, 7L, 7L, 7L, 10L, 10L, 9L, 9L, 
-15L, 15L, 15L, 6L, 10L, 6L, 9L, 32L, 8L, 8L, 4L, 14L, 3L, 3L, 
-3L, 3L, 7L, 7L, 7L, 7L, 7L, 7L, 3L, 13L, 13L, 13L, 13L, 19L, 
-8L, 4L, 4L, 4L, 6L, 6L, 2L, 2L, 2L, 9L, 12L, 12L, 12L, 12L, 12L, 
-16L, 5L, 14L, 5L, 14L, 20L, 11L, 11L, 11L, 11L, 11L, 11L, 11L, 
-11L, 19L, 13L, 13L, 13L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 4L, 4L, 
-6L, 10L, 10L, 10L, 10L, 10L, 4L, 4L, 7L, 7L, 7L, 11L, 3L, 3L, 
-18L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 8L, 35L, 3L, 
-7L, 2L, 4L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 34L, 2L, 10L, 
-9L, 16L, 12L, 12L, 1L, 5L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 
-7L, 10L, 9L, 5L, 15L, 15L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 15L, 8L, 
-8L, 8L, 8L, 7L, 22L, 11L, 14L, 14L, 14L, 14L, 14L, 14L, 3L, 3L, 
-3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 7L, 16L, 7L, 7L, 7L, 3L, 3L, 
-22L, 13L, 13L, 11L, 4L, 12L, 12L, 12L, 6L, 5L, 64L, 5L, 5L, 5L, 
-5L, 5L, 5L, 1L, 1L, 11L, 11L, 11L, 5L, 13L, 13L, 2L, 2L, 2L, 
-2L, 4L, 19L, 11L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 
-4L, 7L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 8L, 11L, 11L, 12L, 
-26L, 2L, 4L, 17L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 10L, 18L, 12L, 
-12L, 1L, 1L, 5L, 5L, 7L, 7L, 7L, 7L, 7L, 18L, 17L, 6L, 6L, 21L, 
-2L, 32L, 8L, 8L, 8L, 8L, 8L, 7L, 4L, 14L, 14L, 14L, 14L, 14L, 
-14L, 5L, 5L, 14L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 7L, 22L, 8L, 7L, 
-7L, 11L, 11L, 6L, 6L, 6L, 6L, 2L, 9L, 9L, 12L, 12L, 12L, 12L, 
-5L, 5L, 5L, 5L, 5L, 5L, 11L, 11L, 11L, 14L, 5L, 13L, 2L, 2L, 
-2L, 2L, 4L, 4L, 6L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 
-10L, 10L, 4L, 3L, 3L, 18L, 10L, 10L, 10L, 3L, 9L, 9L, 9L, 9L, 
-9L, 9L, 9L, 9L, 9L, 8L, 8L, 8L, 8L, 3L, 3L, 11L, 15L, 8L, 8L, 
-8L, 8L, 8L, 8L, 8L, 8L, 8L, 13L, 2L, 10L, 19L, 18L, 12L, 1L, 
-5L, 5L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 10L, 21L, 9L, 9L, 24L, 
-15L, 15L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 9L, 15L, 15L, 2L, 
-2L, 7L, 7L, 7L, 4L, 22L, 14L, 14L, 14L, 5L, 14L, 3L, 3L, 3L, 
-3L, 23L, 23L, 12L, 7L, 7L, 13L, 13L, 13L, 13L, 13L, 48L, 11L, 
-30L, 6L, 6L, 12L, 12L, 12L, 6L, 5L, 5L, 25L, 14L, 6L, 11L, 11L, 
-11L, 13L, 13L, 13L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
-19L, 11L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 36L, 27L, 10L, 10L, 
-10L, 3L, 29L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 8L, 11L, 11L, 26L, 
-15L, 4L, 4L, 4L, 24L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 11L, 
-19L, 5L, 2L, 10L, 6L, 25L, 25L, 20L, 16L, 16L, 12L, 1L, 1L, 1L, 
-1L, 5L, 7L, 7L, 7L, 7L, 7L, 7L, 10L, 9L, 15L, 15L, 6L, 10L, 6L, 
-6L, 6L, 6L, 6L, 9L, 9L, 7L, 14L, 14L, 31L, 3L, 3L, 3L, 3L, 3L, 
-18L, 12L, 7L, 7L, 3L, 3L, 13L, 13L, 35L, 7L, 11L, 11L, 11L, 11L, 
-11L, 6L, 6L, 20L, 2L, 12L, 12L, 12L, 12L, 5L, 5L, 5L, 25L, 5L, 
-20L, 20L, 6L, 6L, 6L, 11L, 11L, 11L, 11L, 11L, 11L, 11L, 2L, 
-2L, 2L, 4L, 4L, 4L, 6L, 11L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 
-10L, 21L, 12L, 7L, 27L, 18L, 10L, 10L, 9L, 9L, 9L, 9L, 9L, 9L, 
-9L, 9L, 9L, 9L, 9L, 9L, 19L, 8L, 8L, 11L, 4L, 4L, 17L, 17L, 8L, 
-8L, 8L, 8L, 8L, 8L, 8L, 8L, 5L, 5L, 10L, 10L, 25L, 16L, 29L, 
-12L, 12L, 1L, 1L, 1L, 1L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 10L, 15L, 
-15L, 34L, 17L, 10L, 6L, 6L, 6L, 6L, 6L, 9L, 9L, 7L, 7L, 14L, 
-14L, 14L, 14L, 3L, 3L, 7L, 22L, 4L, 13L, 11L, 11L, 11L, 15L, 
-4L, 6L, 6L, 20L, 9L, 12L, 12L, 12L, 12L, 12L, 12L, 16L, 9L, 5L, 
-5L, 5L, 20L, 11L, 11L, 13L, 13L, 2L, 2L, 2L, 2L, 2L, 4L, 4L, 
-6L, 6L, 6L, 10L, 10L, 10L, 10L, 10L, 10L, 23L, 18L, 18L, 10L, 
-10L, 10L, 10L, 10L, 14L, 3L, 3L, 3L, 9L, 9L, 9L, 9L, 9L, 9L, 
-9L, 44L, 8L, 20L, 2L, 2L, 15L, 4L, 17L, 8L, 8L, 8L, 8L, 8L, 8L, 
-8L, 8L, 8L, 8L, 8L, 8L, 13L, 30L, 5L, 10L, 12L, 12L, 1L, 1L, 
-1L, 16L, 7L, 7L, 7L, 7L, 7L, 7L, 10L, 15L, 15L, 17L, 17L, 6L, 
-10L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 9L, 9L, 9L, 2L, 8L, 7L, 14L, 
-14L, 14L, 14L, 5L, 14L, 3L, 7L, 22L, 13L, 8L, 11L, 11L, 11L, 
-11L, 4L, 4L, 6L, 9L, 9L, 12L, 12L, 12L, 16L, 5L, 68L, 14L, 8L, 
-8L, 20L, 6L, 11L, 11L, 11L, 11L, 11L, 11L, 11L, 21L, 24L, 19L, 
-13L, 13L, 13L, 13L, 2L, 2L, 2L, 2L, 2L, 4L, 4L, 19L, 19L, 11L, 
-10L, 10L, 10L, 10L, 10L, 10L, 3L, 18L, 10L, 10L, 40L, 3L, 9L, 
-9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 8L, 35L, 11L, 26L, 13L, 
-4L, 4L, 4L, 17L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 
-13L, 7L, 10L, 12L, 16L, 16L, 16L, 16L, 12L, 1L, 5L, 5L, 7L, 7L, 
-7L, 7L, 7L, 7L, 7L, 7L, 9L, 11L, 15L, 15L, 15L, 15L, 15L, 17L, 
-13L, 2L, 19L, 7L, 7L, 7L, 10L, 14L, 14L, 14L, 14L, 14L, 14L, 
-14L, 3L, 3L, 3L, 7L, 7L, 13L, 13L, 13L, 13L, 11L, 30L, 4L, 20L, 
-9L, 8L, 8L, 12L, 12L, 12L, 12L, 12L, 12L, 5L, 29L, 25L, 5L, 5L, 
-8L, 8L, 8L, 8L, 6L, 11L, 11L, 11L, 11L, 11L, 11L, 11L, 11L, 2L, 
-2L, 2L, 2L, 4L, 4L, 4L, 4L, 4L, 19L, 6L, 22L, 11L, 10L, 10L, 
-10L, 10L, 10L, 10L, 10L, 10L, 3L, 4L, 7L, 11L, 14L, 3L, 10L, 
-10L, 10L, 10L, 3L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 15L, 4L, 17L, 
-8L, 8L, 8L, 8L, 8L, 8L, 8L, 13L, 7L, 7L, 7L, 16L, 21L, 1L, 16L, 
-12L, 12L, 1L, 1L, 7L, 7L, 21L, 10L, 20L, 15L, 6L, 13L, 2L, 2L, 
-8L, 8L, 10L, 10L, 14L, 14L, 5L, 14L, 3L, 3L, 7L, 7L, 9L, 9L, 
-13L, 11L, 11L, 4L, 4L, 17L, 6L, 8L, 8L, 12L, 12L, 12L, 5L, 8L, 
-8L, 8L, 7L, 6L, 6L, 11L, 11L, 11L, 11L, 13L, 13L, 13L, 2L, 2L, 
-2L, 17L, 17L, 19L, 6L, 22L, 10L, 10L, 3L, 12L, 14L, 18L, 10L, 
-14L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 19L, 8L, 35L, 11L, 26L, 15L, 
-15L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 7L, 7L, 16L, 16L, 
-16L, 16L, 12L, 12L, 12L, 7L, 7L, 7L, 7L, 10L, 10L, 9L, 2L, 2L, 
-11L, 15L, 15L, 15L, 6L, 6L, 9L, 9L, 2L, 2L, 2L, 2L, 8L, 8L, 8L, 
-7L, 7L, 7L, 7L, 10L, 14L, 14L, 3L, 18L, 7L, 9L, 9L, 9L, 15L, 
-4L, 11L, 11L, 11L, 11L, 65L, 6L, 9L, 9L, 9L, 12L, 12L, 12L, 12L, 
-12L, 12L, 12L, 12L, 12L, 12L, 47L, 5L, 8L, 8L, 8L, 8L, 1L, 7L, 
-17L, 11L, 11L, 11L, 11L, 11L, 11L, 5L, 13L, 2L, 2L, 2L, 6L, 6L, 
-11L, 10L, 10L, 10L, 10L, 10L, 10L, 3L, 7L, 7L, 3L, 18L, 10L, 
-10L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 83L, 8L, 2L, 17L, 8L, 
-8L, 8L, 8L, 8L, 8L, 13L, 7L, 16L, 5L, 5L, 10L, 1L, 1L, 5L, 7L, 
-9L, 2L, 2L, 24L, 11L, 15L, 15L, 6L, 9L, 9L, 9L, 2L, 8L, 7L, 7L, 
-7L, 14L, 14L, 14L, 14L, 5L, 3L, 18L, 12L, 6L, 7L, 9L, 4L, 4L, 
-13L, 13L, 13L, 13L, 11L, 11L, 11L, 4L, 4L, 4L, 4L, 8L, 12L, 12L, 
-12L, 12L, 12L, 14L, 20L, 16L, 8L, 8L, 12L, 20L, 20L, 7L, 6L, 
-11L, 11L, 22L, 15L, 13L, 13L, 4L, 4L, 22L, 10L, 10L, 10L, 10L, 
-10L, 10L, 3L, 3L, 10L, 9L, 9L, 9L, 9L, 9L, 9L, 19L, 13L, 15L, 
-4L, 8L, 8L, 8L, 8L, 7L, 7L, 5L, 5L, 5L, 5L, 10L, 12L, 16L, 16L, 
-16L, 12L, 7L, 7L, 7L, 7L, 7L, 24L, 15L, 15L, 9L, 8L, 7L, 23L, 
-23L, 10L, 10L, 14L, 14L, 14L, 14L, 3L, 3L, 18L, 10L, 10L, 7L, 
-22L, 9L, 9L, 9L, 15L, 15L, 4L, 13L, 13L, 13L, 15L, 17L, 11L, 
-4L, 6L, 8L, 8L, 12L, 12L, 12L, 5L, 9L, 5L, 8L, 8L, 8L, 7L, 7L, 
-17L, 6L, 11L, 11L, 11L, 11L, 13L, 28L, 15L, 2L, 2L, 4L, 19L, 
-19L, 11L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 14L, 22L, 14L, 18L, 
-18L, 10L, 10L, 14L, 14L, 3L, 3L, 3L, 9L, 9L, 9L, 9L, 9L, 9L, 
-9L, 11L, 13L, 13L, 15L, 4L, 17L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 
-7L, 7L, 11L, 5L, 10L, 20L, 12L, 12L, 12L, 7L, 13L, 2L, 11L, 11L, 
-15L, 15L, 6L, 2L, 19L, 18L, 7L, 7L, 27L, 10L, 14L, 3L, 3L, 6L, 
-6L, 18L, 10L, 7L, 22L, 4L, 4L, 4L, 13L, 11L, 11L, 6L, 6L, 20L, 
-20L, 20L, 8L, 8L, 16L, 5L, 5L, 24L, 8L, 8L, 8L, 8L, 6L, 6L, 6L, 
-11L, 11L, 11L, 11L, 11L, 19L, 9L, 9L, 10L, 10L, 10L, 10L, 10L, 
-10L, 14L, 14L, 10L, 10L, 10L, 5L, 14L, 9L, 9L, 9L, 8L, 13L, 12L, 
-8L, 7L, 5L, 12L, 12L, 20L, 11L, 12L, 10L, 13L, 11L, 15L, 15L, 
-15L, 15L, 15L, 10L, 6L, 9L, 9L, 2L, 8L, 14L, 9L, 9L, 9L, 9L, 
-14L, 14L, 18L, 10L, 9L, 9L, 13L, 13L, 8L, 8L, 8L, 11L, 4L, 8L, 
-12L, 16L, 8L, 8L, 12L, 7L, 7L, 15L, 17L, 6L, 11L, 15L, 13L, 23L, 
-6L, 6L, 14L, 14L, 9L, 9L, 9L, 10L, 10L, 32L, 14L, 10L, 3L, 13L, 
-39L, 22L, 13L, 13L, 2L, 15L, 12L, 8L, 8L, 16L, 25L, 20L, 20L, 
-11L, 11L, 7L, 21L, 10L, 10L, 10L, 10L, 10L, 6L, 9L, 9L, 18L, 
-7L, 7L, 18L, 9L, 9L, 14L, 6L, 18L, 10L, 9L, 9L, 9L, 4L, 4L, 17L, 
-25L, 20L, 8L, 16L, 8L, 8L, 8L, 15L, 15L, 6L, 6L, 13L, 13L, 6L, 
-22L, 14L, 14L, 14L, 14L, 40L, 40L, 27L, 22L, 10L, 10L, 9L, 9L, 
-9L, 19L, 8L, 11L, 17L, 12L, 8L, 8L, 7L, 7L, 7L, 7L, 7L, 11L, 
-16L, 10L, 12L, 11L, 11L, 12L, 12L, 12L, 9L, 13L, 13L, 11L, 15L, 
-10L, 9L, 9L, 2L, 18L, 7L, 14L, 14L, 9L, 9L, 9L, 6L, 4L, 8L, 11L, 
-11L, 15L, 6L, 25L, 8L, 12L, 8L, 8L, 20L, 15L, 15L, 17L, 6L, 11L, 
-2L, 4L, 22L, 14L, 14L, 9L, 10L, 10L, 10L, 14L, 14L, 18L, 10L, 
-10L, 13L, 9L, 9L, 19L, 8L, 8L, 8L, 12L, 8L, 8L, 7L, 5L, 5L, 12L, 
-20L, 20L, 11L, 12L, 7L, 10L, 10L, 13L, 7L, 27L, 18L, 18L, 14L, 
-36L, 9L, 9L, 9L, 9L, 14L, 10L, 7L, 9L, 9L, 15L, 15L, 13L, 8L, 
-11L, 11L, 4L, 17L, 8L, 16L, 16L, 12L, 8L, 7L, 17L, 6L, 11L, 15L, 
-23L, 23L, 19L, 6L, 14L, 14L, 14L, 9L, 10L, 10L, 3L, 10L, 9L, 
-9L, 9L, 8L, 13L, 39L, 12L, 8L, 8L, 8L, 8L, 7L, 16L, 16L, 5L, 
-20L, 16L, 11L, 11L, 16L, 7L, 8L, 13L, 9L, 9L, 9L, 19L, 18L, 18L, 
-7L, 10L, 18L, 10L, 9L, 18L, 9L, 17L, 8L, 11L, 7L, 16L, 12L, 8L, 
-12L, 15L, 15L, 17L, 6L, 11L, 11L, 11L, 24L, 23L, 11L, 14L, 14L, 
-14L, 14L, 14L, 14L, 22L, 13L, 9L, 12L, 12L, 11L, 21L, 29L, 12L, 
-20L, 11L, 11L, 20L, 13L, 13L, 10L, 10L, 10L, 10L, 2L, 27L, 26L, 
-17L, 11L, 11L, 20L, 20L, 7L, 16L, 7L, 8L, 8L, 8L, 8L, 12L, 15L, 
-15L, 15L, 17L, 6L, 6L, 9L, 32L, 4L, 14L, 5L, 14L, 13L, 22L, 11L, 
-12L, 12L, 11L, 12L, 19L, 18L, 18L, 7L, 23L, 18L, 9L, 6L, 9L, 
-15L, 8L, 4L, 25L, 8L, 12L, 12L, 7L, 15L, 15L, 15L, 15L, 6L, 14L, 
-9L, 14L, 13L, 8L, 11L, 11L, 16L, 11L, 5L, 8L, 2L, 11L, 11L, 19L, 
-19L, 10L, 10L, 9L, 6L, 10L, 9L, 8L, 8L, 26L, 8L, 16L, 17L, 6L, 
-6L, 10L, 14L, 3L, 3L, 9L, 12L, 11L, 3L, 11L, 13L, 11L, 19L, 10L, 
-9L, 18L, 10L, 10L, 10L, 8L, 25L, 9L, 12L, 12L, 7L, 16L, 15L, 
-6L, 9L, 9L, 5L, 14L, 14L, 14L, 40L, 3L, 13L, 11L, 11L, 12L, 24L, 
-5L, 11L, 11L, 19L, 2L, 18L, 18L, 10L, 10L, 4L, 17L, 8L, 8L, 25L, 
-24L, 15L, 15L, 15L, 5L, 14L, 14L, 14L, 14L, 12L, 12L, 11L, 16L, 
-20L, 20L, 20L, 8L, 8L, 13L, 13L, 11L, 10L, 19L, 10L, 4L, 17L, 
-8L, 16L, 12L, 15L, 17L, 11L, 23L, 14L, 9L, 22L, 13L, 7L, 8L, 
-20L, 11L, 11L, 11L, 11L, 8L, 10L, 10L, 9L, 10L, 18L, 10L, 9L, 
-17L, 16L, 12L, 7L, 16L, 14L, 11L, 12L, 5L, 29L, 9L, 17L, 8L, 
-16L, 16L, 12L, 15L, 17L, 6L, 9L, 9L, 10L, 11L, 10L, 9L, 9L, 16L, 
-10L, 9L, 12L, 24L, 12L, 15L, 9L, 8L, 8L, 10L, 15L, 4L, 14L, 3L, 
-12L, 11L, 8L, 10L, 17L, 17L, 12L, 17L, 20L, 13L, 11L, 10L, 26L, 
-10L, 13L, 11L, 13L, 13L, 13L, 13L, 14L, 19L), admit = c(1L, 1L, 
-0L, 1L, 0L, 0L, 1L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-0L, 1L, 1L, 0L, 0L, 1L, 1L, 0L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 1L, 
-1L, 0L, 1L, 0L, 0L, 1L, 1L, 0L, 0L, 0L, 1L, 1L, 0L, 0L, 0L, 0L, 
-1L, 1L, 0L, 1L, 0L, 0L, 1L, 1L, 0L, 0L, 0L, 0L, 1L, 0L, 1L, 0L, 
-1L, 0L, 1L, 1L, 1L, 0L, 1L, 1L, 0L, 1L, 1L, 1L, 0L, 0L, 1L, 0L, 
-1L, 1L, 0L, 0L, 1L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 0L, 
-0L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 1L, 
-1L, 0L, 0L, 1L, 0L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 
-1L, 0L, 0L, 1L, 0L, 0L, 0L, 1L, 1L, 1L, 0L, 0L, 1L, 1L, 0L, 0L, 
-1L, 1L, 1L, 0L, 0L, 1L, 1L, 1L, 0L, 0L, 0L, 1L, 0L, 1L, 0L, 1L, 
-0L, 0L, 0L, 0L, 1L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 
-0L, 1L, 0L, 1L, 1L, 0L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 
-0L, 0L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 1L, 0L, 0L, 
-0L, 0L, 1L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 0L, 0L, 
-0L, 0L, 1L, 1L, 0L, 0L, 1L, 0L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 0L, 0L, 0L, 1L, 0L, 1L, 0L, 1L, 1L, 0L, 1L, 0L, 0L, 1L, 
-1L, 1L, 0L, 0L, 0L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 0L, 0L, 1L, 0L, 
-0L, 0L, 1L, 1L, 1L, 0L, 0L, 1L, 0L, 1L, 1L, 0L, 0L, 0L, 1L, 1L, 
-0L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 1L, 0L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 0L, 0L, 1L, 0L, 0L, 1L, 0L, 0L, 0L, 1L, 0L, 0L, 
-1L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 0L, 1L, 1L, 1L, 
-1L, 1L, 0L, 0L, 0L, 1L, 0L, 1L, 1L, 0L, 1L, 0L, 1L, 0L, 0L, 0L, 
-0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 1L, 1L, 0L, 1L, 1L, 1L, 0L, 
-0L, 0L, 1L, 0L, 1L, 0L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 1L, 
-0L, 0L, 1L, 0L, 1L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 
-0L, 0L, 1L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 0L, 1L, 
-1L, 1L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 0L, 0L, 1L, 0L, 1L, 1L, 1L, 
-1L, 0L, 1L, 1L, 1L, 0L, 1L, 0L, 0L, 0L, 0L, 1L, 0L, 1L, 0L, 0L, 
-0L, 1L, 0L, 0L, 1L, 0L, 1L, 0L, 0L, 1L, 0L, 1L, 1L, 0L, 1L, 1L, 
-1L, 1L, 0L, 0L, 1L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 0L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 0L, 1L, 1L, 1L, 0L, 0L, 0L, 1L, 0L, 0L, 1L, 1L, 1L, 1L, 
-0L, 0L, 0L, 0L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 
-1L, 1L, 0L, 0L, 0L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 0L, 1L, 1L, 
-0L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 0L, 1L, 1L, 0L, 1L, 1L, 1L, 
-0L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 1L, 0L, 0L, 1L, 1L, 1L, 
-0L, 0L, 1L, 0L, 1L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 0L, 1L, 
-0L, 0L, 1L, 1L, 0L, 1L, 0L, 1L, 0L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 
-1L, 0L, 0L, 1L, 0L, 1L, 0L, 1L, 0L, 1L, 1L, 1L, 1L, 0L, 1L, 0L, 
-0L, 0L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 1L, 0L, 1L, 1L, 0L, 
-1L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
-1L, 0L, 0L, 0L, 1L, 0L, 1L, 1L, 1L, 1L, 0L, 1L, 0L, 0L, 0L, 0L, 
-1L, 1L, 0L, 1L, 0L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 
-1L, 0L, 0L, 1L, 0L, 1L, 1L, 1L, 0L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 0L, 0L, 0L, 
-0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 1L, 1L, 
-0L, 1L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 0L, 1L, 1L, 0L, 0L, 0L, 1L, 
-1L, 1L, 0L, 1L, 1L, 1L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 0L, 1L, 1L, 
-0L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 1L, 
-1L, 1L, 0L, 0L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 
-0L, 1L, 1L, 0L, 1L, 1L, 0L, 0L, 0L, 0L, 1L, 1L, 0L, 1L, 1L, 1L, 
-1L, 1L, 0L, 1L, 1L, 0L, 1L, 1L, 1L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 1L, 0L, 0L, 0L, 0L, 
-1L, 0L, 1L, 0L, 1L, 1L, 1L, 0L, 0L, 1L, 0L, 0L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 
-1L, 1L, 1L, 0L, 1L, 1L, 1L, 0L, 1L, 1L, 0L, 1L, 0L, 1L, 0L, 0L, 
-1L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 0L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 1L, 0L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 0L, 
-1L, 1L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 1L, 
-0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 0L, 1L, 1L, 0L, 1L, 0L, 0L, 1L, 1L, 1L, 0L, 0L, 1L, 
-1L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 0L, 1L, 1L, 
-0L, 1L, 0L, 1L, 0L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 0L, 0L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 0L, 0L, 0L, 0L, 1L, 0L, 1L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 
-1L, 0L, 1L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 
-1L, 1L, 1L, 0L, 1L, 1L, 0L, 0L, 0L, 1L, 0L, 1L, 0L, 1L, 1L, 1L, 
-1L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 1L, 0L, 1L, 0L, 1L, 1L, 0L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 
-1L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 
-1L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 0L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 
-0L, 0L, 1L, 0L, 0L, 1L, 1L, 1L, 1L, 0L, 0L, 1L, 0L, 1L, 1L, 1L, 
-1L, 1L, 0L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 0L, 
-1L, 1L, 1L, 1L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 1L, 
-1L, 1L, 0L, 1L, 0L, 1L, 1L, 0L, 1L, 1L, 0L, 0L, 0L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 0L, 1L, 1L, 0L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 0L, 1L, 0L, 0L, 1L, 1L, 0L, 1L, 0L, 0L, 1L, 
-1L, 1L, 1L, 0L, 1L, 0L, 0L, 1L, 1L, 0L, 1L, 1L, 0L, 1L, 1L, 1L, 
-0L, 0L, 0L, 1L, 1L, 1L, 0L, 0L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 1L, 
-0L, 0L, 1L, 0L, 0L, 0L, 1L, 0L, 1L, 0L, 0L, 1L, 0L, 1L, 0L, 1L, 
-1L, 1L, 0L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 
-1L, 1L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 
-1L, 0L, 0L, 0L, 1L, 0L, 1L, 1L, 0L, 1L, 0L, 0L, 0L, 1L, 0L, 1L, 
-1L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 
-1L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 0L, 0L, 1L, 
-1L, 1L, 1L, 1L, 1L, 0L, 1L, 0L, 1L, 0L, 0L, 1L, 0L, 0L, 1L, 1L, 
-1L, 1L, 1L, 1L, 0L, 1L, 1L, 0L, 0L, 1L, 1L, 0L, 1L, 0L, 0L, 0L, 
-0L, 0L, 1L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 1L, 1L, 
-0L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 
-0L, 0L, 0L, 1L, 0L, 1L, 1L, 1L, 0L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 
-0L, 0L, 0L, 1L, 1L, 1L, 1L, 0L, 0L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 
-0L, 1L, 0L, 0L, 0L, 1L, 1L, 1L, 0L, 1L, 1L, 0L, 0L, 0L, 1L, 0L, 
-0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 1L, 0L, 0L, 1L, 0L, 
-1L, 0L, 1L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 0L, 0L, 1L, 1L, 0L, 0L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 0L, 1L, 
-1L, 1L, 1L, 0L, 1L, 1L, 1L, 0L, 0L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 
-0L, 0L, 0L, 0L, 1L, 0L, 0L, 1L, 0L, 1L, 1L, 0L, 0L, 0L, 0L, 1L, 
-1L, 1L, 0L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 1L, 
-0L, 0L, 0L, 1L, 1L, 0L, 0L, 0L, 1L, 1L, 1L, 0L, 0L, 0L, 1L, 0L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 0L, 
-1L, 0L, 1L, 0L, 1L, 0L, 0L, 1L, 1L, 0L, 0L, 0L, 1L, 1L, 1L, 0L, 
-0L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 0L, 0L, 1L, 
-0L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 1L, 1L, 1L, 0L, 1L, 0L, 0L, 0L, 
-1L, 1L, 1L, 0L, 0L, 0L, 1L, 0L, 1L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 
-1L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 1L, 0L, 1L, 0L, 0L, 0L, 1L, 1L, 
-0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 0L, 1L, 0L, 
-0L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 1L, 1L, 0L, 0L, 
-1L, 0L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 1L, 0L, 0L, 1L, 1L, 
-0L, 1L, 1L, 0L, 0L, 0L, 1L, 0L, 0L, 1L, 1L, 1L, 0L, 1L, 0L, 1L, 
-1L, 1L, 1L, 1L, 0L, 0L, 0L, 1L, 0L, 0L, 1L, 1L, 1L, 0L, 1L, 0L, 
-0L, 0L, 0L, 0L, 1L, 0L, 1L, 1L, 0L, 1L, 0L, 1L, 1L, 1L, 1L, 0L, 
-0L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 0L, 0L, 0L, 1L, 1L, 1L, 0L, 0L, 
-0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 0L, 1L, 
-0L, 0L, 1L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 1L, 1L, 0L, 0L, 1L, 1L, 
-1L, 1L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 
-0L, 1L, 0L, 0L, 1L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-0L, 0L, 0L, 1L, 1L, 1L, 1L, 0L, 1L, 1L, 0L, 1L, 0L, 1L, 1L, 1L, 
-0L, 1L, 0L, 1L, 1L, 1L, 1L, 0L, 0L, 1L, 0L, 1L, 1L, 0L, 0L, 1L, 
-1L, 1L, 0L, 1L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 
-0L, 0L, 1L, 1L, 1L, 0L, 0L, 1L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 
-1L, 1L, 1L, 1L, 1L, 0L, 1L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 1L, 1L, 
-1L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 1L, 0L, 
-1L, 0L, 0L, 1L, 1L, 1L, 1L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 
-1L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 1L, 0L, 1L, 0L, 0L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 
-1L, 0L, 0L, 1L, 0L, 0L, 0L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 
-0L, 0L, 1L, 0L, 1L, 1L, 0L, 0L, 0L, 1L, 1L, 0L, 0L, 1L, 1L, 1L, 
-0L, 1L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 1L, 0L, 1L, 1L, 0L, 0L, 1L, 
-0L, 1L, 1L, 1L, 0L, 0L, 0L, 1L, 1L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 
-1L, 0L, 0L, 0L, 1L, 1L, 1L, 0L, 0L, 0L, 1L, 0L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 0L, 0L, 0L, 1L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 1L, 1L, 
-1L, 1L, 0L, 1L, 1L, 0L, 1L, 1L, 0L, 1L, 1L, 0L, 0L, 0L, 0L, 1L, 
-1L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 0L, 
-0L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 
-1L, 0L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 0L, 0L, 1L, 0L, 1L, 1L, 0L, 
-0L, 0L, 1L, 0L, 0L, 1L, 1L, 0L, 0L, 1L, 1L, 1L, 0L, 0L, 1L, 0L, 
-1L, 1L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
-0L, 1L, 1L, 0L, 1L, 1L, 0L, 0L, 1L, 0L, 0L, 1L, 1L, 1L, 1L, 0L, 
-1L, 0L, 0L, 1L, 1L, 0L, 1L, 1L, 0L, 1L, 0L, 0L, 1L, 0L, 1L, 0L, 
-1L, 1L, 1L, 1L, 1L, 0L, 1L, 0L, 1L, 0L, 0L, 1L, 0L, 0L, 1L, 1L, 
-1L, 1L, 1L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 
-1L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 1L, 0L, 1L, 0L, 1L, 
-1L, 0L, 1L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 1L, 
-1L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 1L, 0L, 0L, 1L, 1L, 1L, 0L, 
-1L, 0L, 1L, 1L, 1L, 0L, 1L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 0L, 0L, 
-0L, 1L, 0L, 0L, 0L, 1L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 
-1L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 
-1L, 0L, 1L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 0L, 1L, 0L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 0L, 0L, 0L, 1L, 0L, 1L, 1L, 0L, 1L, 1L, 0L, 0L, 1L, 1L, 0L, 
-0L, 1L, 0L, 1L, 0L, 1L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 
-0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 1L, 0L, 
-0L, 1L, 0L, 1L, 1L, 0L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 
-1L, 1L, 0L, 0L, 1L, 0L, 1L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 0L, 0L, 1L, 0L, 0L, 1L, 0L, 1L, 0L, 0L, 1L, 
-1L, 0L, 1L, 1L, 0L, 1L, 1L, 0L, 1L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 
-0L, 0L, 1L, 1L, 1L, 0L, 1L, 1L, 0L, 0L, 1L, 1L, 0L, 1L, 1L, 0L, 
-0L, 0L, 0L, 1L, 0L, 0L, 1L, 1L, 0L, 0L, 0L, 1L, 1L, 1L, 0L, 1L, 
-1L, 0L, 0L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 0L, 1L, 
-1L, 1L, 0L, 1L, 0L, 1L, 1L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 0L, 
-1L, 0L, 0L, 0L, 0L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 1L, 
-0L, 0L, 0L, 1L, 1L, 1L, 1L, 0L, 0L, 1L, 1L, 0L, 0L, 1L, 1L, 1L, 
-0L, 0L, 1L, 0L, 0L, 1L, 1L, 0L, 0L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 
-1L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 0L, 1L, 0L, 0L, 0L, 1L, 1L, 1L, 
-1L, 1L, 1L, 0L, 1L, 1L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 
-1L, 1L, 0L, 0L, 0L, 1L, 0L, 0L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 0L, 1L, 1L, 0L, 0L, 1L, 1L, 1L, 1L, 0L, 0L, 1L, 0L, 
-1L, 1L, 0L, 0L, 1L, 0L, 1L, 1L, 0L, 0L, 1L, 0L, 0L, 0L, 1L, 1L, 
-0L, 1L, 1L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 
-1L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 0L, 1L, 1L, 1L, 1L, 
-1L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 1L, 0L, 1L, 0L, 
-1L, 1L, 1L, 0L, 0L, 0L, 1L, 0L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 
-1L, 1L, 1L, 1L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 1L, 0L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 1L, 1L, 1L, 0L, 1L, 0L, 1L, 
-1L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 1L, 1L, 1L, 1L, 
-0L, 0L, 0L, 1L, 1L, 1L, 1L, 0L, 1L, 0L, 1L, 1L, 0L, 1L, 1L, 0L, 
-0L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 0L, 0L, 1L, 0L, 0L, 0L, 1L, 
-1L, 1L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 0L, 1L, 1L, 1L, 0L, 0L, 1L, 
-1L, 0L, 1L, 0L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 0L, 0L, 1L, 
-0L, 0L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 0L, 1L, 0L, 0L, 1L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 0L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 1L, 
-1L, 1L, 1L, 1L, 0L, 1L, 0L, 1L, 0L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 0L, 0L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 
-1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 
-0L, 1L, 1L, 1L, 1L, 0L, 1L, 0L, 1L, 0L, 1L, 1L, 1L, 0L, 1L, 1L, 
-1L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 1L, 0L, 1L, 1L, 
-1L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 1L, 0L, 1L, 
-0L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 0L, 1L, 1L, 0L, 0L, 1L, 1L, 0L, 1L, 0L, 0L, 1L, 0L, 1L, 1L, 
-1L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-0L, 0L, 1L, 0L, 1L, 0L, 1L, 1L, 0L, 1L, 1L, 0L, 1L, 1L, 1L, 0L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 0L, 1L, 1L, 
-1L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 0L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 1L, 0L, 1L, 1L, 0L, 0L, 
-0L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 
-1L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 0L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-0L, 0L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 0L, 1L, 
-0L, 0L, 1L, 1L, 0L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 0L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 
-1L, 1L, 0L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 
-1L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L), procedure = c(1L, 0L, 1L, 0L, 1L, 1L, 0L, 1L, 1L, 
-1L, 1L, 1L, 1L, 0L, 1L, 0L, 0L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 0L, 
-0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 
-0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 
-0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
-0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
-0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
-0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
-0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 
-0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
-0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
-0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
-0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
-0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
-0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
-0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
-0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
-0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
-0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
-0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
-0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
-0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
-0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
-0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
-0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
-0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
-0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
-0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
-0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 
-0L, 0L, 0L, 0L, 0L, 1L, 1L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 
-0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
-0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 
-0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
-0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
-0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
-0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
-0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
-0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
-0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
-0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
-0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
-1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
-0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
-0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 
-0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
-0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 
-0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
-0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
-0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
-0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
-0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
-0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
-0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
-0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 
-0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
-1L, 0L, 0L, 0L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
-0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
-0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 
-0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
-0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
-1L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
-0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
-0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 
-0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
-0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
-0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 
-0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
-0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 
-0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
-0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
-0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 1L, 0L, 
-0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 
-0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
-0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
-0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
-0L, 1L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
-0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
-0L, 0L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 0L, 0L, 0L, 
-0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 1L, 0L, 
-0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 0L, 
-0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 0L, 0L, 
-1L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 0L, 
-0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 
-0L, 0L, 1L, 0L, 0L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
-0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 1L, 
-1L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
-0L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 
-0L, 0L, 0L, 0L, 1L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 0L, 0L, 0L, 0L, 
-0L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 0L, 
-0L, 1L, 0L, 1L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
-0L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 
-0L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
-0L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 0L, 0L, 
-0L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 1L, 
-1L, 1L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 
-0L, 1L, 1L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 
-1L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
-0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 0L, 1L, 1L, 
-1L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 0L, 
-1L, 1L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 
-0L, 1L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 1L, 1L, 
-0L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 0L, 0L, 1L, 0L, 1L, 
-0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 1L, 1L, 0L, 0L, 
-0L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 
-1L, 1L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 0L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 
-0L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 0L, 0L, 1L, 1L, 
-1L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 
-0L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 1L, 1L, 0L, 
-0L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 1L, 1L, 1L, 0L, 
-0L, 0L, 1L, 0L, 0L, 1L, 1L, 1L, 0L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 
-0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 
-0L, 1L, 1L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 
-0L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 1L, 1L, 0L, 0L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 
-0L, 0L, 0L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 1L, 0L, 
-1L, 1L, 1L, 1L, 0L, 0L, 0L, 1L, 0L, 1L, 1L, 0L, 0L, 0L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 
-1L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 
-1L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 1L, 1L, 1L, 1L, 0L, 
-0L, 0L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 1L, 0L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 0L, 1L, 0L, 0L, 
-0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 0L, 0L, 0L, 0L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 0L, 1L, 0L, 0L, 1L, 1L, 0L, 0L, 0L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 0L, 0L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 
-0L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 
-1L, 0L, 1L, 0L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 0L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 0L, 
-1L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 0L, 1L, 1L, 0L, 0L, 0L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 0L, 1L, 1L, 
-1L, 1L, 1L, 1L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 0L, 0L, 0L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 
-0L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 1L, 0L, 0L, 
-1L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 
-0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 0L, 0L, 0L, 0L, 1L, 0L, 1L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 
-1L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 0L, 0L, 1L, 1L, 1L, 0L, 1L, 1L, 
-1L, 1L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 
-1L, 1L, 1L, 1L, 1L, 0L, 0L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 
-1L, 1L, 1L, 0L, 0L, 1L, 1L, 1L, 1L, 0L, 1L, 1L, 0L, 0L, 0L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 0L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 0L, 0L, 
-0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 0L, 1L, 0L, 1L, 
-1L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 0L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 0L, 0L, 0L, 0L, 1L, 0L, 1L, 1L, 
-1L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 
-1L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 0L, 
-1L, 0L, 1L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 
-1L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 
-1L, 1L, 0L, 1L, 1L, 1L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 
-0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 
-1L, 1L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 
-0L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 0L, 
-0L, 1L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 
-1L, 1L, 0L, 1L, 1L, 1L, 1L, 0L, 1L, 1L, 0L, 0L, 0L, 1L, 1L, 0L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-0L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 0L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 1L, 1L, 1L, 1L, 
-1L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 1L, 0L, 0L, 1L, 1L, 1L, 
-0L, 0L, 1L, 1L, 1L, 1L, 0L, 1L, 0L, 0L, 0L, 1L, 1L, 1L, 0L, 0L, 
-1L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 0L, 1L, 1L, 
-1L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 
-0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 1L, 
-1L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 
-1L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 0L, 0L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 0L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 
-0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 0L, 0L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 
-0L, 1L, 1L, 1L, 1L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 1L, 
-0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 
-0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 
-1L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-0L, 0L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 0L, 1L, 
-0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 0L, 1L, 1L, 1L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 0L, 
-1L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 0L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L), age75 = c(0L, 
-0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 0L, 0L, 1L, 0L, 1L, 1L, 0L, 0L, 
-0L, 0L, 0L, 0L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
-0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
-0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
-0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
-0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
-0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
-0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
-0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
-0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
-0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
-0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
-0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
-0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
-0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
-0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
-0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
-1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
-0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
-0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
-0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 
-0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
-0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
-0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
-0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
-0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 
-0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
-0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
-0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
-0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
-0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
-1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
-0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
-0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
-0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
-0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
-0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
-0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
-0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
-0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
-0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
-0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
-0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
-0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 1L, 1L, 0L, 0L, 0L, 
-0L, 0L, 0L, 0L, 1L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 
-1L, 0L, 0L, 0L, 1L, 1L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 0L, 1L, 1L, 
-1L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 1L, 0L, 1L, 1L, 1L, 0L, 0L, 
-1L, 1L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 
-0L, 1L, 1L, 1L, 1L, 0L, 0L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 
-0L, 0L, 0L, 1L, 1L, 1L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 
-0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
-0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 
-0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 
-0L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 1L, 
-0L, 0L, 0L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
-0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 
-0L, 1L, 0L, 0L, 0L, 0L, 1L, 1L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 
-0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 
-0L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 
-1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 0L, 0L, 0L, 1L, 1L, 0L, 
-1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
-0L, 1L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 
-0L, 0L, 0L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 0L, 0L, 
-0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 1L, 1L, 1L, 0L, 0L, 
-0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 
-0L, 0L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
-0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 
-0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 1L, 0L, 
-0L, 0L, 0L, 0L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
-0L, 0L, 0L, 1L, 1L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
-0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 1L, 0L, 0L, 0L, 
-0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 0L, 
-0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 
-0L, 1L, 1L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 1L, 1L, 0L, 0L, 0L, 1L, 
-0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
-1L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 
-0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
-0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 0L, 0L, 
-0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 
-1L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
-1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 
-0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
-0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 
-0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 
-0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
-1L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 1L, 0L, 0L, 0L, 1L, 0L, 
-0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 
-1L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
-0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 
-0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
-1L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
-0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
-0L, 0L, 0L, 0L, 1L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
-0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 1L, 1L, 0L, 0L, 0L, 
-0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 
-0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 
-1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 
-0L, 0L, 1L, 1L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
-0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 0L, 0L, 0L, 0L, 
-0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
-0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
-0L, 0L, 0L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 
-0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
-0L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 
-0L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 0L, 0L, 0L, 0L, 
-0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 
-0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
-0L, 0L, 0L, 0L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
-0L, 0L, 1L, 0L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
-0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 
-0L, 0L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 0L, 0L, 0L, 0L, 
-0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
-0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 0L, 1L, 0L, 0L, 0L, 0L, 
-0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
-0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 
-0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 0L, 0L, 
-0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 0L, 1L, 0L, 1L, 0L, 0L, 
-1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 
-0L, 0L, 0L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 
-1L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 1L, 1L, 0L, 0L, 0L, 1L, 0L, 
-0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 0L, 
-0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
-0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 
-0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
-0L, 0L, 0L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
-0L, 0L, 1L, 1L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
-0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 
-0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 
-0L, 0L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 
-1L, 0L, 0L, 0L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 
-0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
-0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 0L, 1L, 
-0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 
-1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
-1L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 
-0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 
-0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 0L, 1L, 0L, 0L, 0L, 0L, 
-0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 1L, 0L, 0L, 0L, 0L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 
-0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
-0L, 1L, 0L, 0L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
-0L, 0L, 0L, 1L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 
-0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 
-0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 
-1L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
-0L, 0L, 0L, 1L, 0L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
-0L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 
-0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 0L, 1L, 
-0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 0L, 0L, 
-0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 
-1L, 1L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 0L, 0L, 
-0L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
-1L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
-0L, 1L, 0L, 0L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 
-0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 
-1L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
-0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 
-0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 0L, 0L, 0L, 
-0L, 0L, 0L, 1L, 1L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
-1L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 
-1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 
-1L, 1L, 1L, 1L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 
-1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 
-0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 0L, 
-1L, 0L, 0L, 1L, 0L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 
-1L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 0L, 1L, 0L, 0L, 0L, 1L, 1L, 1L, 
-1L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-0L, 0L, 0L, 0L, 1L, 1L, 0L, 0L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 
-0L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 0L, 1L, 
-1L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 1L, 1L, 0L, 0L, 
-0L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 1L, 0L, 0L, 1L, 1L, 
-1L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 
-1L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 
-1L, 0L, 1L, 1L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 
-0L, 0L, 0L, 1L, 0L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 
-0L, 0L, 0L, 1L, 1L, 0L, 0L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 1L, 1L, 
-0L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 
-0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 
-1L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 
-1L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 0L, 0L, 1L, 1L, 
-1L, 1L, 1L, 0L, 1L, 0L, 0L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 1L, 1L, 
-0L, 0L, 0L, 0L, 1L, 1L, 0L, 0L, 0L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 
-0L, 0L, 0L, 0L, 0L, 1L, 1L, 0L, 1L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 
-0L, 1L, 1L, 0L, 0L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 0L, 1L, 
-1L, 0L, 1L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 1L, 0L, 
-0L, 0L, 1L, 1L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
-0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 
-0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 
-1L, 0L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 1L, 
-1L, 1L, 1L, 0L, 0L, 0L, 1L, 0L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 0L, 
-0L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 0L, 0L, 1L, 0L, 0L, 1L, 0L, 
-0L, 0L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 1L, 1L, 1L, 0L, 0L, 1L, 
-1L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 1L, 0L, 1L, 1L, 0L, 
-0L, 0L, 0L, 1L, 1L, 1L, 0L, 0L, 1L, 0L, 0L, 0L, 1L, 1L, 0L, 0L, 
-0L, 0L, 1L, 0L, 1L, 0L, 0L, 0L, 0L, 1L, 0L, 1L, 1L, 1L, 0L, 0L, 
-0L, 0L, 1L, 1L, 0L, 0L, 1L, 1L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 
-0L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 0L, 1L, 1L, 1L, 1L, 
-0L, 0L, 0L, 1L, 0L, 1L, 0L, 0L, 1L, 1L, 0L, 0L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 1L, 
-0L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 0L, 0L, 0L, 0L, 1L, 
-1L, 0L, 0L, 1L, 0L, 0L, 0L, 1L, 0L, 1L, 0L, 0L, 0L, 1L, 0L, 0L, 
-0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 1L, 
-1L, 1L, 1L, 1L, 0L, 0L, 0L, 1L, 1L, 1L, 0L, 0L, 1L, 0L, 0L, 1L, 
-0L, 1L, 0L, 0L, 0L, 0L, 1L, 0L, 1L, 1L, 1L, 1L, 0L, 0L, 1L, 1L, 
-0L, 0L, 1L, 0L, 1L, 0L, 1L, 1L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 
-0L, 1L, 0L, 0L, 1L, 0L, 1L, 0L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 
-1L, 0L, 1L, 0L, 0L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 
-0L, 1L, 1L, 0L, 0L, 1L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 
-1L, 0L, 0L, 1L, 0L, 1L, 0L, 0L, 1L, 0L, 0L, 1L, 1L, 1L, 0L, 0L, 
-0L, 0L, 1L, 1L, 0L, 0L, 0L, 1L, 1L, 0L, 0L, 1L, 1L, 0L, 0L, 0L, 
-1L, 1L, 0L, 0L, 0L, 1L, 0L, 0L, 1L, 1L, 0L, 0L, 1L, 1L, 1L, 1L, 
-1L, 0L, 0L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 0L, 1L, 0L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 0L, 0L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L)), .Names = c("hospital", "sex", "los", "admit", 
-"procedure", "age75"), val.labels = c("", "vl_sex", "", "vl_admit", 
-"vl_procedure", ""), var.labels = c("ENCRYPTED FACILITY CODE", 
-"Gender: 1=Male", "LOS", "Severity:1=Urgent/Emerg", "1=CABG;0=PTCA", 
-"Age>75"), row.names = c("1", "2", "3", "4", "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", 
-"31", "32", "33", "34", "35", "36", "37", "38", "39", "40", "41", 
-"42", "43", "44", "45", "46", "47", "48", "49", "50", "51", "52", 
-"53", "54", "55", "56", "57", "58", "59", "60", "61", "62", "63", 
-"64", "65", "66", "67", "68", "69", "70", "71", "72", "73", "74", 
-"75", "76", "77", "78", "79", "80", "81", "82", "83", "84", "85", 
-"86", "87", "88", "89", "90", "91", "92", "93", "94", "95", "96", 
-"97", "98", "99", "100", "101", "102", "103", "104", "105", "106", 
-"107", "108", "109", "110", "111", "112", "113", "114", "115", 
-"116", "117", "118", "119", "120", "121", "122", "123", "124", 
-"125", "126", "127", "128", "129", "130", "131", "132", "133", 
-"134", "135", "136", "137", "138", "139", "140", "141", "142", 
-"143", "144", "145", "146", "147", "148", "149", "150", "151", 
-"152", "153", "154", "155", "156", "157", "158", "159", "160", 
-"161", "162", "163", "164", "165", "166", "167", "168", "169", 
-"170", "171", "172", "173", "174", "175", "176", "177", "178", 
-"179", "180", "181", "182", "183", "184", "185", "186", "187", 
-"188", "189", "190", "191", "192", "193", "194", "195", "196", 
-"197", "198", "199", "200", "201", "202", "203", "204", "205", 
-"206", "207", "208", "209", "210", "211", "212", "213", "214", 
-"215", "216", "217", "218", "219", "220", "221", "222", "223", 
-"224", "225", "226", "227", "228", "229", "230", "231", "232", 
-"233", "234", "235", "236", "237", "238", "239", "240", "241", 
-"242", "243", "244", "245", "246", "247", "248", "249", "250", 
-"251", "252", "253", "254", "255", "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", "283", "284", "285", "286", 
-"287", "288", "289", "290", "291", "292", "293", "294", "295", 
-"296", "297", "298", "299", "300", "301", "302", "303", "304", 
-"305", "306", "307", "308", "309", "310", "311", "312", "313", 
-"314", "315", "316", "317", "318", "319", "320", "321", "322", 
-"323", "324", "325", "326", "327", "328", "329", "330", "331", 
-"332", "333", "334", "335", "336", "337", "338", "339", "340", 
-"341", "342", "343", "344", "345", "346", "347", "348", "349", 
-"350", "351", "352", "353", "354", "355", "356", "357", "358", 
-"359", "360", "361", "362", "363", "364", "365", "366", "367", 
-"368", "369", "370", "371", "372", "373", "374", "375", "376", 
-"377", "378", "379", "380", "381", "382", "383", "384", "385", 
-"386", "387", "388", "389", "390", "391", "392", "393", "394", 
-"395", "396", "397", "398", "399", "400", "401", "402", "403", 
-"404", "405", "406", "407", "408", "409", "410", "411", "412", 
-"413", "414", "415", "416", "417", "418", "419", "420", "421", 
-"422", "423", "424", "425", "426", "427", "428", "429", "430", 
-"431", "432", "433", "434", "435", "436", "437", "438", "439", 
-"440", "441", "442", "443", "444", "445", "446", "447", "448", 
-"449", "450", "451", "452", "453", "454", "455", "456", "457", 
-"458", "459", "460", "461", "462", "463", "464", "465", "466", 
-"467", "468", "469", "470", "471", "472", "473", "474", "475", 
-"476", "477", "478", "479", "480", "481", "482", "483", "484", 
-"485", "486", "487", "488", "489", "490", "491", "492", "493", 
-"494", "495", "496", "497", "498", "499", "500", "501", "502", 
-"503", "504", "505", "506", "507", "508", "509", "510", "511", 
-"512", "513", "514", "515", "516", "517", "518", "519", "520", 
-"521", "522", "523", "524", "525", "526", "527", "528", "529", 
-"530", "531", "532", "533", "534", "535", "536", "537", "538", 
-"539", "540", "541", "542", "543", "544", "545", "546", "547", 
-"548", "549", "550", "551", "552", "553", "554", "555", "556", 
-"557", "558", "559", "560", "561", "562", "563", "564", "565", 
-"566", "567", "568", "569", "570", "571", "572", "573", "574", 
-"575", "576", "577", "578", "579", "580", "581", "582", "583", 
-"584", "585", "586", "587", "588", "589", "590", "591", "592", 
-"593", "594", "595", "596", "597", "598", "599", "600", "601", 
-"602", "603", "604", "605", "606", "607", "608", "609", "610", 
-"611", "612", "613", "614", "615", "616", "617", "618", "619", 
-"620", "621", "622", "623", "624", "625", "626", "627", "628", 
-"629", "630", "631", "632", "633", "634", "635", "636", "637", 
-"638", "639", "640", "641", "642", "643", "644", "645", "646", 
-"647", "648", "649", "650", "651", "652", "653", "654", "655", 
-"656", "657", "658", "659", "660", "661", "662", "663", "664", 
-"665", "666", "667", "668", "669", "670", "671", "672", "673", 
-"674", "675", "676", "677", "678", "679", "680", "681", "682", 
-"683", "684", "685", "686", "687", "688", "689", "690", "691", 
-"692", "693", "694", "695", "696", "697", "698", "699", "700", 
-"701", "702", "703", "704", "705", "706", "707", "708", "709", 
-"710", "711", "712", "713", "714", "715", "716", "717", "718", 
-"719", "720", "721", "722", "723", "724", "725", "726", "727", 
-"728", "729", "730", "731", "732", "733", "734", "735", "736", 
-"737", "738", "739", "740", "741", "742", "743", "744", "745", 
-"746", "747", "748", "749", "750", "751", "752", "753", "754", 
-"755", "756", "757", "758", "759", "760", "761", "762", "763", 
-"764", "765", "766", "767", "768", "769", "770", "771", "772", 
-"773", "774", "775", "776", "777", "778", "779", "780", "781", 
-"782", "783", "784", "785", "786", "787", "788", "789", "790", 
-"791", "792", "793", "794", "795", "796", "797", "798", "799", 
-"800", "801", "802", "803", "804", "805", "806", "807", "808", 
-"809", "810", "811", "812", "813", "814", "815", "816", "817", 
-"818", "819", "820", "821", "822", "823", "824", "825", "826", 
-"827", "828", "829", "830", "831", "832", "833", "834", "835", 
-"836", "837", "838", "839", "840", "841", "842", "843", "844", 
-"845", "846", "847", "848", "849", "850", "851", "852", "853", 
-"854", "855", "856", "857", "858", "859", "860", "861", "862", 
-"863", "864", "865", "866", "867", "868", "869", "870", "871", 
-"872", "873", "874", "875", "876", "877", "878", "879", "880", 
-"881", "882", "883", "884", "885", "886", "887", "888", "889", 
-"890", "891", "892", "893", "894", "895", "896", "897", "898", 
-"899", "900", "901", "902", "903", "904", "905", "906", "907", 
-"908", "909", "910", "911", "912", "913", "914", "915", "916", 
-"917", "918", "919", "920", "921", "922", "923", "924", "925", 
-"926", "927", "928", "929", "930", "931", "932", "933", "934", 
-"935", "936", "937", "938", "939", "940", "941", "942", "943", 
-"944", "945", "946", "947", "948", "949", "950", "951", "952", 
-"953", "954", "955", "956", "957", "958", "959", "960", "961", 
-"962", "963", "964", "965", "966", "967", "968", "969", "970", 
-"971", "972", "973", "974", "975", "976", "977", "978", "979", 
-"980", "981", "982", "983", "984", "985", "986", "987", "988", 
-"989", "990", "991", "992", "993", "994", "995", "996", "997", 
-"998", "999", "1000", "1001", "1002", "1003", "1004", "1005", 
-"1006", "1007", "1008", "1009", "1010", "1011", "1012", "1013", 
-"1014", "1015", "1016", "1017", "1018", "1019", "1020", "1021", 
-"1022", "1023", "1024", "1025", "1026", "1027", "1028", "1029", 
-"1030", "1031", "1032", "1033", "1034", "1035", "1036", "1037", 
-"1038", "1039", "1040", "1041", "1042", "1043", "1044", "1045", 
-"1046", "1047", "1048", "1049", "1050", "1051", "1052", "1053", 
-"1054", "1055", "1056", "1057", "1058", "1059", "1060", "1061", 
-"1062", "1063", "1064", "1065", "1066", "1067", "1068", "1069", 
-"1070", "1071", "1072", "1073", "1074", "1075", "1076", "1077", 
-"1078", "1079", "1080", "1081", "1082", "1083", "1084", "1085", 
-"1086", "1087", "1088", "1089", "1090", "1091", "1092", "1093", 
-"1094", "1095", "1096", "1097", "1098", "1099", "1100", "1101", 
-"1102", "1103", "1104", "1105", "1106", "1107", "1108", "1109", 
-"1110", "1111", "1112", "1113", "1114", "1115", "1116", "1117", 
-"1118", "1119", "1120", "1121", "1122", "1123", "1124", "1125", 
-"1126", "1127", "1128", "1129", "1130", "1131", "1132", "1133", 
-"1134", "1135", "1136", "1137", "1138", "1139", "1140", "1141", 
-"1142", "1143", "1144", "1145", "1146", "1147", "1148", "1149", 
-"1150", "1151", "1152", "1153", "1154", "1155", "1156", "1157", 
-"1158", "1159", "1160", "1161", "1162", "1163", "1164", "1165", 
-"1166", "1167", "1168", "1169", "1170", "1171", "1172", "1173", 
-"1174", "1175", "1176", "1177", "1178", "1179", "1180", "1181", 
-"1182", "1183", "1184", "1185", "1186", "1187", "1188", "1189", 
-"1190", "1191", "1192", "1193", "1194", "1195", "1196", "1197", 
-"1198", "1199", "1200", "1201", "1202", "1203", "1204", "1205", 
-"1206", "1207", "1208", "1209", "1210", "1211", "1212", "1213", 
-"1214", "1215", "1216", "1217", "1218", "1219", "1220", "1221", 
-"1222", "1223", "1224", "1225", "1226", "1227", "1228", "1229", 
-"1230", "1231", "1232", "1233", "1234", "1235", "1236", "1237", 
-"1238", "1239", "1240", "1241", "1242", "1243", "1244", "1245", 
-"1246", "1247", "1248", "1249", "1250", "1251", "1252", "1253", 
-"1254", "1255", "1256", "1257", "1258", "1259", "1260", "1261", 
-"1262", "1263", "1264", "1265", "1266", "1267", "1268", "1269", 
-"1270", "1271", "1272", "1273", "1274", "1275", "1276", "1277", 
-"1278", "1279", "1280", "1281", "1282", "1283", "1284", "1285", 
-"1286", "1287", "1288", "1289", "1290", "1291", "1292", "1293", 
-"1294", "1295", "1296", "1297", "1298", "1299", "1300", "1301", 
-"1302", "1303", "1304", "1305", "1306", "1307", "1308", "1309", 
-"1310", "1311", "1312", "1313", "1314", "1315", "1316", "1317", 
-"1318", "1319", "1320", "1321", "1322", "1323", "1324", "1325", 
-"1326", "1327", "1328", "1329", "1330", "1331", "1332", "1333", 
-"1334", "1335", "1336", "1337", "1338", "1339", "1340", "1341", 
-"1342", "1343", "1344", "1345", "1346", "1347", "1348", "1349", 
-"1350", "1351", "1352", "1353", "1354", "1355", "1356", "1357", 
-"1358", "1359", "1360", "1361", "1362", "1363", "1364", "1365", 
-"1366", "1367", "1368", "1369", "1370", "1371", "1372", "1373", 
-"1374", "1375", "1376", "1377", "1378", "1379", "1380", "1381", 
-"1382", "1383", "1384", "1385", "1386", "1387", "1388", "1389", 
-"1390", "1391", "1392", "1393", "1394", "1395", "1396", "1397", 
-"1398", "1399", "1400", "1401", "1402", "1403", "1404", "1405", 
-"1406", "1407", "1408", "1409", "1410", "1411", "1412", "1413", 
-"1414", "1415", "1416", "1417", "1418", "1419", "1420", "1421", 
-"1422", "1423", "1424", "1425", "1426", "1427", "1428", "1429", 
-"1430", "1431", "1432", "1433", "1434", "1435", "1436", "1437", 
-"1438", "1439", "1440", "1441", "1442", "1443", "1444", "1445", 
-"1446", "1447", "1448", "1449", "1450", "1451", "1452", "1453", 
-"1454", "1455", "1456", "1457", "1458", "1459", "1460", "1461", 
-"1462", "1463", "1464", "1465", "1466", "1467", "1468", "1469", 
-"1470", "1471", "1472", "1473", "1474", "1475", "1476", "1477", 
-"1478", "1479", "1480", "1481", "1482", "1483", "1484", "1485", 
-"1486", "1487", "1488", "1489", "1490", "1491", "1492", "1493", 
-"1494", "1495", "1496", "1497", "1498", "1499", "1500", "1501", 
-"1502", "1503", "1504", "1505", "1506", "1507", "1508", "1509", 
-"1510", "1511", "1512", "1513", "1514", "1515", "1516", "1517", 
-"1518", "1519", "1520", "1521", "1522", "1523", "1524", "1525", 
-"1526", "1527", "1528", "1529", "1530", "1531", "1532", "1533", 
-"1534", "1535", "1536", "1537", "1538", "1539", "1540", "1541", 
-"1542", "1543", "1544", "1545", "1546", "1547", "1548", "1549", 
-"1550", "1551", "1552", "1553", "1554", "1555", "1556", "1557", 
-"1558", "1559", "1560", "1561", "1562", "1563", "1564", "1565", 
-"1566", "1567", "1568", "1569", "1570", "1571", "1572", "1573", 
-"1574", "1575", "1576", "1577", "1578", "1579", "1580", "1581", 
-"1582", "1583", "1584", "1585", "1586", "1587", "1588", "1589", 
-"1590", "1591", "1592", "1593", "1594", "1595", "1596", "1597", 
-"1598", "1599", "1600", "1601", "1602", "1603", "1604", "1605", 
-"1606", "1607", "1608", "1609", "1610", "1611", "1612", "1613", 
-"1614", "1615", "1616", "1617", "1618", "1619", "1620", "1621", 
-"1622", "1623", "1624", "1625", "1626", "1627", "1628", "1629", 
-"1630", "1631", "1632", "1633", "1634", "1635", "1636", "1637", 
-"1638", "1639", "1640", "1641", "1642", "1643", "1644", "1645", 
-"1646", "1647", "1648", "1649", "1650", "1651", "1652", "1653", 
-"1654", "1655", "1656", "1657", "1658", "1659", "1660", "1661", 
-"1662", "1663", "1664", "1665", "1666", "1667", "1668", "1669", 
-"1670", "1671", "1672", "1673", "1674", "1675", "1676", "1677", 
-"1678", "1679", "1680", "1681", "1682", "1683", "1684", "1685", 
-"1686", "1687", "1688", "1689", "1690", "1691", "1692", "1693", 
-"1694", "1695", "1696", "1697", "1698", "1699", "1700", "1701", 
-"1702", "1703", "1704", "1705", "1706", "1707", "1708", "1709", 
-"1710", "1711", "1712", "1713", "1714", "1715", "1716", "1717", 
-"1718", "1719", "1720", "1721", "1722", "1723", "1724", "1725", 
-"1726", "1727", "1728", "1729", "1730", "1731", "1732", "1733", 
-"1734", "1735", "1736", "1737", "1738", "1739", "1740", "1741", 
-"1742", "1743", "1744", "1745", "1746", "1747", "1748", "1749", 
-"1750", "1751", "1752", "1753", "1754", "1755", "1756", "1757", 
-"1758", "1759", "1760", "1761", "1762", "1763", "1764", "1765", 
-"1766", "1767", "1768", "1769", "1770", "1771", "1772", "1773", 
-"1774", "1775", "1776", "1777", "1778", "1779", "1780", "1781", 
-"1782", "1783", "1784", "1785", "1786", "1787", "1788", "1789", 
-"1790", "1791", "1792", "1793", "1794", "1795", "1796", "1797", 
-"1798", "1799", "1800", "1801", "1802", "1803", "1804", "1805", 
-"1806", "1807", "1808", "1809", "1810", "1811", "1812", "1813", 
-"1814", "1815", "1816", "1817", "1818", "1819", "1820", "1821", 
-"1822", "1823", "1824", "1825", "1826", "1827", "1828", "1829", 
-"1830", "1831", "1832", "1833", "1834", "1835", "1836", "1837", 
-"1838", "1839", "1840", "1841", "1842", "1843", "1844", "1845", 
-"1846", "1847", "1848", "1849", "1850", "1851", "1852", "1853", 
-"1854", "1855", "1856", "1857", "1858", "1859", "1860", "1861", 
-"1862", "1863", "1864", "1865", "1866", "1867", "1868", "1869", 
-"1870", "1871", "1872", "1873", "1874", "1875", "1876", "1877", 
-"1878", "1879", "1880", "1881", "1882", "1883", "1884", "1885", 
-"1886", "1887", "1888", "1889", "1890", "1891", "1892", "1893", 
-"1894", "1895", "1896", "1897", "1898", "1899", "1900", "1901", 
-"1902", "1903", "1904", "1905", "1906", "1907", "1908", "1909", 
-"1910", "1911", "1912", "1913", "1914", "1915", "1916", "1917", 
-"1918", "1919", "1920", "1921", "1922", "1923", "1924", "1925", 
-"1926", "1927", "1928", "1929", "1930", "1931", "1932", "1933", 
-"1934", "1935", "1936", "1937", "1938", "1939", "1940", "1941", 
-"1942", "1943", "1944", "1945", "1946", "1947", "1948", "1949", 
-"1950", "1951", "1952", "1953", "1954", "1955", "1956", "1957", 
-"1958", "1959", "1960", "1961", "1962", "1963", "1964", "1965", 
-"1966", "1967", "1968", "1969", "1970", "1971", "1972", "1973", 
-"1974", "1975", "1976", "1977", "1978", "1979", "1980", "1981", 
-"1982", "1983", "1984", "1985", "1986", "1987", "1988", "1989", 
-"1990", "1991", "1992", "1993", "1994", "1995", "1996", "1997", 
-"1998", "1999", "2000", "2001", "2002", "2003", "2004", "2005", 
-"2006", "2007", "2008", "2009", "2010", "2011", "2012", "2013", 
-"2014", "2015", "2016", "2017", "2018", "2019", "2020", "2021", 
-"2022", "2023", "2024", "2025", "2026", "2027", "2028", "2029", 
-"2030", "2031", "2032", "2033", "2034", "2035", "2036", "2037", 
-"2038", "2039", "2040", "2041", "2042", "2043", "2044", "2045", 
-"2046", "2047", "2048", "2049", "2050", "2051", "2052", "2053", 
-"2054", "2055", "2056", "2057", "2058", "2059", "2060", "2061", 
-"2062", "2063", "2064", "2065", "2066", "2067", "2068", "2069", 
-"2070", "2071", "2072", "2073", "2074", "2075", "2076", "2077", 
-"2078", "2079", "2080", "2081", "2082", "2083", "2084", "2085", 
-"2086", "2087", "2088", "2089", "2090", "2091", "2092", "2093", 
-"2094", "2095", "2096", "2097", "2098", "2099", "2100", "2101", 
-"2102", "2103", "2104", "2105", "2106", "2107", "2108", "2109", 
-"2110", "2111", "2112", "2113", "2114", "2115", "2116", "2117", 
-"2118", "2119", "2120", "2121", "2122", "2123", "2124", "2125", 
-"2126", "2127", "2128", "2129", "2130", "2131", "2132", "2133", 
-"2134", "2135", "2136", "2137", "2138", "2139", "2140", "2141", 
-"2142", "2143", "2144", "2145", "2146", "2147", "2148", "2149", 
-"2150", "2151", "2152", "2153", "2154", "2155", "2156", "2157", 
-"2158", "2159", "2160", "2161", "2162", "2163", "2164", "2165", 
-"2166", "2167", "2168", "2169", "2170", "2171", "2172", "2173", 
-"2174", "2175", "2176", "2177", "2178", "2179", "2180", "2181", 
-"2182", "2183", "2184", "2185", "2186", "2187", "2188", "2189", 
-"2190", "2191", "2192", "2193", "2194", "2195", "2196", "2197", 
-"2198", "2199", "2200", "2201", "2202", "2203", "2204", "2205", 
-"2206", "2207", "2208", "2209", "2210", "2211", "2212", "2213", 
-"2214", "2215", "2216", "2217", "2218", "2219", "2220", "2221", 
-"2222", "2223", "2224", "2225", "2226", "2227", "2228", "2229", 
-"2230", "2231", "2232", "2233", "2234", "2235", "2236", "2237", 
-"2238", "2239", "2240", "2241", "2242", "2243", "2244", "2245", 
-"2246", "2247", "2248", "2249", "2250", "2251", "2252", "2253", 
-"2254", "2255", "2256", "2257", "2258", "2259", "2260", "2261", 
-"2262", "2263", "2264", "2265", "2266", "2267", "2268", "2269", 
-"2270", "2271", "2272", "2273", "2274", "2275", "2276", "2277", 
-"2278", "2279", "2280", "2281", "2282", "2283", "2284", "2285", 
-"2286", "2287", "2288", "2289", "2290", "2291", "2292", "2293", 
-"2294", "2295", "2296", "2297", "2298", "2299", "2300", "2301", 
-"2302", "2303", "2304", "2305", "2306", "2307", "2308", "2309", 
-"2310", "2311", "2312", "2313", "2314", "2315", "2316", "2317", 
-"2318", "2319", "2320", "2321", "2322", "2323", "2324", "2325", 
-"2326", "2327", "2328", "2329", "2330", "2331", "2332", "2333", 
-"2334", "2335", "2336", "2337", "2338", "2339", "2340", "2341", 
-"2342", "2343", "2344", "2345", "2346", "2347", "2348", "2349", 
-"2350", "2351", "2352", "2353", "2354", "2355", "2356", "2357", 
-"2358", "2359", "2360", "2361", "2362", "2363", "2364", "2365", 
-"2366", "2367", "2368", "2369", "2370", "2371", "2372", "2373", 
-"2374", "2375", "2376", "2377", "2378", "2379", "2380", "2381", 
-"2382", "2383", "2384", "2385", "2386", "2387", "2388", "2389", 
-"2390", "2391", "2392", "2393", "2394", "2395", "2396", "2397", 
-"2398", "2399", "2400", "2401", "2402", "2403", "2404", "2405", 
-"2406", "2407", "2408", "2409", "2410", "2411", "2412", "2413", 
-"2414", "2415", "2416", "2417", "2418", "2419", "2420", "2421", 
-"2422", "2423", "2424", "2425", "2426", "2427", "2428", "2429", 
-"2430", "2431", "2432", "2433", "2434", "2435", "2436", "2437", 
-"2438", "2439", "2440", "2441", "2442", "2443", "2444", "2445", 
-"2446", "2447", "2448", "2449", "2450", "2451", "2452", "2453", 
-"2454", "2455", "2456", "2457", "2458", "2459", "2460", "2461", 
-"2462", "2463", "2464", "2465", "2466", "2467", "2468", "2469", 
-"2470", "2471", "2472", "2473", "2474", "2475", "2476", "2477", 
-"2478", "2479", "2480", "2481", "2482", "2483", "2484", "2485", 
-"2486", "2487", "2488", "2489", "2490", "2491", "2492", "2493", 
-"2494", "2495", "2496", "2497", "2498", "2499", "2500", "2501", 
-"2502", "2503", "2504", "2505", "2506", "2507", "2508", "2509", 
-"2510", "2511", "2512", "2513", "2514", "2515", "2516", "2517", 
-"2518", "2519", "2520", "2521", "2522", "2523", "2524", "2525", 
-"2526", "2527", "2528", "2529", "2530", "2531", "2532", "2533", 
-"2534", "2535", "2536", "2537", "2538", "2539", "2540", "2541", 
-"2542", "2543", "2544", "2545", "2546", "2547", "2548", "2549", 
-"2550", "2551", "2552", "2553", "2554", "2555", "2556", "2557", 
-"2558", "2559", "2560", "2561", "2562", "2563", "2564", "2565", 
-"2566", "2567", "2568", "2569", "2570", "2571", "2572", "2573", 
-"2574", "2575", "2576", "2577", "2578", "2579", "2580", "2581", 
-"2582", "2583", "2584", "2585", "2586", "2587", "2588", "2589", 
-"2590", "2591", "2592", "2593", "2594", "2595", "2596", "2597", 
-"2598", "2599", "2600", "2601", "2602", "2603", "2604", "2605", 
-"2606", "2607", "2608", "2609", "2610", "2611", "2612", "2613", 
-"2614", "2615", "2616", "2617", "2618", "2619", "2620", "2621", 
-"2622", "2623", "2624", "2625", "2626", "2627", "2628", "2629", 
-"2630", "2631", "2632", "2633", "2634", "2635", "2636", "2637", 
-"2638", "2639", "2640", "2641", "2642", "2643", "2644", "2645", 
-"2646", "2647", "2648", "2649", "2650", "2651", "2652", "2653", 
-"2654", "2655", "2656", "2657", "2658", "2659", "2660", "2661", 
-"2662", "2663", "2664", "2665", "2666", "2667", "2668", "2669", 
-"2670", "2671", "2672", "2673", "2674", "2675", "2676", "2677", 
-"2678", "2679", "2680", "2681", "2682", "2683", "2684", "2685", 
-"2686", "2687", "2688", "2689", "2690", "2691", "2692", "2693", 
-"2694", "2695", "2696", "2697", "2698", "2699", "2700", "2701", 
-"2702", "2703", "2704", "2705", "2706", "2707", "2708", "2709", 
-"2710", "2711", "2712", "2713", "2714", "2715", "2716", "2717", 
-"2718", "2719", "2720", "2721", "2722", "2723", "2724", "2725", 
-"2726", "2727", "2728", "2729", "2730", "2731", "2732", "2733", 
-"2734", "2735", "2736", "2737", "2738", "2739", "2740", "2741", 
-"2742", "2743", "2744", "2745", "2746", "2747", "2748", "2749", 
-"2750", "2751", "2752", "2753", "2754", "2755", "2756", "2757", 
-"2758", "2759", "2760", "2761", "2762", "2763", "2764", "2765", 
-"2766", "2767", "2768", "2769", "2770", "2771", "2772", "2773", 
-"2774", "2775", "2776", "2777", "2778", "2779", "2780", "2781", 
-"2782", "2783", "2784", "2785", "2786", "2787", "2788", "2789", 
-"2790", "2791", "2792", "2793", "2794", "2795", "2796", "2797", 
-"2798", "2799", "2800", "2801", "2802", "2803", "2804", "2805", 
-"2806", "2807", "2808", "2809", "2810", "2811", "2812", "2813", 
-"2814", "2815", "2816", "2817", "2818", "2819", "2820", "2821", 
-"2822", "2823", "2824", "2825", "2826", "2827", "2828", "2829", 
-"2830", "2831", "2832", "2833", "2834", "2835", "2836", "2837", 
-"2838", "2839", "2840", "2841", "2842", "2843", "2844", "2845", 
-"2846", "2847", "2848", "2849", "2850", "2851", "2852", "2853", 
-"2854", "2855", "2856", "2857", "2858", "2859", "2860", "2861", 
-"2862", "2863", "2864", "2865", "2866", "2867", "2868", "2869", 
-"2870", "2871", "2872", "2873", "2874", "2875", "2876", "2877", 
-"2878", "2879", "2880", "2881", "2882", "2883", "2884", "2885", 
-"2886", "2887", "2888", "2889", "2890", "2891", "2892", "2893", 
-"2894", "2895", "2896", "2897", "2898", "2899", "2900", "2901", 
-"2902", "2903", "2904", "2905", "2906", "2907", "2908", "2909", 
-"2910", "2911", "2912", "2913", "2914", "2915", "2916", "2917", 
-"2918", "2919", "2920", "2921", "2922", "2923", "2924", "2925", 
-"2926", "2927", "2928", "2929", "2930", "2931", "2932", "2933", 
-"2934", "2935", "2936", "2937", "2938", "2939", "2940", "2941", 
-"2942", "2943", "2944", "2945", "2946", "2947", "2948", "2949", 
-"2950", "2951", "2952", "2953", "2954", "2955", "2956", "2957", 
-"2958", "2959", "2960", "2961", "2962", "2963", "2964", "2965", 
-"2966", "2967", "2968", "2969", "2970", "2971", "2972", "2973", 
-"2974", "2975", "2976", "2977", "2978", "2979", "2980", "2981", 
-"2982", "2983", "2984", "2985", "2986", "2987", "2988", "2989", 
-"2990", "2991", "2992", "2993", "2994", "2995", "2996", "2997", 
-"2998", "2999", "3000", "3001", "3002", "3003", "3004", "3005", 
-"3006", "3007", "3008", "3009", "3010", "3011", "3012", "3013", 
-"3014", "3015", "3016", "3017", "3018", "3019", "3020", "3021", 
-"3022", "3023", "3024", "3025", "3026", "3027", "3028", "3029", 
-"3030", "3031", "3032", "3033", "3034", "3035", "3036", "3037", 
-"3038", "3039", "3040", "3041", "3042", "3043", "3044", "3045", 
-"3046", "3047", "3048", "3049", "3050", "3051", "3052", "3053", 
-"3054", "3055", "3056", "3057", "3058", "3059", "3060", "3061", 
-"3062", "3063", "3064", "3065", "3066", "3067", "3068", "3069", 
-"3070", "3071", "3072", "3073", "3074", "3075", "3076", "3077", 
-"3078", "3079", "3080", "3081", "3082", "3083", "3084", "3085", 
-"3086", "3087", "3088", "3089", "3090", "3091", "3092", "3093", 
-"3094", "3095", "3096", "3097", "3098", "3099", "3100", "3101", 
-"3102", "3103", "3104", "3105", "3106", "3107", "3108", "3109", 
-"3110", "3111", "3112", "3113", "3114", "3115", "3116", "3117", 
-"3118", "3119", "3120", "3121", "3122", "3123", "3124", "3125", 
-"3126", "3127", "3128", "3129", "3130", "3131", "3132", "3133", 
-"3134", "3135", "3136", "3137", "3138", "3139", "3140", "3141", 
-"3142", "3143", "3144", "3145", "3146", "3147", "3148", "3149", 
-"3150", "3151", "3152", "3153", "3154", "3155", "3156", "3157", 
-"3158", "3159", "3160", "3161", "3162", "3163", "3164", "3165", 
-"3166", "3167", "3168", "3169", "3170", "3171", "3172", "3173", 
-"3174", "3175", "3176", "3177", "3178", "3179", "3180", "3181", 
-"3182", "3183", "3184", "3185", "3186", "3187", "3188", "3189", 
-"3190", "3191", "3192", "3193", "3194", "3195", "3196", "3197", 
-"3198", "3199", "3200", "3201", "3202", "3203", "3204", "3205", 
-"3206", "3207", "3208", "3209", "3210", "3211", "3212", "3213", 
-"3214", "3215", "3216", "3217", "3218", "3219", "3220", "3221", 
-"3222", "3223", "3224", "3225", "3226", "3227", "3228", "3229", 
-"3230", "3231", "3232", "3233", "3234", "3235", "3236", "3237", 
-"3238", "3239", "3240", "3241", "3242", "3243", "3244", "3245", 
-"3246", "3247", "3248", "3249", "3250", "3251", "3252", "3253", 
-"3254", "3255", "3256", "3257", "3258", "3259", "3260", "3261", 
-"3262", "3263", "3264", "3265", "3266", "3267", "3268", "3269", 
-"3270", "3271", "3272", "3273", "3274", "3275", "3276", "3277", 
-"3278", "3279", "3280", "3281", "3282", "3283", "3284", "3285", 
-"3286", "3287", "3288", "3289", "3290", "3291", "3292", "3293", 
-"3294", "3295", "3296", "3297", "3298", "3299", "3300", "3301", 
-"3302", "3303", "3304", "3305", "3306", "3307", "3308", "3309", 
-"3310", "3311", "3312", "3313", "3314", "3315", "3316", "3317", 
-"3318", "3319", "3320", "3321", "3322", "3323", "3324", "3325", 
-"3326", "3327", "3328", "3329", "3330", "3331", "3332", "3333", 
-"3334", "3335", "3336", "3337", "3338", "3339", "3340", "3341", 
-"3342", "3343", "3344", "3345", "3346", "3347", "3348", "3349", 
-"3350", "3351", "3352", "3353", "3354", "3355", "3356", "3357", 
-"3358", "3359", "3360", "3361", "3362", "3363", "3364", "3365", 
-"3366", "3367", "3368", "3369", "3370", "3371", "3372", "3373", 
-"3374", "3375", "3376", "3377", "3378", "3379", "3380", "3381", 
-"3382", "3383", "3384", "3385", "3386", "3387", "3388", "3389", 
-"3390", "3391", "3392", "3393", "3394", "3395", "3396", "3397", 
-"3398", "3399", "3400", "3401", "3402", "3403", "3404", "3405", 
-"3406", "3407", "3408", "3409", "3410", "3411", "3412", "3413", 
-"3414", "3415", "3416", "3417", "3418", "3419", "3420", "3421", 
-"3422", "3423", "3424", "3425", "3426", "3427", "3428", "3429", 
-"3430", "3431", "3432", "3433", "3434", "3435", "3436", "3437", 
-"3438", "3439", "3440", "3441", "3442", "3443", "3444", "3445", 
-"3446", "3447", "3448", "3449", "3450", "3451", "3452", "3453", 
-"3454", "3455", "3456", "3457", "3458", "3459", "3460", "3461", 
-"3462", "3463", "3464", "3465", "3466", "3467", "3468", "3469", 
-"3470", "3471", "3472", "3473", "3474", "3475", "3476", "3477", 
-"3478", "3479", "3480", "3481", "3482", "3483", "3484", "3485", 
-"3486", "3487", "3488", "3489", "3490", "3491", "3492", "3493", 
-"3494", "3495", "3496", "3497", "3498", "3499", "3500", "3501", 
-"3502", "3503", "3504", "3505", "3506", "3507", "3508", "3509", 
-"3510", "3511", "3512", "3513", "3514", "3515", "3516", "3517", 
-"3518", "3519", "3520", "3521", "3522", "3523", "3524", "3525", 
-"3526", "3527", "3528", "3529", "3530", "3531", "3532", "3533", 
-"3534", "3535", "3536", "3537", "3538", "3539", "3540", "3541", 
-"3542", "3543", "3544", "3545", "3546", "3547", "3548", "3549", 
-"3550", "3551", "3552", "3553", "3554", "3555", "3556", "3557", 
-"3558", "3559", "3560", "3561", "3562", "3563", "3564", "3565", 
-"3566", "3567", "3568", "3569", "3570", "3571", "3572", "3573", 
-"3574", "3575", "3576", "3577", "3578", "3579", "3580", "3581", 
-"3582", "3583", "3584", "3585", "3586", "3587", "3588", "3589"
-), class = "data.frame", label.table = list(NULL, structure(c(0, 
-1), .Names = c("Female", "Male")), NULL, structure(c(0, 1), .Names = c("Elective", 
-"Emer/Urg")), structure(c(0, 1), .Names = c("PTCA", "CABG")), 
-    NULL))
diff --git a/data/azprocedure.rda b/data/azprocedure.rda
new file mode 100644
index 0000000..a947f80
Binary files /dev/null and b/data/azprocedure.rda differ
diff --git a/data/backPain.R b/data/backPain.R
deleted file mode 100644
index de37d29..0000000
--- a/data/backPain.R
+++ /dev/null
@@ -1,5 +0,0 @@
-backPain <- read.table("backPain.txt")
-backPain$pain <- ordered(backPain$pain,
-                         levels = c("worse", "same", "slight.improvement",
-                         "moderate.improvement", "marked.improvement",
-                         "complete.relief"))
diff --git a/data/backPain.rda b/data/backPain.rda
new file mode 100644
index 0000000..3e1a07a
Binary files /dev/null and b/data/backPain.rda differ
diff --git a/data/backPain.txt b/data/backPain.txt
deleted file mode 100644
index fa23f57..0000000
--- a/data/backPain.txt
+++ /dev/null
@@ -1,102 +0,0 @@
-	x1	x2	x3	pain
-1	1	1	1	same
-2	1	1	1	marked.improvement
-3	1	1	1	complete.relief
-4	1	2	1	same
-5	1	2	1	slight.improvement
-6	1	2	1	marked.improvement
-7	1	2	1	complete.relief
-8	1	1	2	moderate.improvement
-9	1	1	2	marked.improvement
-10	1	3	1	marked.improvement
-11	1	3	1	complete.relief
-12	1	2	2	same
-13	1	2	2	moderate.improvement
-14	1	2	2	complete.relief
-15	2	1	1	slight.improvement
-16	2	1	1	marked.improvement
-17	2	1	1	complete.relief
-18	1	3	2	slight.improvement
-19	1	3	2	moderate.improvement
-20	1	3	2	marked.improvement
-21	2	2	1	same
-22	2	2	1	slight.improvement
-23	2	2	1	moderate.improvement
-24	2	2	1	marked.improvement
-25	2	2	1	complete.relief
-26	2	1	2	same
-27	2	1	2	marked.improvement
-28	2	3	1	worse
-29	2	3	1	same
-30	2	3	1	slight.improvement
-31	2	3	1	moderate.improvement
-32	2	3	1	marked.improvement
-33	2	2	2	worse
-34	2	2	2	same
-35	2	2	2	slight.improvement
-36	2	2	2	moderate.improvement
-37	2	2	2	complete.relief
-38	2	3	2	worse
-39	2	3	2	slight.improvement
-40	2	3	2	moderate.improvement
-41	1	1	1	marked.improvement
-42	1	1	1	complete.relief
-43	1	1	1	complete.relief
-44	1	1	1	complete.relief
-45	1	2	1	same
-46	1	2	1	slight.improvement
-47	1	2	1	slight.improvement
-48	1	2	1	marked.improvement
-49	1	2	1	marked.improvement
-50	1	2	1	marked.improvement
-51	1	2	1	marked.improvement
-52	1	2	1	marked.improvement
-53	1	2	1	complete.relief
-54	1	2	1	complete.relief
-55	1	2	1	complete.relief
-56	1	1	2	marked.improvement
-57	1	1	2	marked.improvement
-58	1	3	1	marked.improvement
-59	1	3	1	complete.relief
-60	1	2	2	moderate.improvement
-61	2	1	1	slight.improvement
-62	2	1	1	slight.improvement
-63	2	1	1	complete.relief
-64	1	3	2	marked.improvement
-65	1	3	2	marked.improvement
-66	2	2	1	same
-67	2	2	1	same
-68	2	2	1	slight.improvement
-69	2	2	1	slight.improvement
-70	2	2	1	slight.improvement
-71	2	2	1	moderate.improvement
-72	2	2	1	moderate.improvement
-73	2	2	1	moderate.improvement
-74	2	2	1	moderate.improvement
-75	2	2	1	marked.improvement
-76	2	2	1	marked.improvement
-77	2	2	1	marked.improvement
-78	2	2	1	marked.improvement
-79	2	2	1	marked.improvement
-80	2	2	1	complete.relief
-81	2	1	2	marked.improvement
-82	2	1	2	marked.improvement
-83	2	3	1	worse
-84	2	3	1	same
-85	2	3	1	moderate.improvement
-86	2	3	1	moderate.improvement
-87	2	3	1	moderate.improvement
-88	2	3	1	moderate.improvement
-89	2	3	1	marked.improvement
-90	2	2	2	same
-91	2	2	2	same
-92	2	2	2	same
-93	2	2	2	slight.improvement
-94	2	2	2	slight.improvement
-95	2	2	2	slight.improvement
-96	2	2	2	moderate.improvement
-97	2	2	2	moderate.improvement
-98	2	3	2	worse
-99	2	3	2	slight.improvement
-100	2	3	2	moderate.improvement
-101	2	3	2	moderate.improvement
\ No newline at end of file
diff --git a/data/backPain.txt.gz b/data/backPain.txt.gz
new file mode 100644
index 0000000..1ce44fe
Binary files /dev/null and b/data/backPain.txt.gz differ
diff --git a/data/bminz.txt b/data/bminz.txt
deleted file mode 100644
index 02393e7..0000000
--- a/data/bminz.txt
+++ /dev/null
@@ -1,701 +0,0 @@
-      age      BMI 
- 31.52966 22.77107
- 39.38045 27.70033
- 43.38940 28.18127
- 34.84894 25.08380
- 53.81990 26.46388
- 39.17002 36.19648
- 33.51872 24.66313
- 49.03421 28.72118
- 36.25354 25.48609
- 40.30528 26.71721
- 36.73073 21.28543
- 28.42404 24.92885
- 21.30212 27.96330
- 38.91421 29.62630
- 48.49673 26.33872
- 58.94552 24.57081
- 36.48628 27.89536
- 59.80134 30.14546
- 64.40486 25.12497
- 69.17766 29.50876
- 30.93609 28.29902
- 55.28165 34.34088
- 35.41093 29.03532
- 27.27993 24.20983
- 64.87958 30.88243
- 61.69701 24.83798
- 75.59529 24.47465
- 36.58378 26.68803
- 38.07413 33.86913
- 27.99299 20.92162
- 51.39876 31.86141
- 51.96557 28.92970
- 42.38411 16.62793
- 60.49754 25.86957
- 31.72362 24.72202
- 30.27677 25.96939
- 40.04436 18.04338
- 33.18791 27.45061
- 25.82706 25.45475
- 39.73441 22.80517
- 71.00441 25.52747
- 46.93339 26.08018
- 33.38008 25.28969
- 61.38006 30.69433
- 30.88379 39.06963
- 26.57036 21.73781
- 85.05665 20.97085
- 22.01522 27.17437
- 21.07371 22.70368
- 46.28684 23.09759
- 52.38596 16.52431
- 39.86237 30.39876
- 18.31478 22.30990
- 44.58452 27.62018
- 37.50505 21.84954
- 33.55295 30.01736
- 48.58470 27.00412
- 35.02938 33.94024
- 56.74282 26.12108
- 27.01597 35.78276
- 42.12292 21.45356
- 53.47645 29.93081
- 73.57362 28.80390
- 33.07897 29.89490
- 27.71434 23.48019
- 26.56032 19.46313
- 56.88176 31.75842
- 40.04743 29.23342
- 43.46757 27.66600
- 48.40347 45.84425
- 51.94451 34.52123
- 22.81941 25.12492
- 47.31553 29.41774
- 56.90261 32.57713
- 55.64545 21.59294
- 32.71280 29.03342
- 39.61485 31.07253
- 34.29674 31.27179
- 75.03272 23.26198
- 42.52394 26.06924
- 63.50737 26.19967
- 41.45791 26.15889
- 26.48068 23.28205
- 29.66578 23.76932
- 55.39052 21.38899
- 33.93638 21.50787
- 41.16556 29.31633
- 55.28719 26.41008
- 48.96903 21.81375
- 39.43987 25.20258
- 54.69976 31.80343
- 61.81926 23.78463
- 29.83802 31.30212
- 36.10928 27.78490
- 38.88342 26.29163
- 21.69252 24.09296
- 40.65945 24.49848
- 45.41919 24.61197
- 51.04320 23.25319
- 51.76804 31.14619
- 50.07597 26.15693
- 31.72125 23.02196
- 42.54576 24.56047
- 33.84730 24.49910
- 43.16923 30.89444
- 32.48236 30.59186
- 27.07331 30.24490
- 24.40670 23.41133
- 38.33903 27.60308
- 40.66055 23.13918
- 33.89193 18.73414
- 28.86946 17.23473
- 54.29757 29.46142
- 49.89804 24.83382
- 24.50766 29.16544
- 29.16440 34.56097
- 60.04799 28.16589
- 30.89256 19.40223
- 63.13626 21.74822
- 54.85329 25.26185
- 78.96306 20.95348
- 78.01710 21.24361
- 50.47371 30.81535
- 34.08666 24.19961
- 50.69744 56.39979
- 25.29732 28.08855
- 64.83965 25.95777
- 21.06325 25.73138
- 49.60311 29.66317
- 61.46347 35.88379
- 32.10376 25.98025
- 30.43664 23.82905
- 33.89039 22.33076
- 27.23587 24.80311
- 65.21659 34.55600
- 24.94063 26.89007
- 57.41561 22.96084
- 43.18235 23.51734
- 23.45612 26.43305
- 67.44293 27.23271
- 75.21263 29.53429
- 36.35890 23.16634
- 41.13786 24.64723
- 46.11416 24.32160
- 78.32855 22.34879
- 56.22332 22.20308
- 40.92859 27.41183
- 74.37957 24.87848
- 82.94280 26.32849
- 38.23325 28.22564
- 28.50112 21.52640
- 83.50588 22.53243
- 47.39850 21.92371
- 63.18745 19.29737
- 30.83350 21.58011
- 47.27177 25.67939
- 76.68825 23.46654
- 35.72061 23.60277
- 35.58604 29.63724
- 49.17131 29.98912
- 39.02782 25.72651
- 30.67334 32.80155
- 45.51781 30.89201
- 70.39287 32.74232
- 41.74017 20.21025
- 33.55806 23.12314
- 21.55016 26.18381
- 40.72792 19.64126
- 47.01347 28.57987
- 37.42738 20.35258
- 47.91820 27.95266
- 38.70494 26.32271
- 26.58318 38.73875
- 27.40259 22.45829
- 32.12200 27.23851
- 55.61718 32.19144
- 29.10814 28.72264
- 43.45972 28.04374
- 52.66468 29.56594
- 36.05022 29.32213
- 53.83558 25.49865
- 30.80845 27.30202
- 29.33553 26.27864
- 45.00041 24.30341
- 36.77749 32.27165
- 37.03259 22.24966
- 44.36336 32.04588
- 50.15041 30.48021
- 39.19250 24.14858
- 23.73404 34.87301
- 34.33628 22.13615
- 82.02401 22.55500
- 25.48160 27.38973
- 45.76363 26.61516
- 70.17821 30.39693
- 43.11517 37.33708
- 54.43810 33.54397
- 25.44707 22.96111
- 49.46259 26.52552
- 30.88428 23.43050
- 21.14543 31.28093
- 56.39559 25.97359
- 42.53512 30.54994
- 40.25480 24.17316
- 35.22250 28.13546
- 37.70700 19.94863
- 49.89107 23.43994
- 43.42424 23.60671
- 78.25495 21.56012
- 47.47255 32.80983
- 44.90691 25.88567
- 27.52709 22.13972
- 33.91070 20.40207
- 43.99000 40.05864
- 43.31449 32.97531
- 61.74588 22.26506
- 33.18188 25.19256
- 52.27435 25.14232
- 68.01345 28.86970
- 34.15872 28.30390
- 69.57542 34.58239
- 64.99171 25.72063
- 41.98288 22.84582
- 48.89752 26.64060
- 24.79011 25.06266
- 42.36029 19.08029
- 24.81843 34.94792
- 32.34701 25.34357
- 45.00538 31.18279
- 36.49979 25.49393
- 42.63332 21.16398
- 33.69105 25.26029
- 44.72925 32.50419
- 65.81059 33.69888
- 42.65160 37.67878
- 45.18119 34.08004
- 49.68979 28.13514
- 56.20241 23.94545
- 31.18923 28.24754
- 67.69225 29.79062
- 23.55535 22.29876
- 55.67679 24.64444
- 28.55048 25.49393
- 24.14786 27.70837
- 42.47740 27.26170
- 63.14416 25.29962
- 56.01077 22.61658
- 21.91515 31.32883
- 35.40591 23.29598
- 56.46014 25.85095
- 40.55150 27.36237
- 21.71111 22.54526
- 29.94185 28.40865
- 76.55133 19.81970
- 36.24921 27.05104
- 55.43160 26.53046
- 48.75538 26.98030
- 45.45938 23.49878
- 41.57688 25.98898
- 55.17125 22.93940
- 35.41448 23.14167
- 36.88115 20.82436
- 44.45453 36.05414
- 57.20137 23.08461
- 52.59177 29.45599
- 54.08459 25.04709
- 48.51428 28.72275
- 22.17651 31.58727
- 43.56249 29.60719
- 28.56742 23.47788
- 45.39733 30.82735
- 40.11140 22.49939
- 46.44631 28.96823
- 36.06642 29.92212
- 30.29033 25.71443
- 35.92196 29.62183
- 53.06952 25.07546
- 65.67793 26.47240
- 43.91989 32.63428
- 63.15732 35.89691
- 70.78002 18.89236
- 58.07750 24.11372
- 28.82403 20.88626
- 43.95267 30.60240
- 47.15775 24.78813
- 72.76805 20.53834
- 29.88184 23.29847
- 56.31945 23.18515
- 63.92690 25.37558
- 55.45586 24.44225
- 39.20491 25.10269
- 46.02750 25.37425
- 31.20204 24.44160
- 72.42475 21.27856
- 73.93593 23.67095
- 25.69724 27.88811
- 46.24666 22.03448
- 19.75632 21.43243
- 32.90972 31.65328
- 24.29984 22.55361
- 21.37466 25.48046
- 53.08102 27.19554
- 51.71619 25.99624
- 82.10258 25.30308
- 27.55140 24.97988
- 35.28401 25.80495
- 28.78350 27.10437
- 37.79290 25.85233
- 44.81091 25.55065
- 28.36307 23.45976
- 30.81308 26.38828
- 23.84566 30.51769
- 58.02867 25.40111
- 44.22382 27.63402
- 36.73311 22.78040
- 34.97739 30.09005
- 26.56001 23.18376
- 31.00518 29.06396
- 39.71215 30.28992
- 56.62149 30.28237
- 44.29298 27.86364
- 62.19078 32.15184
- 75.69354 35.97990
- 29.74094 26.00676
- 33.64277 23.23515
- 26.15642 20.54699
- 53.29250 25.79836
- 45.65686 31.53945
- 47.02932 36.10523
- 49.17053 22.61946
- 41.01243 28.52778
- 38.08636 22.67711
- 40.50317 21.48441
- 81.45242 24.94650
- 46.04637 27.76951
- 35.20837 24.80653
- 37.40834 26.30482
- 55.68801 28.13275
- 57.02114 29.16809
- 60.70621 27.45068
- 29.02393 26.97608
- 53.47975 27.72291
- 23.00122 25.23883
- 63.57340 24.03611
- 63.13391 36.37257
- 64.77770 26.08616
- 49.63202 19.60818
- 31.80328 19.49399
- 27.65714 28.24291
- 45.58329 30.81453
- 43.69298 36.42976
- 27.07073 31.60704
- 35.38172 31.52190
- 34.04135 32.69671
- 30.47870 19.75769
- 44.71175 26.30368
- 25.90396 22.77236
- 55.62400 32.48291
- 23.64825 19.91489
- 64.69763 23.75995
- 24.10224 27.65047
- 43.93715 19.09906
- 20.92866 21.14471
- 56.35803 27.45068
- 32.83191 19.92130
- 33.57491 18.97285
- 51.39979 26.50756
- 35.91443 23.68267
- 29.08776 27.67255
- 53.48770 21.77455
- 32.28868 23.31358
- 59.62776 41.14084
- 66.35298 20.53565
- 71.17516 22.59524
- 68.95668 31.76114
- 50.61098 29.39348
- 32.47020 23.20174
- 40.37709 29.04672
- 60.77362 27.25457
- 51.87677 26.17666
- 27.04370 29.13125
- 61.55968 28.71037
- 45.57977 22.95518
- 44.02950 26.16537
- 34.40152 22.05288
- 39.96531 27.67567
- 55.84456 29.38718
- 35.01607 26.01437
- 63.91591 26.82824
- 79.57355 26.85985
- 36.26843 30.29892
- 59.31089 26.01033
- 42.28652 22.00992
- 35.05846 27.89526
- 31.18635 29.99768
- 58.42965 26.19802
- 54.03744 26.45203
- 18.98587 20.37107
- 43.15795 21.47711
- 31.91582 22.40004
- 41.65393 23.79026
- 55.34468 31.67017
- 30.83594 24.21585
- 23.11364 31.00124
- 40.35013 29.51555
- 49.77633 34.24107
- 53.08469 22.44848
- 43.72293 28.27124
- 40.15939 30.68685
- 27.25035 23.85673
- 58.15061 25.51259
- 31.73202 22.37813
- 38.23582 26.95630
- 70.46463 27.12393
- 78.82369 27.95337
- 34.13841 22.02694
- 23.57778 22.65422
- 44.21422 28.39160
- 66.83015 21.58463
- 43.64449 30.13751
- 48.88550 26.13202
- 52.33360 28.30391
- 45.18157 41.89273
- 78.26361 27.24427
- 29.88389 26.63379
- 30.94319 23.77762
- 56.51968 33.27705
- 39.94894 22.21688
- 31.38151 20.92965
- 39.15090 23.80694
- 36.75032 26.18486
- 30.35745 25.90498
- 45.89886 25.79803
- 22.97356 26.67575
- 36.64776 30.95431
- 37.43784 36.03451
- 37.88910 20.43014
- 37.80332 25.32069
- 35.87383 36.55644
- 23.28766 23.83804
- 41.42498 28.88880
- 58.98015 24.26709
- 24.99242 24.45415
- 45.78202 32.32184
- 45.28900 33.67970
- 24.19064 23.73958
- 65.40365 23.17002
- 26.47503 31.19049
- 37.23060 23.69885
- 40.83703 31.78726
- 21.67654 22.91531
- 56.20328 30.89455
- 73.45188 32.94969
- 41.50183 29.52258
- 24.15896 27.02866
- 42.72720 22.64554
- 31.43625 22.84349
- 39.86141 24.17527
- 55.18267 25.03010
- 55.07938 23.84948
- 73.46461 19.68267
- 49.08313 35.69100
- 48.68449 26.75326
- 54.58864 25.86462
- 32.95040 36.44769
- 57.21915 28.30972
- 41.24059 23.85056
- 28.98524 23.28421
- 41.50114 33.73705
- 43.35912 25.30764
- 22.55027 29.36313
- 27.63637 24.18665
- 24.86806 26.15232
- 23.34930 22.47438
- 46.52759 25.73626
- 38.98288 29.70823
- 32.32178 26.39903
- 56.43930 29.58057
- 52.63055 28.59816
- 62.44314 29.22467
- 60.73191 25.47479
- 52.86880 38.37063
- 37.45048 21.23562
- 45.62444 29.66516
- 41.21803 26.75888
- 29.48350 20.45625
- 46.45759 26.57750
- 40.22980 23.46263
- 35.34829 22.35871
- 30.86723 22.61507
- 46.32276 23.27721
- 54.15260 25.16281
- 53.32966 19.11416
- 30.43213 33.47223
- 21.74999 23.10042
- 51.50626 22.92780
- 40.49315 22.36288
- 37.15326 27.89680
- 39.19288 26.19343
- 60.54843 25.33996
- 40.67981 24.81465
- 40.22503 23.39227
- 25.43711 25.12216
- 55.47331 31.34918
- 59.09021 26.29375
- 34.10491 27.36621
- 34.37518 28.92030
- 42.31397 30.55879
- 39.98724 31.80141
- 49.89564 26.79459
- 26.59876 19.45114
- 39.04950 25.85431
- 54.55610 25.57969
- 52.98590 26.10389
- 28.26060 25.42799
- 29.60006 26.94916
- 22.08088 27.80820
- 51.24027 26.79131
- 42.96648 35.57131
- 22.15670 18.28610
- 27.46471 45.34389
- 54.31407 33.08023
- 33.02283 27.22304
- 51.14024 24.84439
- 31.63079 33.92747
- 26.24003 58.46019
- 42.09502 26.09479
- 27.66505 22.52645
- 52.68118 27.07099
- 42.37960 24.85478
- 37.54313 24.87599
- 43.01623 30.52789
- 37.91853 26.33468
- 44.17362 28.55548
- 45.33204 30.91687
- 52.56293 28.79118
- 37.21896 23.54102
- 28.09818 23.80765
- 60.81037 28.01500
- 81.05304 19.05995
- 69.97036 20.01497
- 41.15605 34.93174
- 68.36251 23.10081
- 39.26193 22.11617
- 29.69093 24.50141
- 40.52842 25.50279
- 30.91302 27.96096
- 37.80699 29.54781
- 67.56905 31.13175
- 53.25386 33.45877
- 38.15878 31.60473
- 23.46046 28.95935
- 27.77209 23.25381
- 30.92026 24.63706
- 36.23157 20.23759
- 37.07129 21.28394
- 34.07756 26.81417
- 29.61593 28.31304
- 32.72098 27.89622
- 61.11371 25.24639
- 50.54263 20.37285
- 41.56782 28.46119
- 26.11217 24.27699
- 35.25266 24.89300
- 33.40608 25.25724
- 79.66995 15.21701
- 57.13734 24.56645
- 52.95081 31.49002
- 51.46670 30.03681
- 39.37912 29.47748
- 71.60168 29.50156
- 59.12662 28.23213
- 50.87476 24.65928
- 52.67663 31.46514
- 23.06647 25.85981
- 33.53777 20.45197
- 40.63812 33.96489
- 42.77290 22.80973
- 49.28024 25.32790
- 33.26269 28.23219
- 29.74569 30.54155
- 47.34192 27.70290
- 80.76579 25.70749
- 62.95430 24.10388
- 31.36708 23.52038
- 23.39756 22.41462
- 41.58252 25.48043
- 36.54170 33.87073
- 40.00033 16.96053
- 58.10562 25.77635
- 52.11137 26.98397
- 56.91456 27.24343
- 47.97594 28.69994
- 33.09406 27.44111
- 49.22106 26.35344
- 45.73891 25.21268
- 37.13081 21.33042
- 52.90884 24.07418
- 42.49667 26.30556
- 60.81374 32.04345
- 25.65456 21.18742
- 62.75386 31.47147
- 47.73567 33.96991
- 32.60075 34.94423
- 56.99292 27.52372
- 48.79374 29.38628
- 40.19805 25.35993
- 78.38822 29.46423
- 37.27869 25.09015
- 57.47466 30.70793
- 35.42958 28.55212
- 44.49937 25.45300
- 36.25600 28.19482
- 61.01008 35.87104
- 64.61303 33.28117
- 49.91383 25.10920
- 29.35288 24.17736
- 45.67369 25.12368
- 31.40035 21.31946
- 49.13794 26.45360
- 43.83834 27.40322
- 64.53794 24.01352
- 68.43014 32.70878
- 40.98285 20.55172
- 42.71057 24.38935
- 24.84875 26.15615
- 46.89653 24.86133
- 44.47789 24.82950
- 47.70465 28.62602
- 53.46058 29.85526
- 47.47699 23.94518
- 32.64402 27.20224
- 20.38963 22.70149
- 68.86426 19.81621
- 35.72066 24.47809
- 59.60039 31.69577
- 52.16699 26.02872
- 53.30722 23.44785
- 58.28852 30.03706
- 20.97854 29.74651
- 36.47624 33.19249
- 26.74878 27.57238
- 41.44547 26.32236
- 29.58364 25.77652
- 40.52393 22.71014
- 34.86628 28.60414
- 72.82124 24.59530
- 36.17020 31.35266
- 44.98027 23.51846
- 39.92309 28.36976
- 26.39613 20.89233
- 37.86704 23.31549
- 29.20308 23.49578
- 45.15887 35.57963
- 36.92703 21.83052
- 56.34293 20.55390
- 44.92657 24.09017
- 37.51007 27.97622
- 40.08890 26.53310
- 66.48486 26.84477
- 76.36312 19.12098
- 41.76863 28.49602
- 43.54191 22.47352
- 58.53230 23.65549
- 61.26342 34.03914
- 40.67457 29.59000
- 28.68782 24.00571
- 59.07816 26.37625
- 48.43925 27.06631
- 24.38647 18.88834
- 54.42330 25.25450
- 40.27098 25.82104
- 45.86077 35.17492
- 24.99284 20.21561
- 35.13303 28.55774
- 41.87684 26.36686
- 43.63938 30.21256
- 26.41563 26.25695
- 25.16920 26.09072
- 37.39686 33.83508
- 40.32570 23.81549
- 57.35052 23.73345
- 26.84973 24.46207
- 49.35000 28.47002
- 36.06802 25.09165
- 75.92164 26.05036
- 22.48510 23.24938
- 35.45687 23.38356
- 28.06145 30.99933
- 26.25515 24.44475
- 35.64301 25.39837
- 26.64653 21.23040
- 45.37849 35.30793
- 37.51152 22.75663
- 51.91544 26.70491
- 46.87006 24.36511
- 72.80836 31.83121
- 31.13543 22.93118
- 37.74808 28.81083
- 36.06805 27.00199
diff --git a/data/bminz.txt.gz b/data/bminz.txt.gz
new file mode 100644
index 0000000..8abe188
Binary files /dev/null and b/data/bminz.txt.gz differ
diff --git a/data/car.all.R b/data/car.all.R
deleted file mode 100644
index d1f580c..0000000
--- a/data/car.all.R
+++ /dev/null
@@ -1,362 +0,0 @@
-"car.all"<-
-structure(.Data = list(Length = c(177, 191, 193, 176, 175, 186, 189, 197, 197, 
-	192, 198, 221, 206, 191, 191, 177, 187, 192, 212, 179, 183, 177, 198, 
-	194, 203, 183, 185, 176, 159, 179, 192, 191, 163, 172, 181, 193, 170, 
-	175, 169, 141, 211, 180, 177, 188, 177, 199, 150, 171, 163, 185, 169, 
-	149, 178, 168, 184, 200, 197, 205, 203, 220, 164, 179, 194, 176, 155, 
-	177, 172, 170, 175, 187, 162, 184, 161, 186, 175, 178, 170, 172, 188, 
-	167, 172, 180, 178, 175, 181, 171, 199, 180, 172, 169, 184, 188, 189, 
-	146, 178, 175, 178, 182, 174, 170, 190, 182, 167, 159, 163, 158, 158, 
-	172, 180, 190, 188), Wheel.base = c(102, 109, 106, 100, 101, 109, 105, 
-	111, 111, 108, 108, 122, 114, 108, 108, 111, 103, 101, 116, 101, 103, 
-	96, 108, 110, 109, 103, 100, 112, 94, 97, 104, 119, 99, 97, 103, 106, 
-	97, 119, 94, 90, 114, 101, 99, 106, 100, 113, 93, 96, 97, 107, 98, 91, 
-	101, 94, 104, 113, 111, 109, 109, 117, 97, 101, 107, 110, 89, 99, 98, 
-	96, 105, 110, 95, 102, 94, 102, 88, 97, 97, 103, 104, 96, 96, 100, 93, 
-	105, 108, 97, 111, 103, 99, 95, 99, 105, 109, 90, 102, 97, 97, 102, 99, 
-	96, 106, 102, 94, 97, 93, 97, 97, 97, 97, 104, 109), Width = c(67, 69, 
-	71, 67, 65, 69, 69, 72, 72, 71, 73, 77, 73, 72, 72, 77, 68, 73, 75, 66, 
-	68, 71, 71, 74, 69, 68, 69, 72, 66, 69, 69, 72, 67, 67, 67, 70, 66, 72, 
-	66, 63, 78, 68, 68, 71, 68, 73, 63, 65, 67, 68, 67, 66, 67, 63, 69, 72, 
-	72, 73, 71, 78, 66, 67, 68, 72, 66, 67, 66, 67, 67, 69, 65, 67, 63, 67, 
-	67, 67, 71, 67, 69, 66, 65, 67, 67, 68, 68, 67, 72, 67, 66, 68, 67, 69, 
-	68, 60, 67, 65, 67, 67, 69, 65, 67, 69, 64, 66, 63, 66, 66, 66, 73, 67, 
-	69), Height = c(47.5, 50, 51.5, 50.5, 49.5, 51, 49.5, 50.5, 51, 50.5, 
-	48.5, 52.5, 51, 49, 49, 68.5, 49, 46.5, 52.5, 50, 51, 43.5, 51, 60, 51, 
-	51, 49, 60.5, 50, 47, 51, 61, 51, 51, 51, 51, 49.5, 66.5, 51.5, 52, 52, 
-	49, 47, 50.5, 49.5, 49, 48.5, 49.5, 46.5, 49.5, 48, 45, 47, 50, 50.5, 
-	50.5, 50.5, 50.5, 49, 53, 49.5, 49.5, 51, 61.5, 43.5, 48.5, 49, 45.5, 
-	50.5, 52, 49, 50.5, 50, 49.5, 65.5, 46.5, 45, 58, 49.5, 46, 49, 49.5, 
-	65.5, 51, 52, 47, 50.5, 48.5, 50, 46, 50.5, 52, 50, 50.5, 49, 49, 46, 
-	50.5, 47, 49.5, 50.5, 46.5, 49.5, 47, 49.5, 50.5, 51, 51, 70.5, 52.5, 
-	50.5), Front.Hd. = c(3.5, 2, 2.5, 4, 2, 3, 4, 6, 5, 5.5, 3.5, 5, 6, 3, 
-	3, 5, 3.5, 3.5, 5, 4, 4, 2, 4.5, 4.5, 4, 4, 3.5, 4.5, 3, 3, 4, 4, 3, 4, 
-	3.5, 3.5, 4.5, 5, 3.5, 4, 3.5, 3.5, 3, 4, 3.5, 3.5, 2.5, 3.5, 3, 4.5, 
-	3.5, 1.5, 1.5, 2.5, 3.5, 2.5, 3, 4, 3, 4.5, 4, 3.5, 3, 5, 3.5, 2, 4, 
-	1.5, 2, 3, 3.5, 4, 4, 1.5, 4, 3, 3, 4, 2, 4, 3, 3.5, 3.5, 4, 2.5, 3.5, 
-	4, 3.5, 5, 3.5, 3.5, 2.5, 2, 2.5, 2, 2.5, 2, 3, 2, 4, 2, 2.5, 3, 2, 3, 
-	3.5, 3, 3.5, 5, 3.5, 2.5), Rear.Hd = c(1.5, 2, 3, 1, 1, 2.5, 2.5, 4.5, 
-	3.5, 3.5, 2, 3.5, 4, 2, 2, 4.5, 0.5, 0.5, 2.5, 3, 3, -2, 3.5, 4, 1.5, 
-	2.5, 0.5, 4.5, 2, 0, 1.5, 4, 0.5, 2.5, 3, 2, 2, 3.5, 1, 3, 2, 0.5, 0, 2,
-	1.5, 0.5, 1.5, 1, 0, 2, 2.5, -2, 0, 1.5, 2.5, 1.5, 2, 3, 0.5, 3, 2.5, 2,
-	2.5, 5.5, -2, 2, 2.5, -2, 0.5, 1.5, 2, 2.5, 3, 1.5, 4.5, 0, -2, 4.5, 
-	1.5, 0, 2, 2, 5, 1.5, 1, 0, 4, 1, 2.5, 0, 2, 2.5, 1.5, 0.5, 2, 2, 0, 2, 
-	0, 2, 1.5, 0, 1.5, 0, 2, 2, 2, 2.5, 9, 2, 3), Frt.Leg.Room = c(41.5, 
-	41.5, 41.5, 42, 42, 42, 42, 42, 41, 41, 41.5, 43, 42, 42, 42, 42, 42, 
-	41.5, 41, 41, 41.5, 42, 42, 41, 42, 41, 41.5, 41.5, 40.5, 41, 41, 40.5, 
-	41, 41.5, 41, 42, 41, 42, 41, 40.5, 41.5, 41, 41.5, 42, 41, 41.5, 41, 
-	40.5, 41.5, 42, 41, 42.5, 42.5, 41, 41, 41.5, 43, 41, 42, 41, 41.5, 
-	40.5, 41.5, 41, 40.5, 41.5, 40.5, 42, 44, 42.5, 40.5, 41, 40, 40, 40.5, 
-	41, 42, 40.5, 41.5, 41, 40, 40.5, 41, 41, 42, 41.5, 42, 41.5, 41.5, 
-	43.5, 41.5, 42, 42, 40.5, 41, 41, 42, 42, 42, 40.5, 41, 42.5, 40.5, 42, 
-	42, 41.5, 41, 41, 39, 41.5, 42), Rear.Seating = c(26.5, 28.5, 31, 28, 
-	25.5, 27, 28, 30.5, 28.5, 27.5, 26.5, 32, 30, 28, 29, 28, 27.5, 24, 28, 
-	26.5, 26.5, -2, 30, 32.5, 31.5, 30.5, 26, 27, 24.5, 22.5, 31, 31, 26, 
-	25, 30.5, 30, 27.5, 30, 26.5, 26, 29, 24, 23.5, 29, 27.5, 28, 27.5, 
-	25.5, 24.5, 27, 27.5, -2, 23.5, 26, 31, 29.5, 29, 29.5, 28.5, 31.5, 27, 
-	27, 29, 27.5, -2, 26, 26.5, -2, 26, 27, 27, 29.5, 26.5, 28, -1, 21.5, 
-	-2, 28.5, 29, 21, 24.5, 26.5, -1, 29, 29.5, 23, 29.5, 26.5, 25.5, 18, 
-	27.5, 31, 29.5, 23.5, 27.5, 27.5, 22.5, 28.5, 23, 26, 27.5, 23, 25, 26, 
-	26, 27, 27, 28, 37, 29.5, 29.5), Frt.Shld = c(53, 55.5, 56.5, 52.5, 52, 
-	54.5, 56.5, 58.5, 59, 58, 58, 60.5, 59.5, 58, 57.5, 61.5, 55.5, 58, 61, 
-	53.5, 54.5, 54, 58.5, 60.5, 56, 54, 56, 58.5, 54, 56, 56, 58, 51.5, 
-	54.5, 54, 57.5, 53.5, 60, 51.5, 52, 61.5, 55.5, 54.5, 57.5, 53, 59, 
-	50.5, 53, 51, 54.5, 53.5, 53, 52.5, 52, 57, 57.5, 57, 57.5, 56, 62, 52, 
-	55, 55.5, 57.5, 50.5, 55, 54, 53, 53.5, 56, 52, 55, 52, 53.5, 56.5, 
-	53.5, 56.5, 55.5, 56.5, 52, 52.5, 55, 57, 55.5, 55.5, 54, 59, 55, 53.5, 
-	55.5, 53, 57, 55, 51, 54, 53.5, 53, 54.5, 51.5, 53, 55, 52.5, 53, 53.5, 
-	51.5, 53, 53, 53, 61.5, 54, 56.5), RearShld = c(52, 55.5, 55, 52, 51.5, 
-	55.5, 56, 58.5, 58.5, 56.5, 56.5, 60, 58.5, 57, 56.5, 50.5, 55, 55.5, 
-	61, 53.5, 55, -2, 56.5, 62, 55.5, 53.5, 55, 41.5, 52.5, 54, 55.5, 60.5, 
-	51, 53.5, 54.5, 56.5, 52.5, 62.5, 51.5, 51, 61.5, 54.5, 52, 57.5, 54, 
-	59.5, 50, 52.5, 47.5, 54, 53, -2, 50.5, 51.5, 56.5, 57, 56, 57.5, 57.5, 
-	62, 52, 55, 55.5, 43, -2, 52.5, 54, -2, 53, 56, 52, 55, 52.5, 53, 59, 
-	50.5, -2, 56.5, 55.5, 49.5, 52.5, 54, 58.5, 55, 54.5, 52, 59, 54, 53, 
-	51.5, 53, 57, 54, 50.5, 53.5, 53.5, 51, 53.5, 48, 52.5, 54.5, 50.5, 
-	52.5, 51, 51, 54, 53, 53.5, 39.5, 53, 56.5), Luggage = c(16, 14, 17, 10,
-	12, 12, 16, 16, 16, 15, 14, 19, 16, 14, 14, -2, 14, 12, 20, 14, 14, -2, 
-	15, -2, 17, 14, 14, -2, 12, 17, 16, -2, 15, 13, 14, 17, 10, -2, 18, 12, 
-	22, 12, 12, 17, 13, 15, 10, 11, 11, 14, 12, -2, 11, 11, 14, 15, 14, 19, 
-	14, 22, 13, 15, 15, -2, -2, 15, 13, -2, 12, 15, 15, 11, 11, 12, -2, 14, 
-	-2
-	, -3, 14, 7, 12, 14, -2, 14, 11, 10, 15, 13, 18, 12, 14, 18, 12, 9, 14, 
-	15, 10, 12, 13, 11, 12, 11, 13, 19, 10, 18, 18, 17, -2, 14, 17), Weight
-	 = c(2700, 3265, 2935, 2670, 2895, 3640, 2880, 3350, 3325, 3320, 3465, 
-	4285, 3545, 3480, NA, 4025, 2655, 3110, 3855, 2485, NA, 3280, 3195, 
-	3630, 3570, 2975, 2975, 3385, 2270, 2935, 3080, 3735, 2300, 2670, 2940, 
-	3145, 2560, 3665, 2345, 1845, 3850, 2850, 2695, 3015, 2750, 3610, 1695, 
-	2255, 2455, 2920, 2260, 2170, 2710, 2345, 2885, 4000, 3930, 3695, 3780, 
-	4040, NA, 2780, 3480, 3735, 2210, 2690, 2440, 2790, 3020, 3315, 2285, 
-	2745, 2185, 3110, 3415, 2775, 3350, 3185, 3200, 2390, 2275, 2920, 3690, 
-	2575, 3000, 2840, 3360, 2770, 2350, 2900, 2775, 3065, 3295, 1900, 2935, 
-	2295, 2485, 2920, 2885, 2390, 3480, 3470, 2075, 2680, 2190, 2270, 2215, 
-	2330, 3460, 2985, 3140), Tires = structure(.Data = c(16, 20, 20, 8, 17, 
-	28, 13, 23, 23, 22, 22, 29, 22, 22, NA, 23, 18, 25, 23, 14, NA, 30, 19, 
-	22, 19, 18, 18, 19, 5, 20, 19, 22, 7, 12, 18, 20, 16, 26, 8, 1, 26, 19, 
-	12, 22, 12, 22, 2, 8, 10, 12, 8, 10, 16, 5, 12, 25, 21, 22, 26, 26, NA, 
-	12, 17, 22, 10, 12, 8, 20, 11, 17, 8, 12, 5, 17, 23, 16, 27, 18, 21, 12,
-	8, 17, 19, 11, 11, 12, 25, 18, 8, 17, 11, 17, 16, 6, 8, 8, 12, 12, 24, 
-	4, 17, 27, 3, 15, 8, 10, 8, 8, 9, 12, 11), .Label = c("145", "145/80", 
-	"155", "155/65", "155/80", "165/65", "165/80", "175/70", "185", 
-	"185/60", "185/65", "185/70", "185/75", "185/80", "195/50", "195/60", 
-	"195/65", "195/70", "195/75", "205/60", "205/65", "205/70", "205/75", 
-	"215/50", "215/65", "215/70", "225/50", "225/60", "225/75", "275/40"), 
-	class = "factor"), Steering = structure(.Data = c(1, 1, 1, 1, 1, 1, 1, 
-	1, 1, 1, 1, 1, 1, 1, NA, 1, 1, 1, 1, 16, NA, 1, 1, 1, 1, 1, 1, 1, 14, 1,
-	1, 1, 20, 1, 1, 1, 14, 1, 10, 4, 1, 1, 1, 1, 1, 1, 3, 17, 1, 1, 12, 6, 
-	1, 15, 1, 1, 1, 1, 1, 1, NA, 1, 1, 1, 2, 1, 5, 9, 1, 1, 6, 1, 15, 1, 13,
-	1, 1, 1, 1, 1, 12, 1, 1, 1, 1, 18, 1, 1, 19, 1, 1, 1, 1, 11, 1, 1, 1, 1,
-	1, 20, 1, 1, 8, 1, 7, 1, 12, 12, 1, 1, 1), .Label = c("", "0.68 man.", 
-	"0.72 man.", "0.78 man.", "0.80 man.", "0.81 man.", "0.82 man.", 
-	"0.83 man.", "0.84 man.", "0.85 man.", "0.86 man.", "0.87 man.", 
-	"0.89 man.", "0.90 man.", "0.93 man.", "0.95 man.", "1.00 man.", 
-	"1.01 man.", "1.05 man.", "1.06 man."), class = "factor"), Turning = c(
-	37, 42, 39, 35, 35, 39, 41, 43, 42, 41, 41, 44, 43, 42, NA, 42, 38, 41, 
-	42, 38, NA, 42, 42, 42, 43, 39, 39, 42, 32, 38, 42, 47, 40, 38, 41, 39, 
-	36, 42, 37, 33, 45, 40, 38, 42, 39, 38, 34, 35, 37, 41, 34, 32, 34, 35, 
-	41, 42, 40, 42, 43, 45, NA, 39, 39, 39, 33, 36, 36, 37, 34, 37, 36, 39, 
-	37, 41, 36, 38, 38, 38, 42, 38, 37, 39, 38, 37, 39, 39, 43, 39, 35, 36, 
-	37, 40, 42, 32, 37, 35, 36, 39, 39, 36, 36, 40, 35, 34, 34, 35, 35, 35, 
-	37, 37, 37), Disp. = c(112, 163, 141, 121, 152, 209, 151, 231, 231, 189,
-	231, 307, 273, 273, NA, 262, 133, 191, 305, 133, NA, 350, 151, 191, 202,
-	153, 153, 153, 90, 135, 153, 202, 135, 153, 181, 180, 97, 182, 114, 81, 
-	302, 140, 133, 153, 141, 232, 61, 97, 97, 132, 91, 97, 125, 90, 143, 
-	274, 242, 232, 302, 302, NA, 133, 180, 181, 97, 133, 113, 80, 159, 181, 
-	97, 122, 90, 181, 143, 146, 180, 146, 180, 97, 97, 146, 146, 116, 132, 
-	107, 231, 138, 98, 165, 121, 121, 163, 73, 135, 109, 109, 122, 132, 97, 
-	180, 180, 89, 109, 109, 109, 109, 109, 129, 141, 141), HP = c(130, 160, 
-	130, 108, 168, 208, 110, 165, 165, 101, 165, 140, 180, 180, NA, 150, 95,
-	140, 170, 95, NA, 250, 110, 120, 150, 150, 150, 100, 81, 150, 100, 150, 
-	93, 150, 141, 150, 113, 145, 90, 63, 150, 88, 110, 90, 98, 140, 55, 102,
-	95, 125, 92, 108, 140, 81, 110, 278, 250, 140, 225, 150, NA, 110, 158, 
-	150, 116, 110, 103, 160, 158, 177, 82, 102, 81, 142, 107, 140, 180, 138,
-	160, 90, 90, 138, 106, 120, 120, 92, 165, 160, 74, 165, 128, 130, 160, 
-	73, 130, 90, 97, 115, 130, 102, 190, 200, 78, 158, 81, 105, 100, 100, 
-	90, 114, 114), Trans1 = structure(.Data = c(3, 3, 3, 3, 3, 3, 1, 1, 1, 
-	1, 1, 1, 1, 1, NA, 3, 3, 3, 1, 3, NA, 4, 1, 1, 1, 1, 1, 3, 3, 3, 1, 1, 
-	3, 3, 1, 1, 3, 3, 3, 3, 1, 3, 3, 1, 3, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 
-	1, 1, 1, 1, NA, 3, 1, 3, 3, 3, 3, 3, 3, 1, 3, 3, 3, 1, 1, 3, 3, 1, 3, 3,
-	3, 3, 1, 3, 1, 3, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 3, 3, 3, 
-	2, 3, 3, 3, 2, 3, 3), .Label = c("", "man.4", "man.5", "man.6"), class
-	 = "factor"), Gear.Ratio = structure(.Data = c(39, 26, 40, 38, 28, 19, 
-	1, 1, 1, 1, 1, 1, 1, 1, NA, 3, 21, 8, 1, 6, NA, 2, 1, 1, 1, 1, 1, 17, 
-	35, 5, 1, 1, 6, 5, 1, 1, 45, 7, 11, 9, 1, 14, 25, 1, 6, 1, 35, 31, 37, 
-	18, 36, 40, 44, 35, 12, 1, 1, 1, 1, 1, NA, 25, 1, 30, 46, 25, 27, 23, 
-	40, 1, 20, 30, 35, 1, 1, 34, 32, 1, 24, 43, 25, 16, 1, 33, 1, 40, 1, 8, 
-	10, 22, 29, 35, 26, 28, 15, 30, 41, 14, 4, 29, 1, 42, 29, 25, 29, 39, 
-	40, 16, 47, 13, 13), .Label = c("", "1.67", "2.07", "2.49", "2.51", 
-	"2.55", "2.58", "2.60", "2.61", "2.64", "2.66", "2.68", "2.71", "2.73", 
-	"2.74", "2.75", "2.76", "2.78", "2.80", "2.81", "2.83", "2.84", "2.86", 
-	"2.90", "2.94", "2.95", "3.00", "3.02", "3.03", "3.04", "3.05", "3.07", 
-	"3.08", "3.10", "3.12", "3.13", "3.18", "3.25", "3.26", "3.27", "3.29", 
-	"3.30", "3.38", "3.46", "3.47", "3.50", "4.11"), class = "factor"), 
-	Eng.Rev = structure(.Data = c(50, 26, 42, 46, 33, 14, 1, 1, 1, 1, 1, 1, 
-	1, 1, NA, 3, 20, 5, 1, 7, NA, 2, 1, 1, 1, 1, 1, 12, 45, 6, 1, 1, 13, 7, 
-	1, 1, 58, 4, 17, 29, 1, 10, 28, 1, 8, 1, 56, 43, 49, 22, 48, 54, 57, 45,
-	16, 1, 1, 1, 1, 1, NA, 28, 1, 27, 59, 28, 38, 24, 43, 1, 30, 32, 45, 1, 
-	1, 35, 34, 1, 19, 55, 36, 23, 1, 39, 1, 44, 1, 11, 15, 21, 31, 32, 25, 
-	51, 22, 41, 50, 19, 9, 40, 1, 47, 40, 37, 40, 53, 52, 27, 60, 18, 16), 
-	.Label = c("", "1335", "1630", "2075", "2085", "2130", "2160", "2195", 
-	"2215", "2225", "2245", "2250", "2280", "2285", "2295", "2305", "2320", 
-	"2330", "2350", "2375", "2380", "2390", "2395", "2430", "2470", "2505", 
-	"2510", "2530", "2545", "2565", "2575", "2615", "2625", "2645", "2670", 
-	"2680", "2685", "2735", "2760", "2765", "2770", "2775", "2780", "2810", 
-	"2825", "2835", "2840", "2855", "2930", "2935", "2945", "2980", "3000", 
-	"3010", "3015", "3025", "3115", "3125", "3225", "3370"), class = 
-	"factor"), Tank = c(13.199999999999999, 18, 21.100000000000001, 15.9, 
-	16.399999999999999, 21.100000000000001, 15.699999999999999, 18, 18, 
-	16.5, 18.800000000000001, 25, 18, 18.800000000000001, NA, 27, 15.6, 
-	15.5, 25, 13.6, NA, 20, 17.100000000000001, 20, 16, 14, 14, 20, 
-	13.199999999999999, 14, 16, 20, 13, 14, 16, 17, 13.199999999999999, 21, 
-	13, 10, 18, 15.4, 15.1, 16, 15.4, 19, 10.6, 13.199999999999999, 12.4, 
-	17, 11.9, 11.9, 15.9, 11.9, 15.9, 22.5, 22.5, 18.600000000000001, 
-	22.100000000000001, 18, NA, 15.9, 18.5, 19.600000000000001, 11.9, 15.9, 
-	14.5, 18.5, 14.5, 18.5, 11.9, 15.9, 11.9, 15.9, 14.199999999999999, 
-	15.9, 18.699999999999999, 17.199999999999999, 18.5, 13.199999999999999, 
-	13.199999999999999, 16.399999999999999, 17.699999999999999, 
-	17.199999999999999, 18, 15.9, 18, 13.6, 13.199999999999999, 
-	21.100000000000001, 18, 17.899999999999999, 17, 9.1999999999999993, 
-	15.9, 15.9, 15.9, 15.9, 15.9, 13.199999999999999, 18.5, 18.5, 11.9, 
-	14.5, 12.4, 14.5, 14.5, 14.5, 15.9, 15.800000000000001, 
-	15.800000000000001), Model2 = structure(.Data = c(1, 1, 1, 1, 1, 1, 1, 
-	14, 13, 1, 1, 1, 3, 4, NA, 7, 5, 19, 1, 1, NA, 1, 1, 20, 1, 2, 2, 18, 
-	12, 1, 1, 21, 16, 17, 15, 6, 1, 1, 1, 1, 9, 1, 1, 1, 10, 8, 1, 1, 1, 1, 
-	1, 1, 1, 1, 1, 1, 1, 1, 1, 1, NA, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-	1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 11, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-	1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1), .Label = c("", 
-	"      Turbo 4 (3)", "Cadillac Fleetwood V8", "Cadillac Seville V8", 
-	"Chevrolet Corsica 4", "Dodge Monaco V6", "GMC Safari V6", 
-	"Mercury Cougar V6", "Mercury Grand Marquis V8", "Mercury Topaz 4", 
-	"Mitsubishi Eclipse", "Mitsubishi Mirage 4", "Oldsmobile 88 Royale V6", 
-	"Oldsmobile 98 Regency V6", "Plymouth Acclaim V6", "Plymouth Horizon 4",
-	"Plymouth Sundance Turbo 4", "Plymouth Voyager 4", 
-	"Pontiac Firebird V6", "Silhouette V6/ Pontiac Trans Sport V6", 
-	"Voyager V6/Chrysler Town & Country V6"), class = "factor"), Dist.n = 
-	structure(.Data = c(19, 19, 17, 18, 6, 3, 19, 19, 20, 20, 20, 8, 19, 20,
-	NA, 9, 20, 8, 9, 21, NA, 4, 19, 14, 18, 19, 19, 15, 18, 18, 18, 14, 19, 
-	18, 18, 19, 18, 10, 16, 20, 10, 9, 19, 19, 17, 10, 14, 14, 19, 18, 17, 
-	18, 17, 18, 17, 10, 7, 18, 9, 9, NA, 19, 7, 7, 6, 16, 19, 4, 9, 8, 17, 
-	18, 17, 21, 11, 6, 7, 16, 19, 20, 17, 21, 12, 13, 8, 19, 19, 22, 16, 3, 
-	16, 18, 18, 18, 14, 17, 17, 1, 1, 19, 5, 5, 17, 2, 16, 17, 16, 17, 9, 6,
-	7), .Label = c("(62)/38", "(64)/36", "50/[50]", "51/[49]", "52/[48]", 
-	"53/[47]", "54/[46]", "55/[45]", "56/[44]", "57/[43]", "58/[42]", 
-	"60/[40]", "62/[38]", "[58]/42", "[59]/41", "[60]/40", "[61]/39", 
-	"[62]/38", "[63]/37", "[64]/36", "[65]/35", "[66]/34"), class = 
-	"factor"), Tires2 = structure(.Data = c(3, 4, 4, 3, 3, 4, 3, 3, 3, 3, 4,
-	4, 4, 4, NA, 4, 3, 4, 4, 2, NA, 6, 3, 3, 3, 3, 3, 3, 2, 4, 3, 3, 2, 3, 
-	3, 3, 3, 3, 3, 1, 4, 3, 3, 3, 3, 4, 1, 2, 3, 3, 2, 3, 3, 2, 3, 4, 4, 4, 
-	4, 4, NA, 3, 4, 3, 3, 3, 2, 4, 4, 4, 2, 3, 2, 4, 3, 4, 5, 3, 4, 2, 2, 3,
-	3, 3, 4, 3, 4, 3, 2, 4, 4, 4, 4, 2, 3, 2, 2, 3, 4, 2, 4, 5, 2, 4, 2, 3, 
-	2, 2, 3, 3, 4), .Label = c("R12", "R13", "R14", "R15", "R16", "R17"), 
-	class = "factor"), Pwr.Steer = structure(.Data = c(29, 34, 35, 14, 31, 
-	21, 19, 26, 30, 31, 19, 33, 26, 20, NA, 18, 15, 10, 23, 13, NA, 9, 31, 
-	19, 27, 11, 11, 25, 9, 4, 23, 32, 20, 3, 4, 20, 10, 35, 17, 6, 26, 21, 
-	17, 14, 21, 8, 1, 22, 2, 26, 18, 1, 7, 10, 23, 12, 30, 11, 31, 28, NA, 
-	15, 29, 36, 2, 14, 14, 5, 19, 15, 13, 23, 7, 20, 22, 9, 11, 24, 16, 11, 
-	11, 17, 17, 17, 23, 10, 21, 15, 21, 17, 28, 22, 34, 1, 20, 25, 17, 19, 
-	16, 22, 31, 15, 12, 14, 1, 18, 13, 13, 31, 18, 20), .Label = c("", 
-	"0.57 pwr.", "0.58 pwr.", "0.60 pwr.", "0.61 pwr.", "0.62 pwr.", 
-	"0.63 pwr.", "0.64 pwr.", "0.66 pwr.", "0.67 pwr.", "0.68 pwr.", 
-	"0.69 pwr.", "0.70 pwr.", "0.71 pwr.", "0.72 pwr.", "0.73 pwr.", 
-	"0.74 pwr.", "0.75 pwr.", "0.76 pwr.", "0.77 pwr.", "0.78 pwr.", 
-	"0.79 pwr.", "0.80 pwr.", "0.81 pwr.", "0.82 pwr.", "0.83 pwr.", 
-	"0.84 pwr.", "0.85 pwr.", "0.86 pwr.", "0.87 pwr.", "0.88 pwr.", 
-	"0.91 pwr.", "0.93 pwr.", "0.96 pwr.", "0.97 pwr.", "1.06 pwr."), class
-	 = "factor"), .empty. = structure(.Data = c(1, 1, 1, 1, 1, 1, 1, 1, 1, 
-	1, 1, 1, 1, 1, NA, 1, 1, 1, 1, 1, NA, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-	1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-	1, 1, 1, 1, NA, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-	1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-	1, 1, 1, 1, 1, 1, 1), .Label = "", class = "factor"), Disp2 = c(1.8, 
-	2.7000000000000002, 2.2999999999999998, 2, 2.5, 3.5, 2.5, 
-	3.7999999999999998, 3.7999999999999998, 3.1000000000000001, 
-	3.7999999999999998, 5, 4.5, 4.5, NA, 4.2999999999999998, 
-	2.2000000000000002, 3.1000000000000001, 5, 2.2000000000000002, NA, 
-	5.7000000000000002, 2.5, 3.1000000000000001, 3.2999999999999998, 2.5, 
-	2.5, 2.5, 1.5, 2.2000000000000002, 2.5, 3.2999999999999998, 
-	2.2000000000000002, 2.5, 3, 3, 1.6000000000000001, 3, 
-	1.8999999999999999, 1.3, 5, 2.2999999999999998, 2.2000000000000002, 2.5,
-	2.2999999999999998, 3.7999999999999998, 1, 1.6000000000000001, 
-	1.6000000000000001, 2.2000000000000002, 1.5, 1.6000000000000001, 2, 1.5,
-	2.3999999999999999, 4.5, 4, 3.7999999999999998, 5, 5, NA, 
-	2.2000000000000002, 3, 3, 1.6000000000000001, 2.2000000000000002, 1.8, 
-	1.3, 2.6000000000000001, 3, 1.6000000000000001, 2, 1.5, 3, 
-	2.3999999999999999, 2.5, 3, 2.3999999999999999, 3, 1.6000000000000001, 
-	1.6000000000000001, 2.3999999999999999, 2.3999999999999999, 2, 
-	2.2000000000000002, 1.8, 3.7999999999999998, 2.2999999999999998, 
-	1.6000000000000001, 2.7000000000000002, 2, 2, 2.7000000000000002, 1.2, 
-	2.2000000000000002, 1.8, 1.8, 2, 2.2000000000000002, 1.6000000000000001,
-	3, 3, 1.5, 1.8, 1.8, 1.8, 1.8, 1.8, 2.1000000000000001, 
-	2.2999999999999998, 2.2999999999999998), HP.revs = c(6000, 5900, 5500, 
-	5300, 5800, 5700, 5200, 4800, 4800, 4400, 4800, 3200, 4300, 4300, NA, 
-	4000, 5200, 4400, 4400, 5200, NA, 4400, 5200, 4200, 5000, 4800, 4800, 
-	4800, 5500, 4800, 4800, 4800, 4800, 4800, 5000, 5000, 6500, 4800, 4600, 
-	5000, 3200, 4000, 4700, 4400, 4400, 3800, 5700, 5800, 5800, 5200, 6000, 
-	6000, 6200, 5500, 4500, 6000, 5600, 3800, 4200, 3200, NA, 4700, 5500, 
-	5000, 6500, 4700, 5500, 7000, 5800, 5700, 5000, 5000, 5500, 5000, 5000, 
-	5600, 6400, 5600, 5200, 6000, 6000, 5600, 4800, 5200, 5000, 5000, 4800, 
-	6200, 5600, 5900, 6000, 6000, 5900, 5600, 5400, 5200, 5200, 5200, 5400, 
-	5800, 5600, 6000, 6000, 5600, 5500, 5400, 5400, 5400, 4800, 5400, 5400),
-	Trans2 = structure(.Data = c(4, 4, 3, 3, 4, 4, 3, 4, 4, 4, 4, 4, 4, 4, 
-	NA, 4, 3, 4, 4, 3, NA, 4, 3, 3, 4, 3, 3, 3, 3, 3, 3, 4, 3, 3, 4, 4, 4, 
-	4, 3, 3, 4, 4, 4, 3, 3, 4, 3, 3, 3, 4, 4, 1, 4, 4, 4, 4, 4, 4, 4, 4, NA,
-	4, 4, 4, 1, 4, 4, 4, 4, 4, 3, 4, 4, 2, 4, 4, 4, 4, 4, 3, 3, 4, 4, 4, 4, 
-	4, 4, 3, 3, 3, 3, 4, 4, 5, 4, 3, 4, 4, 4, 3, 4, 4, 3, 1, 1, 1, 3, 3, 3, 
-	4, 4), .Label = c("", "auto 4", "auto.3", "auto.4", "auto.CVT"), class
-	 = "factor"), Gear2 = structure(.Data = c(42, 36, 45, 45, 35, 31, 30, 5,
-	5, 10, 5, 4, 7, 7, NA, 9, 41, 9, 3, 30, NA, 2, 41, 41, 11, 36, 36, 43, 
-	55, 36, 36, 11, 26, 36, 11, 20, 26, 13, 46, 44, 3, 27, 19, 46, 46, 8, 
-	59, 54, 13, 33, 48, 1, 44, 26, 24, 14, 17, 10, 6, 6, NA, 19, 28, 23, 1, 
-	19, 12, 28, 47, 32, 57, 24, 26, 16, 34, 29, 29, 22, 15, 55, 55, 15, 40, 
-	39, 49, 47, 5, 41, 51, 52, 56, 38, 36, 35, 18, 55, 21, 24, 53, 54, 25, 
-	37, 58, 1, 1, 1, 50, 50, 60, 18, 29), .Label = c("", "1.81", "1.83", 
-	"1.96", "1.99", "2.06", "2.08", "2.19", "2.26", "2.33", "2.36", "2.43", 
-	"2.45", "2.46", "2.53", "2.54", "2.55", "2.57", "2.59", "2.66", "2.69", 
-	"2.70", "2.71", "2.74", "2.76", "2.78", "2.80", "2.81", "2.83", "2.84", 
-	"2.85", "2.87", "2.89", "2.90", "2.99", "3.02", "3.03", "3.10", "3.12", 
-	"3.17", "3.18", "3.21", "3.22", "3.23", "3.25", "3.26", "3.27", "3.28", 
-	"3.38", "3.41", "3.43", "3.45", "3.52", "3.53", "3.60", "3.62", "3.63", 
-	"3.72", "3.87", "4.09"), class = "factor"), Eng.Rev2 = structure(.Data
-	 = c(63, 45, 55, 60, 49, 32, 34, 7, 7, 15, 6, 4, 9, 9, NA, 11, 52, 12, 
-	2, 36, NA, 5, 48, 36, 15, 44, 44, 51, 74, 45, 39, 14, 40, 48, 17, 27, 
-	41, 16, 61, 71, 3, 29, 24, 53, 58, 10, 79, 73, 26, 40, 67, 1, 64, 42, 
-	33, 16, 20, 13, 8, 8, NA, 24, 33, 18, 1, 24, 23, 35, 56, 46, 76, 33, 42,
-	22, 30, 38, 38, 28, 19, 72, 75, 21, 47, 57, 62, 59, 8, 54, 66, 63, 68, 
-	49, 43, 65, 25, 75, 36, 33, 70, 73, 31, 50, 78, 1, 1, 1, 69, 69, 77, 22,
-	37), .Label = c(" ", "1410", "1415", "1445", "1450", "1570", "1585", 
-	"1595", "1645", "1730", "1740", "1810", "1840", "1880", "1925", "1970", 
-	"1980", "2045", "2050", "2065", "2200", "2210", "2215", "2225", "2245", 
-	"2255", "2260", "2270", "2285", "2310", "2315", "2325", "2355", "2380", 
-	"2385", "2400", "2405", "2435", "2465", "2485", "2500", "2520", "2530", 
-	"2535", "2565", "2575", "2585", "2595", "2600", "2610", "2630", "2670", 
-	"2695", "2745", "2760", "2780", "2800", "2805", "2810", "2835", "2845", 
-	"2875", "2890", "2905", "2910", "2980", "2990", "3075", "3110", "3130", 
-	"3150", "3210", "3220", "3260", "3285", "3310", "3355", "3395", "3755"),
-	class = "factor"), Price = c(11950, 24760, 26900, 18900, 24650, 33200, 
-	13150, 20225, 16145, NA, 23040, 27400, 26960, 28855, NA, 13790, 10320, 
-	10995, 14525, 8620, NA, 31979, 12140, 13995, 25495, 10945, 12495, 11995,
-	6851, 9745, 12995, 15395, 6995, 8845, NA, 15350, 8895, 12267, 7402, 
-	6319, 17257, 9456, 11470, 12640, 9483, 14980, 6695, 10125, 10390, 12145,
-	6635, 9410, 13945, 5899, 9999, 38000, 35000, 29422, 29246, 27986, NA, 
-	12459, 23300, 14944, 13800, 12279, 6599, 17880, 31600, 39950, 8672, 
-	10989, 5899, 17879, 14929, 13249, 27900, 13949, 17899, 12249, 7399, 
-	11650, 14799, 15930, 19945, 10855, NA, 10565, 7254, 41990, 16995, 25995,
-	23550, 5866, 11499, 9599, 13071, 11588, 12268, 8748, 21498, 22860, 6488,
-	17900, 7225, 9995, 8695, 9995, 14080, 18450, 21700), Country = 
-	structure(.Data = c(5, 5, 4, 4, 4, 4, 10, 10, 10, NA, 10, 10, 10, 10, 
-	NA, 10, 10, 10, 10, 10, NA, 10, 10, 10, 10, 10, 10, 10, 5, 10, 10, 10, 
-	10, 10, NA, 10, 10, 10, 10, 7, 10, 10, 10, 10, 10, 10, 5, 6, 5, 6, 6, 5,
-	5, 7, 7, 5, 5, 10, 10, 10, NA, 6, 5, 5, 5, 6, 5, 5, 4, 4, 8, 5, 7, 5, 5,
-	5, 5, 5, 5, 5, 6, 5, 5, 3, 3, 10, NA, 10, 7, 4, 9, 9, 2, 5, 6, 5, 5, 6, 
-	5, 6, 5, 5, 5, 4, 1, 8, 8, 4, 4, 9, 9), .Label = c("Brazil", "England", 
-	"France", "Germany", "Japan", "Japan/USA", "Korea", "Mexico", "Sweden", 
-	"USA"), class = "factor"), Reliability = structure(.Data = c(5, 5, NA, 
-	NA, 4, NA, 3, 3, 3, NA, 3, 1, 3, 3, NA, 1, 1, 1, 1, 1, NA, 1, NA, NA, 3,
-	4, 2, 3, NA, 1, 3, 3, 1, 3, NA, 2, 4, 3, 2, 4, 3, 1, 3, 1, 2, 1, NA, 5, 
-	NA, 5, 5, 5, 5, 2, NA, NA, NA, 2, 1, 3, NA, 4, 5, 5, NA, 5, 5, 5, 3, 1, 
-	4, 5, 2, 4, NA, 3, NA, NA, 5, 3, 5, 5, NA, NA, NA, NA, NA, 2, 1, NA, 2, 
-	NA, NA, NA, 5, 5, NA, 5, NA, 5, 3, 4, 5, NA, NA, NA, 3, 3, NA, 3, 3), 
-	.Label = c("1", "2", "3", "4", "5"), class = "factor"), Mileage = c(NA, 
-	20, NA, 27, NA, NA, 21, NA, 23, NA, NA, NA, NA, NA, NA, NA, 26, NA, 18, 
-	NA, NA, NA, NA, 18, NA, 25, 22, NA, NA, 27, NA, 18, NA, NA, NA, 22, 33, 
-	18, 33, 37, 20, NA, 30, NA, 24, 23, NA, NA, NA, 26, 32, 33, 27, NA, 23, 
-	NA, NA, NA, NA, NA, NA, 24, 21, 19, NA, NA, 32, NA, NA, NA, 26, 25, NA, 
-	21, 20, 24, NA, 20, 22, NA, 33, 21, 19, 24, NA, 26, NA, 23, 28, NA, NA, 
-	NA, NA, 34, 23, 25, 28, 27, NA, 29, 23, NA, 35, NA, NA, NA, NA, 26, NA, 
-	23, NA), Type = structure(.Data = c(4, 3, 3, 1, 1, 3, 3, 2, 2, NA, 3, 2,
-	2, 3, NA, 6, 1, 5, 2, 1, NA, 5, 3, 6, 3, 1, 3, 6, 4, 5, 3, 6, 4, 1, NA, 
-	3, 4, 6, 4, 4, 2, 5, 5, 3, 1, 3, 4, 4, 5, 1, 4, 5, 5, 4, 3, 3, 3, 3, 3, 
-	2, NA, 1, 3, 6, 5, 5, 4, 5, 1, 3, 4, 1, 4, 1, 6, 5, 5, 6, 3, 5, 4, 1, 6,
-	1, 3, 5, NA, 1, 4, 5, 1, 3, 3, 4, 1, 4, 5, 1, 5, 4, 3, 5, 4, 5, 4, 5, 4,
-	4, 6, 1, 3), .Label = c("Compact", "Large", "Medium", "Small", "Sporty",
-	"Van"), class = "factor")), row.names = c("Acura Integra", 
-	"Acura Legend", "Audi 100", "Audi 80", "BMW 325i", "BMW 535i", 
-	"Buick Century", "Buick Electra", "Buick Le Sabre", "Buick Regal", 
-	"Buick Riviera", "Cadillac Brougham", "Cadillac De Ville", 
-	"Cadillac Eldorado", "Cadillac Seville", "Chevrolet Astro", 
-	"Chevrolet Beretta", "Chevrolet Camaro", "Chevrolet Caprice", 
-	"Chevrolet Cavalier", "Chevrolet Corsica", "Chevrolet Corvette", 
-	"Chevrolet Lumina", "Chevrolet Lumina APV", "Chrysler Imperial", 
-	"Chrysler Le Baron", "Chrysler Le Baron Coupe", "Dodge Caravan", 
-	"Dodge Colt", "Dodge Daytona", "Dodge Dynasty", "Dodge Grand Caravan", 
-	"Dodge Omni", "Dodge Shadow", "Dodge Spirit", "Eagle Premier", 
-	"Eagle Summit", "Ford Aerostar", "Ford Escort", "Ford Festiva", 
-	"Ford LTD Crown Victoria", "Ford Mustang", "Ford Probe", "Ford Taurus", 
-	"Ford Tempo", "Ford Thunderbird", "GEO Metro", "GEO Prizm", "GEO Storm",
-	"Honda Accord", "Honda Civic", "Honda Civic CRX", "Honda Prelude", 
-	"Hyundai Excel", "Hyundai Sonata", "Infiniti Q45", "Lexus LS400", 
-	"Lincoln Continental", "Lincoln Mark VII", "Lincoln Town Car", 
-	"Mazda 323", "Mazda 626", "Mazda 929", "Mazda MPV", "Mazda MX-5 Miata", 
-	"Mazda MX-6", "Mazda Protege", "Mazda RX7", "Mercedes-Benz 190", 
-	"Mercedes-Benz 300E", "Mercury Tracer", "Mitsubishi Galant", 
-	"Mitsubishi Precis", "Mitsubishi Sigma", "Mitsubishi Wagon", 
-	"Nissan 240SX", "Nissan 300ZX", "Nissan Axxess", "Nissan Maxima", 
-	"Nissan Pulsar NX", "Nissan Sentra", "Nissan Stanza", "Nissan Van", 
-	"Peugeot 405", "Peugeot 505", "Plymouth Laser", "Pontiac Bonneville", 
-	"Pontiac Grand Am", "Pontiac LeMans", "Porsche 944", "Saab 900", 
-	"Saab 9000", "Sterling 827", "Subaru Justy", "Subaru Legacy", 
-	"Subaru Loyale", "Subaru XT", "Toyota Camry", "Toyota Celica", 
-	"Toyota Corolla", "Toyota Cressida", "Toyota Supra", "Toyota Tercel", 
-	"Volkswagen Corrado", "Volkswagen Fox", "Volkswagen GTI", 
-	"Volkswagen Golf", "Volkswagen Jetta", "Volkswagen Vanagon", 
-	"Volvo 240", "Volvo 740"), class = "data.frame")
diff --git a/data/car.all.rda b/data/car.all.rda
new file mode 100644
index 0000000..486cad7
Binary files /dev/null and b/data/car.all.rda differ
diff --git a/data/chestnz.txt b/data/chestnz.txt
deleted file mode 100644
index c319cfd..0000000
--- a/data/chestnz.txt
+++ /dev/null
@@ -1,74 +0,0 @@
-age  nolnor nolr lnor lr 
-  16   2   0   0   0 
-  17  16   0   0   1 
-  18  34   1   2   0 
-  19  65   1   4   3 
-  20 126   4   6   1 
-  21 117   6   4   0 
-  22 115   4  12   6 
-  23 160   6  13  10 
-  24 174   2   8   5 
-  25 153   3  10   2 
-  26 164   2  18  12 
-  27 178   4  21   4 
-  28 184   2  11   4 
-  29 216   4  17   6 
-  30 209   2  23   9 
-  31 198   5  19   9 
-  32 216   7  19  11 
-  33 217   6  14   6 
-  34 196   0  16   6 
-  35 239   3  16  12 
-  36 257   7  22   6 
-  37 233   3  20   5 
-  38 199   8  23   9 
-  39 231   4  20  11 
-  40 240   5  21   9 
-  41 250   1  16  12 
-  42 216   2  16  10 
-  43 258   2  14   7 
-  44 261  12  15   7 
-  45 255   5  10   5 
-  46 260   3  18   4 
-  47 194   2  18   7 
-  48 207   4  14   6 
-  49 177   7  13   5 
-  50 184   2  14   7 
-  51 232   7   9   3 
-  52 172   3  15   7 
-  53 157   4  12   6 
-  54 188   2  10   4 
-  55 138   2   4   2 
-  56 151   1  12   3 
-  57 122   1   6   6 
-  58 113   3   7   2 
-  59 106   3   4   2 
-  60 106   1   8   6 
-  61  69   1   3   3 
-  62  52   0   3   3 
-  63  50   1   5   0 
-  64  62   0   1   2 
-  65  49   0   2   1 
-  66  39   0   6   2 
-  67  44   0   2   0 
-  68  41   0   3   2 
-  69  40   1   1   1 
-  70  43   1   0   5 
-  71  38   0   2   2 
-  72  60   1   3   2 
-  73  63   1   9   1 
-  74  45   2   1   3 
-  75  43   0   3   2 
-  76  51   0   4   3 
-  77  49   3   1   1 
-  78  73   1   2   5 
-  79  43   0   7   3 
-  80  39   0   6   2 
-  81  51   1   2   2 
-  82  30   0   5   4 
-  83  28   1   2   4 
-  84  27   0   5   2 
-  85  20   0   3   2 
-  86   5   0   0   0 
-  87   3   0   0   0 
-  88   3   0   0   0 
diff --git a/data/chestnz.txt.gz b/data/chestnz.txt.gz
new file mode 100644
index 0000000..4e16957
Binary files /dev/null and b/data/chestnz.txt.gz differ
diff --git a/data/coalminers.txt b/data/coalminers.txt
deleted file mode 100644
index ee09e88..0000000
--- a/data/coalminers.txt
+++ /dev/null
@@ -1,10 +0,0 @@
-   BW   BnW  nBW nBnW age
-    9    7   95  1841  22
-   23    9  105  1654  27
-   54   19  177  1863  32
-  121   48  257  2357  37
-  169   54  273  1778  42
-  269   88  324  1712  47
-  404  117  245  1324  52
-  406  152  225   967  57
-  372  106  132   526  62
diff --git a/data/coalminers.txt.gz b/data/coalminers.txt.gz
new file mode 100644
index 0000000..667dcfe
Binary files /dev/null and b/data/coalminers.txt.gz differ
diff --git a/data/crashbc.R b/data/crashbc.R
deleted file mode 100644
index 4bb5d22..0000000
--- a/data/crashbc.R
+++ /dev/null
@@ -1,18 +0,0 @@
-crashbc <-
-structure(list(Monday = c(0L, 0L, 0L, 0L, 0L, 0L, 1L, 12L, 20L, 
-5L, 9L, 3L, 5L, 8L, 6L, 11L, 17L, 10L, 4L, 6L, 1L, 0L, 1L, 1L
-), Tuesday = c(0L, 0L, 0L, 0L, 0L, 3L, 3L, 5L, 28L, 4L, 1L, 8L, 
-4L, 9L, 2L, 13L, 16L, 23L, 8L, 3L, 2L, 0L, 1L, 0L), Wednesday = c(0L, 
-0L, 0L, 0L, 0L, 2L, 5L, 17L, 23L, 6L, 6L, 1L, 5L, 6L, 3L, 13L, 
-10L, 14L, 11L, 4L, 2L, 1L, 0L, 0L), Thursday = c(0L, 0L, 0L, 
-0L, 1L, 1L, 4L, 17L, 26L, 3L, 2L, 5L, 9L, 4L, 5L, 16L, 12L, 25L, 
-9L, 9L, 1L, 3L, 1L, 2L), Friday = c(0L, 0L, 0L, 0L, 0L, 1L, 5L, 
-7L, 16L, 7L, 4L, 2L, 5L, 5L, 4L, 14L, 16L, 12L, 7L, 4L, 4L, 2L, 
-0L, 1L), Saturday = c(1L, 0L, 0L, 0L, 0L, 0L, 0L, 4L, 10L, 6L, 
-10L, 6L, 5L, 7L, 6L, 7L, 10L, 5L, 2L, 2L, 1L, 0L, 0L, 1L), Sunday = c(0L, 
-0L, 2L, 1L, 0L, 0L, 0L, 1L, 5L, 8L, 7L, 14L, 3L, 3L, 7L, 5L, 
-4L, 3L, 7L, 1L, 1L, 0L, 0L, 0L)), .Names = c("Monday", "Tuesday", 
-"Wednesday", "Thursday", "Friday", "Saturday", "Sunday"), class = "data.frame", row.names = c("0", 
-"1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", 
-"13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23"
-))
diff --git a/data/crashbc.rda b/data/crashbc.rda
new file mode 100644
index 0000000..4fb11f7
Binary files /dev/null and b/data/crashbc.rda differ
diff --git a/data/crashf.R b/data/crashf.R
deleted file mode 100644
index 60d0342..0000000
--- a/data/crashf.R
+++ /dev/null
@@ -1,18 +0,0 @@
-crashf <-
-structure(list(Monday = c(1L, 0L, 1L, 1L, 1L, 0L, 1L, 1L, 2L, 
-1L, 1L, 2L, 2L, 5L, 2L, 0L, 3L, 3L, 1L, 1L, 2L, 2L, 2L, 0L), 
-    Tuesday = c(0L, 0L, 0L, 1L, 1L, 1L, 1L, 2L, 2L, 0L, 4L, 2L, 
-    2L, 1L, 1L, 3L, 5L, 2L, 1L, 1L, 2L, 4L, 0L, 1L), Wednesday = c(0L, 
-    0L, 2L, 1L, 0L, 1L, 2L, 1L, 1L, 2L, 3L, 2L, 2L, 2L, 1L, 2L, 
-    2L, 6L, 2L, 1L, 2L, 2L, 0L, 1L), Thursday = c(1L, 5L, 0L, 
-    2L, 2L, 2L, 1L, 1L, 6L, 1L, 2L, 2L, 4L, 5L, 0L, 3L, 5L, 4L, 
-    4L, 2L, 4L, 0L, 1L, 0L), Friday = c(2L, 6L, 2L, 2L, 0L, 0L, 
-    0L, 0L, 1L, 4L, 0L, 4L, 4L, 1L, 4L, 2L, 6L, 1L, 4L, 6L, 2L, 
-    1L, 3L, 1L), Saturday = c(1L, 5L, 2L, 3L, 2L, 0L, 0L, 0L, 
-    0L, 0L, 4L, 1L, 3L, 4L, 3L, 3L, 3L, 6L, 4L, 3L, 4L, 1L, 6L, 
-    5L), Sunday = c(4L, 1L, 2L, 4L, 2L, 0L, 3L, 0L, 1L, 0L, 2L, 
-    2L, 2L, 1L, 2L, 4L, 5L, 5L, 1L, 3L, 3L, 1L, 2L, 0L)), .Names = c("Monday", 
-"Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"
-), class = "data.frame", row.names = c("0", "1", "2", "3", "4", 
-"5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", 
-"16", "17", "18", "19", "20", "21", "22", "23"))
diff --git a/data/crashf.rda b/data/crashf.rda
new file mode 100644
index 0000000..c2dabbb
Binary files /dev/null and b/data/crashf.rda differ
diff --git a/data/crashi.R b/data/crashi.R
deleted file mode 100644
index 51ac861..0000000
--- a/data/crashi.R
+++ /dev/null
@@ -1,21 +0,0 @@
-crashi <-
-structure(list(Monday = c(16L, 13L, 5L, 6L, 7L, 12L, 37L, 66L, 
-117L, 67L, 67L, 80L, 75L, 77L, 84L, 112L, 115L, 127L, 63L, 47L, 
-25L, 34L, 24L, 28L), Tuesday = c(10L, 11L, 8L, 4L, 6L, 14L, 37L, 
-79L, 138L, 81L, 70L, 80L, 85L, 69L, 87L, 136L, 110L, 130L, 69L, 
-63L, 46L, 42L, 26L, 23L), Wednesday = c(22L, 15L, 16L, 8L, 11L, 
-14L, 32L, 92L, 132L, 68L, 62L, 50L, 86L, 84L, 98L, 134L, 138L, 
-140L, 91L, 53L, 62L, 49L, 35L, 20L), Thursday = c(12L, 23L, 13L, 
-12L, 16L, 18L, 45L, 75L, 138L, 75L, 76L, 80L, 87L, 90L, 85L, 
-156L, 144L, 149L, 97L, 57L, 55L, 53L, 52L, 49L), Friday = c(29L, 
-23L, 24L, 19L, 11L, 19L, 32L, 73L, 122L, 72L, 72L, 74L, 94L, 
-90L, 104L, 158L, 146L, 155L, 142L, 67L, 68L, 85L, 67L, 61L), 
-    Saturday = c(55L, 42L, 37L, 31L, 35L, 27L, 21L, 40L, 59L, 
-    59L, 84L, 114L, 101L, 105L, 103L, 120L, 106L, 104L, 83L, 
-    69L, 70L, 62L, 54L, 69L), Sunday = c(55L, 64L, 64L, 45L, 
-    35L, 35L, 36L, 33L, 36L, 45L, 57L, 86L, 93L, 80L, 96L, 103L, 
-    90L, 97L, 64L, 52L, 44L, 33L, 18L, 29L)), .Names = c("Monday", 
-"Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"
-), class = "data.frame", row.names = c("0", "1", "2", "3", "4", 
-"5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", 
-"16", "17", "18", "19", "20", "21", "22", "23"))
diff --git a/data/crashi.rda b/data/crashi.rda
new file mode 100644
index 0000000..8232120
Binary files /dev/null and b/data/crashi.rda differ
diff --git a/data/crashmc.R b/data/crashmc.R
deleted file mode 100644
index ba1ffc1..0000000
--- a/data/crashmc.R
+++ /dev/null
@@ -1,19 +0,0 @@
-crashmc <-
-structure(list(Monday = c(1L, 0L, 0L, 2L, 0L, 1L, 6L, 8L, 12L, 
-9L, 12L, 7L, 13L, 5L, 10L, 12L, 10L, 21L, 8L, 3L, 2L, 3L, 0L, 
-1L), Tuesday = c(0L, 1L, 0L, 0L, 0L, 0L, 2L, 16L, 21L, 6L, 8L, 
-9L, 10L, 4L, 10L, 15L, 13L, 18L, 10L, 6L, 5L, 4L, 0L, 1L), Wednesday = c(0L, 
-0L, 1L, 0L, 0L, 1L, 5L, 10L, 16L, 8L, 6L, 5L, 6L, 12L, 10L, 13L, 
-21L, 18L, 7L, 11L, 12L, 6L, 1L, 2L), Thursday = c(0L, 1L, 2L, 
-0L, 0L, 0L, 4L, 7L, 13L, 6L, 8L, 9L, 7L, 9L, 12L, 18L, 26L, 26L, 
-16L, 10L, 5L, 3L, 3L, 1L), Friday = c(5L, 1L, 1L, 0L, 0L, 2L, 
-4L, 8L, 18L, 5L, 4L, 8L, 8L, 10L, 14L, 18L, 24L, 24L, 21L, 10L, 
-8L, 7L, 5L, 7L), Saturday = c(1L, 3L, 3L, 0L, 0L, 1L, 1L, 1L, 
-3L, 7L, 14L, 21L, 24L, 22L, 16L, 24L, 17L, 18L, 13L, 10L, 6L, 
-5L, 5L, 7L), Sunday = c(1L, 1L, 1L, 1L, 0L, 2L, 0L, 0L, 3L, 8L, 
-7L, 23L, 22L, 16L, 20L, 23L, 21L, 14L, 13L, 6L, 5L, 3L, 3L, 1L
-)), .Names = c("Monday", "Tuesday", "Wednesday", "Thursday", 
-"Friday", "Saturday", "Sunday"), class = "data.frame", row.names = c("0", 
-"1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", 
-"13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23"
-))
diff --git a/data/crashmc.rda b/data/crashmc.rda
new file mode 100644
index 0000000..d3ba0d9
Binary files /dev/null and b/data/crashmc.rda differ
diff --git a/data/crashp.R b/data/crashp.R
deleted file mode 100644
index 4b26d34..0000000
--- a/data/crashp.R
+++ /dev/null
@@ -1,18 +0,0 @@
-crashp <-
-structure(list(Monday = c(0L, 2L, 0L, 0L, 2L, 1L, 2L, 3L, 8L, 
-4L, 3L, 12L, 7L, 7L, 7L, 15L, 9L, 16L, 1L, 3L, 1L, 1L, 0L, 0L
-), Tuesday = c(0L, 0L, 0L, 0L, 0L, 0L, 2L, 9L, 11L, 10L, 7L, 
-6L, 13L, 5L, 4L, 26L, 11L, 10L, 8L, 3L, 4L, 0L, 2L, 1L), Wednesday = c(1L, 
-1L, 0L, 0L, 0L, 0L, 5L, 2L, 22L, 4L, 6L, 7L, 9L, 4L, 6L, 27L, 
-16L, 11L, 8L, 6L, 6L, 2L, 1L, 1L), Thursday = c(0L, 0L, 1L, 2L, 
-0L, 0L, 0L, 5L, 14L, 6L, 5L, 6L, 11L, 10L, 5L, 22L, 11L, 10L, 
-7L, 3L, 7L, 2L, 7L, 6L), Friday = c(0L, 1L, 1L, 1L, 1L, 0L, 1L, 
-5L, 14L, 6L, 6L, 5L, 7L, 5L, 6L, 19L, 15L, 16L, 19L, 2L, 7L, 
-8L, 5L, 3L), Saturday = c(3L, 4L, 2L, 1L, 0L, 0L, 0L, 5L, 3L, 
-3L, 9L, 6L, 10L, 5L, 8L, 14L, 11L, 5L, 11L, 5L, 6L, 7L, 5L, 6L
-), Sunday = c(8L, 7L, 3L, 3L, 1L, 1L, 3L, 1L, 1L, 2L, 4L, 3L, 
-4L, 2L, 3L, 6L, 3L, 3L, 7L, 4L, 4L, 1L, 0L, 1L)), .Names = c("Monday", 
-"Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"
-), class = "data.frame", row.names = c("0", "1", "2", "3", "4", 
-"5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", 
-"16", "17", "18", "19", "20", "21", "22", "23"))
diff --git a/data/crashp.rda b/data/crashp.rda
new file mode 100644
index 0000000..0591fdc
Binary files /dev/null and b/data/crashp.rda differ
diff --git a/data/crashtr.R b/data/crashtr.R
deleted file mode 100644
index 7eb0505..0000000
--- a/data/crashtr.R
+++ /dev/null
@@ -1,18 +0,0 @@
-crashtr <-
-structure(list(Monday = c(0L, 1L, 0L, 0L, 3L, 3L, 6L, 8L, 10L, 
-10L, 10L, 11L, 4L, 4L, 4L, 5L, 11L, 6L, 3L, 1L, 1L, 1L, 0L, 2L
-), Tuesday = c(1L, 1L, 3L, 0L, 0L, 1L, 3L, 12L, 11L, 9L, 8L, 
-6L, 7L, 9L, 7L, 13L, 5L, 5L, 0L, 1L, 1L, 1L, 0L, 2L), Wednesday = c(1L, 
-1L, 2L, 2L, 3L, 0L, 2L, 13L, 5L, 7L, 10L, 10L, 7L, 6L, 11L, 7L, 
-10L, 9L, 4L, 2L, 1L, 3L, 1L, 0L), Thursday = c(1L, 0L, 1L, 1L, 
-4L, 5L, 8L, 7L, 2L, 8L, 8L, 11L, 8L, 10L, 9L, 5L, 7L, 5L, 3L, 
-0L, 4L, 3L, 2L, 2L), Friday = c(0L, 2L, 1L, 1L, 2L, 4L, 5L, 8L, 
-7L, 10L, 7L, 10L, 7L, 3L, 9L, 11L, 17L, 7L, 10L, 3L, 1L, 2L, 
-4L, 3L), Saturday = c(2L, 0L, 3L, 0L, 3L, 1L, 1L, 2L, 3L, 1L, 
-6L, 4L, 2L, 7L, 2L, 3L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 0L), Sunday = c(1L, 
-2L, 2L, 3L, 0L, 0L, 2L, 2L, 2L, 3L, 1L, 5L, 3L, 1L, 4L, 1L, 3L, 
-4L, 0L, 1L, 2L, 0L, 0L, 0L)), .Names = c("Monday", "Tuesday", 
-"Wednesday", "Thursday", "Friday", "Saturday", "Sunday"), class = "data.frame", row.names = c("0", 
-"1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", 
-"13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23"
-))
diff --git a/data/crashtr.rda b/data/crashtr.rda
new file mode 100644
index 0000000..ea6e873
Binary files /dev/null and b/data/crashtr.rda differ
diff --git a/data/enzyme.txt b/data/enzyme.txt
deleted file mode 100644
index aad5404..0000000
--- a/data/enzyme.txt
+++ /dev/null
@@ -1,13 +0,0 @@
-conc   velocity
-2      0.0615
-2      0.0527
-0.667  0.0334
-0.667  0.0258
-0.40   0.0138
-0.40   0.0258
-0.286  0.0129
-0.286  0.0183
-0.222  0.0083
-0.222  0.0169
-0.2    0.0129
-0.2    0.0087
diff --git a/data/enzyme.txt.gz b/data/enzyme.txt.gz
new file mode 100644
index 0000000..3879253
Binary files /dev/null and b/data/enzyme.txt.gz differ
diff --git a/data/fibre15.rda b/data/fibre15.rda
new file mode 100644
index 0000000..ba252fc
Binary files /dev/null and b/data/fibre15.rda differ
diff --git a/data/fibre1dot5.rda b/data/fibre1dot5.rda
new file mode 100644
index 0000000..3fe73a7
Binary files /dev/null and b/data/fibre1dot5.rda differ
diff --git a/data/gala.R b/data/gala.R
deleted file mode 100644
index 27cbaec..0000000
--- a/data/gala.R
+++ /dev/null
@@ -1,28 +0,0 @@
-gala <-
-structure(list(Species = c(58, 31, 3, 25, 2, 18, 24, 10, 8, 2, 
-97, 93, 58, 5, 40, 347, 51, 2, 104, 108, 12, 70, 280, 237, 444, 
-62, 285, 44, 16, 21), Endemics = c(23, 21, 3, 9, 1, 11, 0, 7, 
-4, 2, 26, 35, 17, 4, 19, 89, 23, 2, 37, 33, 9, 30, 65, 81, 95, 
-28, 73, 16, 8, 12), Area = c(25.09, 1.24, 0.21, 0.1, 0.05, 0.34, 
-0.08, 2.33, 0.03, 0.18, 58.27, 634.49, 0.57, 0.78, 17.35, 4669.32, 
-129.49, 0.01, 59.56, 17.95, 0.23, 4.89, 551.62, 572.33, 903.82, 
-24.08, 170.92, 1.84, 1.24, 2.85), Elevation = c(346, 109, 114, 
-46, 77, 119, 93, 168, 71, 112, 198, 1494, 49, 227, 76, 1707, 
-343, 25, 777, 458, 94, 367, 716, 906, 864, 259, 640, 147, 186, 
-253), Nearest = c(0.6, 0.6, 2.8, 1.9, 1.9, 8, 6, 34.1, 0.4, 2.6, 
-1.1, 4.3, 1.1, 4.6, 47.4, 0.7, 29.1, 3.3, 29.1, 10.7, 0.5, 4.4, 
-45.2, 0.2, 0.6, 16.5, 2.6, 0.6, 6.8, 34.1), Scruz = c(0.6, 26.3, 
-58.7, 47.4, 1.9, 8, 12, 290.2, 0.4, 50.2, 88.3, 95.3, 93.1, 62.2, 
-92.2, 28.1, 85.9, 45.9, 119.6, 10.7, 0.6, 24.4, 66.6, 19.8, 0, 
-16.5, 49.2, 9.6, 50.9, 254.7), Adjacent = c(1.84, 572.33, 0.78, 
-0.18, 903.82, 1.84, 0.34, 2.85, 17.95, 0.1, 0.57, 4669.32, 58.27, 
-0.21, 129.49, 634.49, 59.56, 0.1, 129.49, 0.03, 25.09, 572.33, 
-0.57, 4.89, 0.52, 0.52, 0.1, 25.09, 17.95, 2.33)), .Names = c("Species", 
-"Endemics", "Area", "Elevation", "Nearest", "Scruz", "Adjacent"
-), class = "data.frame", row.names = c("Baltra", "Bartolome", 
-"Caldwell", "Champion", "Coamano", "Daphne.Major", "Daphne.Minor", 
-"Darwin", "Eden", "Enderby", "Espanola", "Fernandina", "Gardner1", 
-"Gardner2", "Genovesa", "Isabela", "Marchena", "Onslow", "Pinta", 
-"Pinzon", "Las.Plazas", "Rabida", "SanCristobal", "SanSalvador", 
-"SantaCruz", "SantaFe", "SantaMaria", "Seymour", "Tortuga", "Wolf"
-))
diff --git a/data/gala.rda b/data/gala.rda
new file mode 100644
index 0000000..d1637ec
Binary files /dev/null and b/data/gala.rda differ
diff --git a/data/gew.txt b/data/gew.txt
deleted file mode 100644
index 299874c..0000000
--- a/data/gew.txt
+++ /dev/null
@@ -1,21 +0,0 @@
-    y1          x1       x2          y2         x3      x4
- 40.05292     1170.6    97.8      2.52813     191.5     1.8
- 54.64859     2015.8   104.4     24.91888     516.0     0.8
- 40.31206     2803.3   118.0     29.34270     729.0     7.4
- 84.21099     2039.7   156.2     27.61823     560.4    18.1
-127.57240     2256.2   172.6     60.35945     519.9    23.5
-124.87970     2132.2   186.6     50.61588     628.5    26.5
- 96.55514     1834.1   220.9     30.70955     537.1    36.2
-131.16010     1588.0   287.8     60.69605     561.2    60.8
- 77.02764     1749.4   319.9     30.00972     617.2    84.4
- 46.96689     1687.2   321.3     42.50750     626.7    91.2
-100.65970     2007.7   319.6     58.61146     737.2    92.4
-115.74670     2208.3   346.0     46.96287     760.5    86.0
-114.58260     1656.7   456.4     57.87651     581.4   111.1
-119.87620     1604.4   543.4     43.22093     662.3   130.6
-105.56990     1431.8   618.3     22.87143     583.8   141.8
-148.42660     1610.5   647.4     52.94754     635.2   136.7
-194.36220     1819.4   671.3     71.23030     723.8   129.7
-158.20370     2079.7   726.1     61.72550     864.1   145.5
-163.09300     2371.6   800.3     85.13053    1193.5   174.8
-227.56340     2759.9   888.9     88.27518    1188.9   213.5
diff --git a/data/gew.txt.gz b/data/gew.txt.gz
new file mode 100644
index 0000000..3f51f76
Binary files /dev/null and b/data/gew.txt.gz differ
diff --git a/data/hspider.R b/data/hspider.R
deleted file mode 100644
index b3143fd..0000000
--- a/data/hspider.R
+++ /dev/null
@@ -1,47 +0,0 @@
-"hspider" <-
-structure(list(WaterCon = c(2.3321, 3.0493, 2.5572, 2.6741, 3.0155, 
-3.381, 3.1781, 2.6247, 2.4849, 2.1972, 2.2192, 2.2925, 3.5175, 
-3.0865, 3.2696, 3.0301, 3.3322, 3.1224, 2.9232, 3.1091, 2.9755, 
-1.2528, 1.1939, 1.6487, 1.8245, 0.9933, 0.9555, 0.9555), BareSand = c(0, 
-0, 0, 0, 0, 2.3979, 0, 0, 0, 3.9318, 0, 0, 1.7918, 0, 0, 0, 0, 
-0, 0, 0, 0, 3.2581, 3.0445, 3.2581, 3.5835, 4.5109, 2.3979, 3.434
-), FallTwig = c(0, 1.7918, 0, 0, 0, 3.434, 0, 4.2627, 0, 0, 0, 
-0, 1.7918, 0, 4.3944, 4.6052, 4.4543, 4.3944, 4.5109, 4.5951, 
-4.5643, 0, 0, 0, 0, 0, 0, 0), CoveMoss = c(3.0445, 1.0986, 2.3979, 
-2.3979, 0, 2.3979, 0.6931, 1.0986, 4.3307, 3.434, 4.1109, 3.8286, 
-0.6931, 1.7918, 0.6931, 0.6931, 0.6931, 0, 1.6094, 0.6931, 0.6931, 
-4.3307, 4.0254, 4.0254, 1.0986, 1.7918, 3.8286, 3.7136), CoveHerb = c(4.4543, 
-4.5643, 4.6052, 4.6151, 4.6151, 3.434, 4.6151, 3.434, 3.2581, 
-3.0445, 3.7136, 4.0254, 4.5109, 4.5643, 3.0445, 0.6931, 3.0445, 
-3.0445, 1.6094, 0.6931, 1.7918, 0.6931, 3.2581, 3.0445, 4.1109, 
-1.7918, 3.434, 3.434), ReflLux = c(3.912, 1.6094, 3.6889, 2.9957, 
-2.3026, 0.6931, 2.3026, 0.6931, 3.4012, 3.6889, 3.6889, 3.6889, 
-3.4012, 1.0986, 0.6931, 0, 1.0986, 1.0986, 0, 0, 0, 3.912, 4.0943, 
-4.0073, 2.3026, 4.382, 3.6889, 3.6889), Alopacce = c(25, 0, 15, 
-2, 1, 0, 2, 0, 1, 3, 15, 16, 3, 0, 0, 0, 0, 0, 0, 0, 0, 7, 17, 
-11, 9, 3, 29, 15), Alopcune = c(10, 2, 20, 6, 20, 6, 7, 11, 1, 
-0, 1, 13, 43, 2, 0, 3, 0, 1, 1, 2, 1, 0, 0, 0, 1, 0, 0, 0), Alopfabr = c(0, 
-0, 2, 0, 0, 0, 0, 0, 0, 1, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 16, 
-15, 20, 9, 6, 11, 14), Arctlute = c(0, 0, 2, 1, 2, 6, 12, 0, 
-0, 0, 0, 0, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), 
-    Arctperi = c(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 4, 7, 5, 0, 18, 4, 1), Auloalbi = c(4, 
-    30, 9, 24, 9, 6, 16, 7, 0, 0, 1, 0, 18, 4, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 2, 0, 0, 0), Pardlugu = c(0, 1, 1, 1, 1, 0, 
-    1, 55, 0, 0, 0, 0, 1, 3, 6, 6, 2, 5, 12, 13, 16, 0, 2, 0, 
-    1, 0, 0, 0), Pardmont = c(60, 1, 29, 7, 2, 11, 30, 2, 26, 
-    22, 95, 96, 24, 14, 0, 0, 0, 0, 0, 0, 1, 2, 6, 3, 11, 0, 
-    1, 6), Pardnigr = c(12, 15, 18, 29, 135, 27, 89, 2, 1, 0, 
-    0, 1, 53, 15, 0, 2, 0, 0, 1, 0, 0, 0, 0, 0, 6, 0, 0, 0), 
-    Pardpull = c(45, 37, 45, 94, 76, 24, 105, 1, 1, 0, 1, 8, 
-    72, 72, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0), Trocterr = c(57, 
-    65, 66, 86, 91, 63, 118, 30, 2, 1, 4, 13, 97, 94, 25, 28, 
-    23, 25, 22, 22, 18, 1, 1, 0, 16, 1, 0, 2), Zoraspin = c(4, 
-    9, 1, 25, 17, 34, 16, 3, 0, 0, 0, 0, 22, 32, 3, 4, 2, 0, 
-    3, 2, 2, 0, 0, 0, 6, 0, 0, 0)), .Names = c("WaterCon", "BareSand", 
-"FallTwig", "CoveMoss", "CoveHerb", "ReflLux", "Alopacce", "Alopcune", 
-"Alopfabr", "Arctlute", "Arctperi", "Auloalbi", "Pardlugu", "Pardmont", 
-"Pardnigr", "Pardpull", "Trocterr", "Zoraspin"), row.names = c("1", 
-"2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", 
-"14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", 
-"25", "26", "27", "28"), class = "data.frame")
diff --git a/data/hspider.rda b/data/hspider.rda
new file mode 100644
index 0000000..9bb6717
Binary files /dev/null and b/data/hspider.rda differ
diff --git a/data/hued.rda b/data/hued.rda
new file mode 100644
index 0000000..27342b9
Binary files /dev/null and b/data/hued.rda differ
diff --git a/data/huie.rda b/data/huie.rda
new file mode 100644
index 0000000..32ae9c3
Binary files /dev/null and b/data/huie.rda differ
diff --git a/data/hunua.txt b/data/hunua.txt
deleted file mode 100644
index 4b2d076..0000000
--- a/data/hunua.txt
+++ /dev/null
@@ -1,393 +0,0 @@
-agaaus beitaw corlae cyadea cyamed daccup dacdac eladen hedarb hohpop kniexc kuneri lepsco metrob neslan rhosap vitluc altitude
-0 0 0 0 0 1 1 0 0 0 1 1 0 0 0 0 0 90 
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 80 
-0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 50 
-0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 40 
-0 1 1 1 0 0 0 0 0 0 1 0 0 0 0 0 1 40 
-0 1 1 1 0 0 0 0 0 0 1 0 0 0 0 1 0 50 
-0 1 0 0 0 0 1 0 0 0 1 1 0 1 0 0 1 70 
-1 1 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 100 
-1 1 0 0 0 1 1 0 0 0 1 1 0 0 1 0 0 120 
-0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 60 
-1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 70 
-1 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 90 
-0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 30 
-1 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 110 
-0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 1 40 
-1 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 80 
-0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 50 
-1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 60 
-0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 40 
-1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 80 
-0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 1 1 50 
-0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 50 
-0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 1 0 100 
-0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 60 
-1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 60 
-0 0 1 1 1 0 0 0 0 0 0 1 0 0 0 0 1 20 
-0 0 0 1 1 0 0 0 1 0 0 0 0 0 0 0 0 140 
-1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 60 
-0 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 80 
-0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 60 
-0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 60 
-1 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 50 
-0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 40 
-0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 1 60 
-0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 90 
-1 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 140 
-1 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 140 
-0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 180 
-0 1 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 200 
-0 0 0 1 0 0 0 0 0 0 1 1 0 0 0 1 0 160 
-0 0 0 1 1 1 0 0 0 0 1 0 0 0 0 1 0 80 
-0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 200 
-0 0 0 1 0 0 0 0 0 0 1 0 1 0 0 0 0 90 
-0 0 0 1 0 1 0 0 0 0 1 0 0 0 0 0 0 60 
-0 1 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 200 
-0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 40 
-0 1 0 1 0 1 0 0 0 0 1 1 0 0 0 0 0 60 
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 75 
-0 1 0 0 0 1 1 0 0 0 0 0 0 0 1 0 1 78 
-0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 60 
-1 1 0 1 0 1 0 0 0 0 1 0 0 0 0 1 1 60 
-0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 60 
-0 0 0 1 0 0 0 0 0 0 1 1 0 0 0 0 0 100 
-0 1 0 1 1 1 1 0 0 0 0 0 0 0 0 1 0 80 
-1 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 60 
-0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 170 
-0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 140 
-0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 100 
-1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 80 
-0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 80 
-0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 80 
-0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 1 1 70 
-0 1 0 0 0 0 1 0 0 0 1 0 0 0 0 1 1 90 
-0 1 0 0 0 1 1 0 0 0 1 0 0 0 0 0 1 70 
-0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 1 50 
-1 1 0 1 0 1 1 0 0 0 0 0 0 0 0 1 1 100 
-1 0 0 0 0 1 1 0 0 0 1 0 0 0 0 1 1 95 
-0 1 0 1 1 1 0 0 0 0 1 0 0 0 0 1 1 100 
-0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 1 1 90 
-0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 90 
-0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 80 
-0 1 0 0 1 1 0 0 0 0 1 0 0 0 0 0 1 70 
-1 1 0 1 0 1 0 0 0 0 1 1 0 0 0 0 0 35 
-0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 25 
-1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 60 
-0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 35 
-0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 60 
-0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 
-0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 
-0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 3 
-0 0 0 0 0 0 1 0 0 1 1 1 0 0 0 0 0 20 
-1 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 100 
-0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 60 
-0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 60 
-1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 220 
-0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 200 
-1 0 0 1 0 0 0 0 0 0 1 1 0 0 0 0 0 160 
-0 1 1 0 0 0 0 0 0 0 1 0 0 0 0 1 1 140 
-0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 160 
-1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 180 
-0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 40 
-1 1 0 0 0 1 0 0 0 0 1 1 0 1 0 0 0 200 
-0 1 0 0 0 1 1 0 0 0 1 0 0 0 0 0 1 70 
-0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 80 
-0 0 0 1 1 0 0 0 0 0 0 1 0 1 0 0 0 60 
-0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 60 
-1 1 0 0 1 0 0 1 0 0 1 0 0 0 0 0 1 100 
-1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 150 
-1 0 0 1 0 0 0 1 0 0 1 1 0 1 0 0 0 180 
-1 0 0 1 0 1 0 0 0 0 1 1 0 0 0 0 0 160 
-1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 260 
-0 1 0 1 0 0 0 0 1 0 1 0 0 0 0 0 0 115 
-1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 1 270 
-1 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 240 
-0 1 0 0 0 0 1 0 0 0 1 1 0 0 0 0 0 90 
-1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 100 
-0 1 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 100 
-0 1 0 0 0 0 0 0 1 0 1 0 0 0 0 1 0 340 
-1 1 0 0 1 0 0 0 0 0 1 0 0 0 0 1 0 300 
-0 0 0 1 1 0 0 0 0 0 1 0 0 0 0 0 0 290 
-0 1 0 1 1 0 1 0 0 0 1 0 0 0 0 1 0 380 
-0 1 0 0 1 0 0 0 0 0 1 0 0 0 0 1 0 240 
-1 0 0 1 1 0 0 0 0 0 1 0 0 0 0 0 0 40 
-1 0 1 0 1 0 0 0 0 0 0 1 0 0 0 0 1 50 
-0 1 1 0 1 0 0 0 0 0 1 1 0 0 0 0 1 60 
-0 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 1 105 
-0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 100 
-0 1 0 1 0 0 0 0 0 0 1 0 0 0 0 1 0 200 
-1 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 140 
-0 1 0 0 1 0 0 0 0 0 0 0 0 0 1 0 1 60 
-0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 80 
-1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 100 
-0 1 0 1 1 0 0 0 0 0 1 0 0 0 1 1 1 40 
-0 1 1 1 0 0 0 0 1 0 1 0 0 0 0 1 0 220 
-0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 80 
-1 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 120 
-0 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 1 200 
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 40 
-1 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 60 
-0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 70 
-0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 220 
-0 1 0 0 1 0 0 0 0 0 1 0 0 0 0 1 0 160 
-0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 1 1 180 
-0 1 1 1 0 0 0 0 0 0 1 0 0 0 0 1 1 180 
-0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
-0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 120 
-0 0 0 1 1 0 1 0 0 0 1 0 0 0 0 1 1 120 
-0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 130 
-0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 1 0 190 
-1 0 0 0 1 1 0 0 0 0 1 1 0 0 0 0 0 100 
-0 0 1 1 1 0 1 0 0 0 1 0 0 0 0 0 1 90 
-1 1 0 1 0 1 0 0 0 0 1 1 0 0 0 0 0 80 
-1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 220 
-0 0 0 1 0 1 0 0 1 0 1 0 0 0 0 1 1 220 
-1 1 0 0 0 1 0 0 1 0 1 0 0 0 0 0 0 190 
-0 1 0 1 1 0 0 0 0 0 1 0 0 0 1 1 0 140 
-0 1 1 1 0 0 0 0 0 0 1 0 0 0 0 1 1 100 
-1 1 0 0 1 1 0 0 0 0 1 0 0 0 0 0 0 180 
-0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 100 
-0 0 0 0 0 1 0 0 0 0 0 1 0 0 1 0 0 80 
-0 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 0 85 
-0 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 0 60 
-0 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 0 60 
-0 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 0 80 
-1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 160 
-0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 1 0 150 
-0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 130 
-0 1 0 1 1 1 1 0 0 0 1 1 0 0 0 0 0 30 
-0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 160 
-0 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 160 
-0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 170 
-0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 180 
-0 1 0 1 0 1 1 0 0 0 1 0 0 0 0 0 0 185 
-0 1 0 1 0 0 0 0 1 0 1 0 0 0 0 0 0 180 
-0 1 0 1 1 1 1 0 1 0 1 0 0 0 0 0 0 140 
-0 0 0 1 1 0 0 0 1 0 1 0 0 0 0 1 0 130 
-0 1 0 1 1 0 0 0 0 0 1 0 0 0 0 1 0 100 
-0 1 0 0 0 0 1 0 1 0 1 0 0 0 0 1 1 60 
-0 0 0 1 0 0 0 0 0 0 1 1 0 0 0 1 1 80 
-1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 110 
-0 0 0 0 0 0 0 0 1 0 1 1 0 0 0 0 0 200 
-0 1 0 1 1 1 0 0 1 0 1 0 0 0 0 1 0 220 
-0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 240 
-0 1 0 0 1 0 0 0 0 0 1 0 0 0 0 1 0 240 
-0 1 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 240 
-0 1 0 0 0 1 1 0 0 0 0 1 0 0 0 0 1 80 
-0 1 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 240 
-0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 0 1 260 
-0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 260 
-0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 200 
-0 1 0 0 0 1 1 0 0 0 1 0 0 0 0 0 0 80 
-0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 1 0 220 
-0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 1 0 280 
-0 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 200 
-0 1 0 1 1 1 0 0 0 0 1 0 0 0 0 0 1 200 
-0 1 0 0 1 0 0 0 1 0 1 0 0 0 1 1 0 80 
-0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 1 0 240 
-0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 280 
-0 0 0 1 1 0 0 0 1 0 0 0 0 0 0 0 0 300 
-0 0 0 1 0 1 0 0 0 0 1 1 0 0 0 0 0 240 
-0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1 200 
-0 1 0 0 1 0 0 0 1 0 1 0 0 0 0 1 1 160 
-0 0 0 0 0 1 1 0 0 0 1 0 0 0 0 0 1 210 
-0 0 0 0 1 1 1 0 0 0 1 0 0 0 0 0 0 240 
-0 1 0 1 1 0 0 0 1 0 1 0 0 0 0 1 0 220 
-0 0 0 0 0 0 0 0 1 0 1 1 0 0 0 0 1 100 
-0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 60 
-0 0 0 1 1 0 1 0 0 0 1 1 0 0 0 0 1 60 
-0 1 0 0 0 1 1 0 0 0 1 1 0 1 0 0 1 75 
-0 0 0 1 1 1 1 0 1 0 0 0 0 0 0 1 0 50 
-0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 60 
-1 1 0 0 0 1 1 0 0 0 1 0 0 0 0 0 0 70 
-0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 80 
-0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 1 1 90 
-1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 95 
-0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 65 
-0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 80 
-0 1 0 1 0 0 0 0 0 0 1 0 0 0 0 1 1 100 
-0 1 1 1 0 0 0 0 1 0 1 0 0 0 0 1 1 100 
-0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 200 
-0 0 0 1 1 0 0 0 1 0 0 0 0 0 0 0 0 200 
-0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 1 0 260 
-0 0 0 0 0 1 1 0 0 0 1 0 0 0 0 0 0 220 
-0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 1 0 180 
-0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 1 180 
-0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 1 0 180 
-0 1 0 1 0 0 1 0 0 0 1 0 0 0 0 0 0 120 
-0 0 0 0 0 1 1 0 0 0 1 0 0 0 0 0 0 120 
-0 1 0 1 1 1 1 0 0 0 1 0 0 0 0 0 0 190 
-0 1 0 1 0 0 0 0 1 0 1 0 0 0 0 1 0 180 
-0 1 0 1 0 0 0 0 1 0 1 0 0 0 1 0 0 180 
-0 1 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 160 
-0 1 0 0 1 0 0 0 0 0 1 0 0 0 0 1 0 200 
-0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 160 
-0 0 0 1 0 1 0 0 0 0 1 1 0 0 0 0 0 120 
-0 1 0 1 0 0 0 0 0 0 1 1 0 0 0 0 0 110 
-0 0 0 1 1 0 1 0 0 0 1 0 0 0 0 1 0 200 
-0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 240 
-0 0 0 0 1 0 0 0 0 0 1 1 0 0 0 0 0 290 
-0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 210 
-1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 200 
-1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 200 
-0 0 0 1 1 0 0 0 0 0 1 0 0 0 0 0 0 290 
-0 1 0 1 1 1 1 0 0 0 1 0 0 0 0 1 0 120 
-0 1 0 1 1 0 0 0 0 0 1 0 0 0 0 1 0 300 
-0 1 0 0 1 1 0 0 0 0 0 0 0 0 0 1 0 240 
-0 1 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 300 
-0 1 0 1 1 0 0 0 0 0 1 0 0 0 0 0 0 320 
-1 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 270 
-1 0 0 1 1 1 0 0 0 0 1 1 0 0 0 0 0 210 
-1 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 120 
-0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 40 
-1 1 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 80 
-0 1 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 260 
-0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 200 
-0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 130 
-1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 150 
-0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 100 
-0 0 0 1 0 1 0 0 0 0 1 1 0 0 0 0 0 170 
-0 1 0 1 1 0 0 0 0 0 1 0 0 0 0 1 0 150 
-0 1 0 0 1 0 0 0 0 0 1 0 0 0 0 1 0 150 
-0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 250 
-0 0 0 1 0 1 0 1 0 0 1 0 0 0 0 0 0 120 
-0 1 0 1 0 0 0 0 0 0 1 0 0 0 0 1 0 180 
-1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 200 
-0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 10 
-0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 100 
-0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 160 
-0 1 0 1 0 1 1 0 0 0 1 0 0 0 0 1 0 280 
-0 1 0 1 1 1 0 0 1 0 0 0 0 0 0 1 0 210 
-1 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 260 
-1 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 170 
-0 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 0 80 
-0 0 0 1 0 0 0 0 0 0 1 1 0 0 0 0 0 100 
-0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 60 
-0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 100 
-1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 160 
-0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 90 
-1 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 150 
-1 1 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 130 
-0 1 0 0 0 0 0 1 1 0 1 1 0 0 0 0 0 200 
-0 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 100 
-1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 100 
-1 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 60 
-0 1 0 1 1 0 0 0 0 0 0 0 0 0 1 1 0 20 
-1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 200 
-0 1 0 1 1 0 0 0 0 0 1 0 0 0 0 0 0 200 
-0 1 0 0 1 0 0 0 1 0 1 0 0 0 0 1 0 300 
-1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 300 
-1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 300 
-1 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 450 
-1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 390 
-1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 400 
-0 1 0 1 0 0 0 0 1 0 1 0 0 1 0 0 0 400 
-0 1 0 1 0 0 0 0 1 0 1 0 0 0 0 1 0 300 
-1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 160 
-1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 230 
-0 1 0 1 1 0 0 0 1 0 0 0 0 0 0 1 0 200 
-1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 280 
-1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 260 
-0 1 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 300 
-0 1 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 400 
-0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 500 
-0 1 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 400 
-0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 500 
-0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 600 
-0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 620 
-0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 600 
-0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 600 
-0 1 0 1 1 0 0 0 1 0 1 0 0 0 0 0 1 20 
-0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 100 
-0 1 0 1 0 0 0 0 1 0 1 0 0 0 1 1 0 300 
-0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 500 
-0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 660 
-0 0 0 0 0 1 1 0 1 0 1 0 0 0 0 0 0 360 
-0 1 0 1 1 0 0 1 1 0 1 0 0 0 0 0 0 360 
-0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 100 
-0 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 1 100 
-1 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 100 
-1 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 230 
-0 1 0 0 0 0 0 0 1 0 0 0 0 1 1 0 0 300 
-0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 220 
-0 1 0 1 1 0 0 0 1 0 0 0 0 0 0 0 0 280 
-0 0 0 0 0 0 0 1 0 0 1 0 0 1 0 0 0 230 
-1 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 220 
-1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 135 
-1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 280 
-1 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 140 
-1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 150 
-0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 100 
-0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 600 
-0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 600 
-0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 480 
-0 1 0 1 1 1 0 0 1 0 1 0 0 1 0 0 0 300 
-0 1 0 1 0 1 0 0 0 0 1 0 0 0 0 0 0 200 
-0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 245 
-0 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 245 
-0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 260 
-0 0 0 0 0 1 1 0 0 0 1 0 0 0 0 0 0 280 
-1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 260 
-0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 320 
-0 1 0 1 0 0 0 0 1 0 1 0 0 0 0 0 0 300 
-0 1 0 1 0 0 0 0 1 0 1 0 0 0 1 1 0 180 
-0 1 0 0 1 1 0 1 0 0 1 0 0 0 0 0 0 220 
-0 1 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 170 
-0 1 0 1 0 0 0 0 0 0 1 0 0 0 0 1 0 200 
-0 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 180 
-0 1 0 1 0 1 0 1 0 0 1 0 0 0 0 0 0 150 
-0 1 0 1 0 0 0 0 1 0 1 0 0 0 0 0 0 160 
-0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 210 
-1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 300 
-0 1 0 1 0 1 0 0 1 0 1 0 0 0 0 0 0 320 
-0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 70 
-0 0 0 1 1 1 1 0 0 0 1 1 0 0 0 0 0 190 
-0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 370 
-0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 420 
-0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 400 
-0 0 0 0 1 1 0 0 0 0 1 0 0 1 0 0 0 340 
-0 1 0 1 0 1 0 0 0 0 1 0 0 0 0 0 0 380 
-0 1 0 1 1 0 0 1 1 0 1 0 0 0 0 0 0 440 
-0 1 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 500 
-0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 500 
-0 0 0 0 0 1 1 0 0 0 1 0 0 0 0 0 0 180 
-0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 1 0 300 
-0 1 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 400 
-0 1 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 200 
-0 0 0 1 0 1 0 0 0 0 0 1 0 0 0 0 0 110 
-0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 180 
-0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 300 
-0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 300 
-0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 320 
-0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 130 
-0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 110 
-0 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 0 90 
-0 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 0 120 
-0 1 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 300 
-0 0 0 1 0 0 0 0 0 0 1 1 0 0 0 0 0 180 
-0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 190 
-0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 240 
-0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 20 
-0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 
-0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 20 
-0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 8 
-0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 15 
-0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 1 20 
-0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 20 
-0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 8 
-0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 1 20 
-0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 10 
-0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 20 
-0 1 1 0 0 0 0 0 0 0 0 1 0 1 0 0 1 35 
-0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 8 
-0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 20 
-0 1 1 0 0 0 0 0 0 0 0 1 0 0 0 0 1 20 
-0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 1 45 
-0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 5 
-0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
-0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 1 10 
-0 0 0 0 0 1 1 0 0 0 1 1 0 0 0 0 0 40 
diff --git a/data/hunua.txt.gz b/data/hunua.txt.gz
new file mode 100644
index 0000000..84c7377
Binary files /dev/null and b/data/hunua.txt.gz differ
diff --git a/data/huse.rda b/data/huse.rda
new file mode 100644
index 0000000..f0e461c
Binary files /dev/null and b/data/huse.rda differ
diff --git a/data/leukemia.R b/data/leukemia.R
deleted file mode 100644
index 091b145..0000000
--- a/data/leukemia.R
+++ /dev/null
@@ -1,10 +0,0 @@
-`leukemia` <-
-structure(list(time = c(9, 13, 13, 18, 23, 28, 31, 34, 45, 48, 
-161, 5, 5, 8, 8, 12, 16, 23, 27, 30, 33, 43, 45), status = c(1, 
-1, 0, 1, 1, 0, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 
-1), x = structure(c(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2), .Label = c("Maintained", 
-"Nonmaintained"), class = "factor")), .Names = c("time", "status", 
-"x"), row.names = c("1", "2", "3", "4", "5", "6", "7", "8", "9", 
-"10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", 
-"21", "22", "23"), class = "data.frame")
diff --git a/data/leukemia.rda b/data/leukemia.rda
new file mode 100644
index 0000000..cc0b3b3
Binary files /dev/null and b/data/leukemia.rda differ
diff --git a/data/lirat.txt b/data/lirat.txt
deleted file mode 100644
index d27b396..0000000
--- a/data/lirat.txt
+++ /dev/null
@@ -1,59 +0,0 @@
- N  R  hb grp
-10  1  4.1 1
-11  4  3.2 1
-12  9  4.7 1
- 4  4  3.5 1
-10 10  3.2 1
-11  9  5.9 1
- 9  9  4.7 1
-11 11  4.7 1
-10 10  3.5 1
-10  7  4.8 1
-12 12  4.3 1
-10  9  4.1 1
- 8  8  3.2 1
-11  9  6.3 1
- 6  4  4.3 1
- 9  7  3.1 1
-14 14  3.6 1
-12  7  4.1 1
-11  9  4.8 1
-13  8  4.7 1
-14  5  4.8 1
-10 10  6.7 1
-12 10  5.2 1
-13  8  4.3 1
-10 10  3.9 1
-14  3  6.3 1
-13 13  4.4 1
- 4  3  5.2 1
- 8  8  3.9 1
-13  5  7.7 1
-12 12  5.0 1
-10  1  8.6 2
- 3  1 11.1 2
-13  1  7.2 2
-12  0  8.8 2
-14  4  9.3 2
- 9  2  9.3 2
-13  2  8.5 2
-16  1  9.4 2
-11  0  6.9 2
- 4  0  8.9 2
- 1  0 11.1 2
-12  0  9.0 2
- 8  0 11.2 3
-11  1 11.5 3
-14  0 12.6 3
-14  1  9.5 3
-11  0  9.8 3
- 3  0 16.6 4
-13  0 14.5 4
- 9  2 15.4 4
-17  2 14.5 4
-15  0 14.6 4
- 2  0 16.5 4
-14  1 14.8 4
- 8  0 13.6 4
- 6  0 14.5 4
-17  0 12.4 4
diff --git a/data/lirat.txt.gz b/data/lirat.txt.gz
new file mode 100644
index 0000000..06db27b
Binary files /dev/null and b/data/lirat.txt.gz differ
diff --git a/data/mmt.R b/data/mmt.R
deleted file mode 100644
index 73ebb91..0000000
--- a/data/mmt.R
+++ /dev/null
@@ -1,328 +0,0 @@
-mmt <-
-c(38.1, 32.4, 34.5, 20.7, 21.5, 23.1, 29.7, 36.6, 36.1, 20.6, 
-20.4, 30.1, 38.7, 41.4, 37, 36, 37, 38, 23, 26.7, 27.5, 21.7, 
-22.9, 26.2, 36.5, 41.8, 21.5, 19.2, 25, 28.9, 23.2, 31.5, 36.2, 
-38.2, 26.4, 20.9, 21.5, 30.2, 33.4, 32.6, 22.2, 21.7, 30, 35.7, 
-32.8, 39.3, 25.5, 23, 19.9, 21.3, 20.8, 21.7, 23.8, 29, 23.7, 
-21.3, 28.5, 33.6, 34.6, 34.2, 27, 24.2, 19.9, 19.7, 21.5, 30.6, 
-30, 19, 19.6, 20.6, 23.6, 17.9, 17.3, 21.4, 24.1, 20.9, 30.1, 
-32.6, 21.3, 19.5, 19.9, 21, 25.4, 17.5, 20.4, 26.8, 25.8, 20.9, 
-19.4, 25.8, 26.3, 29.6, 30.3, 23.6, 28.4, 20.7, 24.1, 27.3, 23.2, 
-18.3, 24.6, 27.4, 20.4, 18.1, 25.2, 19.8, 21, 23.7, 19.6, 18.1, 
-20.8, 26, 18.4, 22, 14.4, 19.9, 22.6, 13.7, 15.9, 21.2, 23.7, 
-24, 17.2, 23.2, 25.2, 17.2, 16, 15.6, 13.4, 16, 16.8, 14.6, 19.4, 
-21, 19.5, 18.5, 13.3, 13.7, 14.3, 14.1, 11.4, 13.6, 16.6, 17.6, 
-14.6, 17.2, 14.4, 16.4, 17.3, 17.6, 17.2, 17.7, 14.2, 16.6, 15.7, 
-13.7, 14.7, 13.1, 12.9, 15.4, 11.9, 15.2, 15.3, 16.5, 16.1, 11.7, 
-11.2, 11.5, 10.8, 16.1, 14.8, 13.6, 13.8, 9.7, 10.7, 11, 15.3, 
-15.3, 17, 16, 16.3, 15.7, 14.5, 10.8, 10.5, 13.4, 12.2, 13.2, 
-13, 12.4, 13.1, 9.8, 10.5, 13.4, 11, 13.1, 15, 16.7, 16.1, 18.2, 
-15.7, 17.7, 15.9, 15.1, 15.2, 14.7, 13.3, 14.5, 11.1, 13.1, 13.7, 
-14.6, 12.9, 12.8, 15.2, 14.5, 17.2, 14.5, 14.4, 11, 13.1, 13.6, 
-14.6, 12.7, 13.6, 12.7, 15.5, 17.4, 15.2, 14.2, 17.7, 19.2, 12.5, 
-14.2, 15.3, 15.7, 17, 19, 13.1, 13.2, 13.2, 15.7, 14.1, 15.6, 
-15.5, 15.9, 15.1, 16, 19.4, 21.5, 23.7, 18.7, 23.8, 18, 16.2, 
-18.5, 20.6, 18.3, 22.5, 26.9, 19.4, 15.9, 20.5, 21.2, 19.5, 14.7, 
-17.6, 15.8, 17.7, 14.3, 16.8, 18.6, 21.9, 21.4, 20.8, 14, 17, 
-23, 26.4, 19.6, 22.7, 26.9, 14.7, 15.2, 19.8, 26.9, 20.2, 14.3, 
-14.8, 18.5, 21.7, 21.4, 21.8, 18.2, 15.8, 15.3, 18.5, 19.2, 28.5, 
-32.2, 21.8, 22.1, 20.7, 17, 24.7, 26.2, 29, 21.6, 17.1, 16.9, 
-19.1, 24.7, 25.4, 19.8, 18.2, 16.3, 17, 17.7, 15.5, 14.7, 15.8, 
-19.9, 20.4, 23.3, 20.2, 28.8, 31.2, 17.4, 18.5, 26.8, 34.3, 30.1, 
-20.5, 20.5, 19.8, 27, 21, 33, 22.6, 28.3, 21.1, 19, 17.3, 27, 
-30.2, 24.8, 17.9, 17.9, 20.7, 30.9, 36.2, 21, 20.2, 21.3, 24.2, 
-21, 20.7, 17.8, 19.6, 22.6, 20.5, 24.1, 22.2, 27, 33.6, 26.6, 
-20.6, 24.5, 19.8, 22.6, 29.2, 20.3, 23, 24.4, 38, 40.5, 24.2, 
-20.2, 21.8, 27, 35.2, 25.2, 32.7, 35.9, 38.9, 26.5, 21.8, 37.9, 
-43.3, 19, 19.7, 21.4, 32, 33.3, 22.2, 21.3, 20.8, 22.3, 22.5, 
-21.4, 23, 35.1, 40.3, 39, 21.1, 25.4, 23.6, 28.1, 37, 39.3, 39.4, 
-25.8, 27.7, 23, 24, 26.1, 21.8, 24.2, 22.3, 19.7, 20.8, 17.9, 
-20.1, 20.9, 21.2, 20.4, 29, 34.7, 34, 30.9, 29.6, 26.1, 18.5, 
-21.2, 22.4, 21.4, 30.5, 32, 32.7, 27.4, 18.9, 19.4, 22.2, 30.2, 
-31.8, 31.4, 18.5, 22.2, 27.5, 25.8, 25.2, 19.1, 19.6, 21.4, 20.7, 
-28.3, 23, 16.5, 18.8, 20, 20.6, 19.8, 20.3, 26.6, 21.5, 22.3, 
-26.5, 27.1, 30, 28.2, 17.3, 16.8, 17.5, 19.2, 20.3, 20.6, 23.7, 
-24.3, 26.4, 16, 14.5, 14.2, 16.5, 15.7, 16, 16.7, 19.8, 22.5, 
-22.9, 18.8, 15.7, 14.7, 15.3, 15.3, 18, 15.1, 15.1, 13.6, 15.3, 
-18, 18.6, 22, 22.1, 17.8, 15.2, 11.3, 13.5, 16.1, 16, 16.5, 16.7, 
-19.6, 19.5, 18, 18.4, 12.9, 14.9, 12.4, 11.9, 11.7, 12.9, 12.9, 
-12.4, 12.5, 15.7, 15.9, 14.3, 16.9, 14, 13.6, 13.7, 16, 13.1, 
-13.8, 13.4, 11.3, 10.6, 13.9, 12.7, 12.5, 11.3, 11.6, 14, 13.7, 
-15.2, 14, 11.4, 14.2, 15.2, 12.6, 10.2, 13.9, 13.7, 13.6, 13.2, 
-15.4, 12.9, 11.9, 13.3, 13.3, 10.5, 10, 11, 8.3, 10.7, 11.2, 
-11.7, 14.2, 14.5, 16, 16.7, 14.4, 17, 14.6, 11.6, 12.8, 14, 17.1, 
-15.4, 15.5, 15.1, 16.9, 14.2, 15.9, 18.2, 19.5, 19.5, 19.8, 15.6, 
-14.1, 17, 14.3, 13.1, 13.7, 18.2, 19.8, 22.3, 17.8, 15, 22.6, 
-23.7, 15.8, 15, 23.5, 25.7, 26.5, 15.1, 13.9, 20.5, 21.4, 14.9, 
-15, 18.9, 11.7, 15.5, 17.7, 11, 14.9, 13.1, 13.7, 15.4, 15.6, 
-23.9, 23.7, 24.3, 15.9, 13.5, 15.3, 19.3, 20.5, 22.5, 23.2, 16.3, 
-14.8, 13.7, 18.4, 12.3, 13.3, 16.2, 25.6, 24.1, 13.8, 15.9, 21.2, 
-21.7, 15.6, 13.5, 15, 21.2, 25.4, 19, 15, 16.4, 15.6, 13.7, 22, 
-17.4, 15.1, 14.6, 16.9, 15.9, 21.3, 29.7, 33, 22.7, 21.6, 30.3, 
-19, 14.6, 15.9, 20.4, 29.3, 33.7, 35.2, 38.1, 24.5, 26.3, 25, 
-17.9, 18.1, 23.3, 31.2, 32.8, 28, 19.7, 22.1, 16.3, 20.1, 21.7, 
-19.6, 30.8, 36.8, 38.1, 17.6, 21.2, 17.2, 20.7, 26.1, 34.5, 18.6, 
-20.1, 22.4, 19.1, 19.2, 28, 17.9, 18.1, 16, 18.5, 20.6, 33, 35.2, 
-24, 26, 28, 23, 19, 19.1, 18, 19.4, 32.5, 32.6, 18.1, 19.7, 28, 
-28, 23.8, 31.4, 22, 35.8, 23, 18.9, 25.4, 28, 19.2, 21.5, 28.8, 
-37.3, 24.6, 21.3, 17.9, 17.5, 18.7, 18.1, 19.7, 22.1, 19.6, 18, 
-19.9, 28.5, 23, 37, 19, 19.4, 35, 27.7, 23.9, 25.6, 27.7, 24.3, 
-38.6, 41.2, 22, 22.5, 22.3, 25.5, 36.6, 35.7, 43.2, 28, 25.5, 
-21.6, 21.8, 23.3, 34.3, 31.2, 43, 20.2, 20.3, 22.2, 24, 34.4, 
-32.9, 21.6, 26.5, 33.2, 38.6, 24.4, 28.3, 35.2, 28.7, 35.6, 37.2, 
-25.5, 31.5, 30.2, 29, 21.4, 28.5, 32.1, 23.5, 20, 21, 20, 21.8, 
-24.3, 30.9, 21.6, 22.2, 20.2, 20.5, 17.6, 18.6, 17.7, 18, 18.6, 
-18.6, 25.9, 19.8, 18.7, 17.9, 17.3, 18.1, 14.6, 14.1, 15.7, 16, 
-21.6, 21.4, 23.8, 21.7, 16.6, 16.7, 18.1, 14.5, 14.7, 16.4, 16.5, 
-22.7, 23.8, 24.6, 23.6, 19.8, 19.8, 18, 17.6, 19, 17.5, 17, 19.9, 
-18.5, 18.7, 17.8, 17, 17.6, 18.7, 17, 18.8, 17.5, 19.5, 16.6, 
-19.1, 21.2, 20.2, 17.9, 14.3, 16, 17.7, 18.6, 19.1, 13.7, 17.5, 
-16.1, 15.2, 17.3, 14.9, 18.4, 17.2, 12.2, 13.9, 14, 15.3, 15, 
-15.1, 16.6, 16.5, 16.1, 13.5, 13, 13.6, 11.8, 14.5, 14, 14.1, 
-13.5, 12.1, 11.9, 11.9, 14.2, 14, 17.9, 19.1, 15.1, 13.8, 13.7, 
-10, 10.3, 10.4, 12, 8.5, 14.4, 13.1, 14, 11.8, 13.9, 12.9, 11, 
-11.8, 10.7, 11.2, 10.3, 12.2, 12.4, 14.7, 15.1, 15, 14, 15.2, 
-14.2, 8.7, 11, 14.2, 15.2, 12.2, 13, 14.7, 17.2, 13.7, 14.8, 
-13.8, 13.7, 13.1, 12.7, 12.3, 12.4, 13, 13.5, 13.5, 14.7, 13.4, 
-15.9, 16, 15.3, 15.5, 18.2, 18.6, 18.5, 19.2, 14.2, 12.8, 13.1, 
-15.4, 17.3, 14.5, 19.5, 20.2, 16.3, 13, 13.3, 13.3, 19, 16.8, 
-19.2, 18.5, 19, 17.4, 15.3, 15.8, 18.7, 17.8, 16.5, 15.3, 13.2, 
-12, 14, 9.5, 13, 17.6, 19.6, 17.2, 17.3, 17, 16.3, 17.3, 20.3, 
-16.9, 13.5, 13.3, 20.7, 19.8, 20.8, 19.8, 19.5, 23.4, 14.2, 14.2, 
-16.6, 17, 15.6, 14.8, 17.2, 20.2, 16.7, 18.2, 18.1, 22.5, 23.4, 
-15.3, 13.7, 15.6, 18.9, 15.1, 16.6, 17.7, 23, 16.8, 21.3, 17.9, 
-23.6, 25.3, 14.5, 16.9, 16.3, 17.7, 18, 21.7, 22.3, 15.5, 16.7, 
-24.3, 23.5, 27.7, 18, 15.6, 19, 19.5, 20.1, 31.3, 15.6, 12.8, 
-13.8, 15.8, 16.4, 17.6, 28.2, 25.5, 22.7, 28, 17, 22.6, 24.5, 
-25.6, 27.5, 18.5, 18.2, 18.8, 17.8, 18.9, 24, 20.9, 16.8, 18.5, 
-20.6, 24.9, 28.1, 25.7, 19.2, 32.7, 21.3, 20.4, 20.5, 22.8, 35.3, 
-38.7, 21.4, 23.3, 22, 31.7, 23.4, 19.1, 19.5, 30, 32.4, 33.6, 
-30, 27.7, 28.1, 23.7, 20.6, 32.3, 31.2, 21.5, 23, 21.9, 23, 21.6, 
-27.2, 29.2, 32, 22.5, 23.9, 19.7, 19.5, 22, 22.1, 19.7, 19.4, 
-30.5, 28.5, 20.2, 19, 20.2, 22.6, 28.4, 18.6, 20.3, 19, 26.2, 
-30, 24.2, 23.4, 34.7, 20.4, 20.7, 20, 19.5, 31.6, 33.7, 23.5, 
-24.6, 33.9, 22.4, 24.3, 29.5, 31.7, 32.9, 20.5, 28.5, 27.3, 19.5, 
-21.4, 33.2, 35, 18.1, 17.2, 18.1, 19.5, 21.5, 29.2, 33.8, 20.8, 
-17.5, 21, 27.4, 21.2, 27.1, 22.8, 18.7, 19, 19.7, 28.7, 25.5, 
-18.4, 18.5, 23.6, 26.9, 28, 24.7, 21.5, 17.5, 16.1, 18.7, 24.5, 
-27.6, 17.4, 18.2, 19.7, 18.5, 17.7, 20.7, 21.2, 17.2, 21.5, 22, 
-23.2, 25.4, 24.6, 24.8, 25, 25, 18.2, 21.5, 16.2, 17.3, 15.5, 
-16.4, 19.6, 18.5, 16.5, 16, 17.7, 19.2, 16.8, 16.5, 22.5, 22.7, 
-23.5, 19, 15.5, 13.5, 14, 14.7, 15.6, 17, 18, 19.6, 17.1, 16.7, 
-16.9, 18.2, 19.4, 22, 21.7, 22, 22.2, 20, 16.5, 15.6, 15, 16.6, 
-18.7, 18.7, 18.1, 15.6, 20.1, 20.3, 15.2, 17.1, 16.3, 18.3, 18.3, 
-19, 20, 15.7, 14.9, 13.1, 13.6, 13.8, 15, 16.9, 18.3, 16.4, 14, 
-12.5, 12.8, 12.2, 14.2, 14.2, 15.5, 15.1, 14.4, 12.9, 10.8, 11.7, 
-13.3, 12.4, 13.4, 10.6, 7, 12.6, 13.2, 12.1, 10.3, 15.7, 11.7, 
-15.1, 15.8, 15, 11.6, 11.4, 10, 14.7, 13.6, 13.2, 11, 13, 12, 
-10.6, 13.3, 14.5, 13.5, 15.9, 12.8, 11.7, 13, 14, 16, 17, 16.3, 
-17.6, 19.5, 14, 17.5, 19.2, 18.5, 15.1, 15.4, 13.3, 13.1, 12.8, 
-12, 13.3, 12.9, 15.4, 13.4, 15.1, 14.7, 14.9, 16.8, 15.8, 17, 
-14.1, 16.5, 12.4, 12.7, 14.6, 17.6, 19.6, 17.3, 17.9, 17.8, 13, 
-13.2, 17.1, 19.6, 16.3, 16.9, 22.2, 12, 14.2, 16.8, 16.9, 22, 
-16.4, 14.2, 11.8, 15.2, 12.6, 13.2, 14.4, 15, 16.5, 13.3, 14.5, 
-16.7, 13.8, 12.4, 13.7, 19.9, 24, 18.7, 18.9, 20.2, 19.9, 24, 
-27.3, 24.2, 18, 21.3, 26.6, 18.5, 18.2, 21, 12, 12.2, 14.1, 16.5, 
-15.5, 15, 20.8, 27.3, 28.4, 18.9, 18.2, 25.5, 15.9, 15.5, 21.4, 
-23.2, 26.8, 23.9, 19.1, 15.2, 14.9, 21.3, 25.4, 28.7, 32.3, 25.7, 
-19, 19.4, 15, 16.5, 16.3, 28.9, 27.4, 32.9, 27, 23.7, 22.8, 16.5, 
-14, 18, 28.2, 32.8, 28, 22.2, 21.8, 18.7, 25.5, 27.6, 16.5, 15.9, 
-16.8, 17.9, 23.1, 22.8, 24.2, 27.7, 21.3, 23.5, 17.9, 24.2, 20, 
-23.7, 27, 24.6, 25, 20, 22.7, 22.6, 29.2, 27.8, 26.5, 18.9, 23.2, 
-24.2, 28.1, 30.3, 25.6, 20.7, 19.6, 21.7, 28, 21.3, 21.4, 21.4, 
-22.6, 21.7, 21.8, 19.8, 30.4, 36, 42.2, 21.1, 20, 18.4, 19.1, 
-19.3, 18.8, 22.8, 20, 21.9, 20.1, 23.2, 34.5, 22.1, 21.6, 30, 
-34, 22.2, 19.6, 25.4, 37.1, 30.2, 29.1, 21.1, 19.1, 22.2, 24.4, 
-20.3, 28, 32.2, 23.4, 21.4, 33.5, 18.6, 19.2, 21.1, 29.5, 25.7, 
-32.4, 28.5, 20.6, 25.2, 20.8, 17.5, 20.1, 22.4, 24, 21, 26.8, 
-17.7, 19.2, 19.1, 26.4, 29.7, 30.2, 33, 33.3, 33, 36.1, 34, 34.7, 
-20.4, 19.4, 21.3, 26.8, 28.5, 25.6, 28.6, 32.5, 18.7, 23.2, 23.7, 
-27.2, 23.5, 19, 22.6, 30.1, 23.3, 19.7, 22.3, 21.6, 23.5, 22.6, 
-24, 22.9, 22.4, 28.8, 30, 32.4, 33.8, 26.8, 18.6, 17, 15.3, 15.3, 
-16.8, 16, 16.6, 17.2, 21.5, 19.7, 19.8, 21.2, 23.7, 23.9, 25.6, 
-24.7, 20.2, 23.5, 22.2, 24.5, 25.5, 18.8, 18, 14.9, 18.3, 19.2, 
-18.9, 19.2, 21.5, 18, 13.1, 14.9, 15.2, 13.5, 15.2, 14.2, 14.6, 
-16, 15.1, 15.6, 17.5, 18.8, 20.4, 20.3, 19.1, 14.9, 14.6, 13.7, 
-13, 13.4, 12.7, 14.2, 13.7, 12.7, 14.1, 12.8, 17.1, 14, 14.5, 
-15.7, 14.1, 13.7, 13.3, 13.4, 11.9, 13.6, 13.3, 12.2, 10.8, 13, 
-14.1, 14.4, 13.3, 15.7, 15.6, 19.3, 16.3, 19.4, 17.7, 16.9, 14.4, 
-14.3, 13, 12.3, 12.8, 12.7, 10.8, 14.6, 13.3, 12.7, 12.9, 15.7, 
-11.4, 12, 12.2, 11.8, 13.1, 15.5, 11.3, 12, 12.8, 11.6, 12.4, 
-12.6, 17.4, 13.4, 11.3, 12.1, 12.7, 12.5, 13.2, 17.1, 15.9, 15, 
-13.2, 12.6, 11.8, 12, 14, 13.7, 16.1, 19.8, 15.7, 13.2, 13.6, 
-13.5, 11.7, 11.4, 15.4, 17.4, 15.3, 16.7, 16.5, 15.3, 18.8, 15.3, 
-15.6, 18.7, 17.4, 12.6, 12.9, 13.5, 13.6, 13.7, 15.1, 14.3, 21.3, 
-21.5, 23.2, 15.3, 19.1, 15.3, 14.8, 15.6, 14.6, 14.7, 13.7, 13.6, 
-13.5, 14.6, 15.6, 20.7, 25.1, 19.7, 12.5, 14.1, 13.3, 14.7, 20.5, 
-21.8, 16.2, 25.8, 26.6, 19.4, 21.1, 20.2, 20.9, 18.1, 26.3, 19.2, 
-16.1, 17.9, 21.1, 25.7, 23.7, 19.7, 16.8, 14.3, 14.2, 20.5, 22.2, 
-15.4, 17.2, 18, 20.5, 23.8, 24.1, 25.8, 19.4, 18.3, 22.3, 17.4, 
-20.2, 27.5, 23.9, 22.8, 22.7, 21.5, 21.9, 30.3, 17.7, 26.8, 28.3, 
-24.2, 18.2, 21.8, 17.8, 16.1, 18.7, 17.1, 15.7, 20.8, 26.2, 26.2, 
-21.3, 20.5, 20.7, 19.9, 19.1, 21.7, 25.6, 23.4, 26.6, 23.5, 25, 
-25.8, 28.1, 27.8, 23.2, 21, 21.1, 18.3, 19.6, 22.2, 30.6, 23.1, 
-18.4, 22.4, 30.9, 25.2, 21.4, 20.4, 18.7, 22, 26.6, 20.4, 18.5, 
-22.5, 32.7, 27.8, 19, 21, 18.5, 22.2, 23.3, 19.8, 24.7, 32.4, 
-20, 18.2, 20.4, 25.5, 24.4, 21.5, 32.4, 27.2, 19.1, 19.7, 21.3, 
-20.3, 21, 22.6, 21.5, 24.2, 25, 20.6, 19.6, 20, 29.5, 35.5, 21.1, 
-23.7, 33.7, 21.8, 21.2, 23.7, 26.4, 21.8, 31.1, 38.3, 22.7, 21.5, 
-20.8, 30, 34.5, 36.5, 28.9, 27.2, 25.5, 22.3, 21.8, 22.4, 19.7, 
-19.4, 18.5, 24, 25.8, 25.5, 26.6, 34.5, 21.1, 20.4, 24.9, 21.9, 
-25.5, 38, 36.4, 19, 18.4, 17.7, 21.3, 25.7, 30.5, 32.6, 23, 20.5, 
-21.8, 26.4, 25.8, 36.7, 27.2, 27.7, 20.4, 18.8, 22.6, 32.7, 22.8, 
-24.4, 32.6, 29.1, 18.3, 19.6, 28.6, 26.8, 30.7, 16.8, 16.1, 18.2, 
-19.3, 19.8, 26.8, 17.5, 18.2, 24.9, 27.3, 24.8, 18, 16.8, 14.6, 
-18.7, 18.8, 19.5, 21.1, 20, 18.5, 17, 16.2, 16.7, 14.9, 15.5, 
-15.3, 15.7, 17.3, 17.1, 16.2, 15.4, 15, 19, 19.7, 19.7, 15.1, 
-16.4, 21.7, 19.5, 17.2, 16.4, 18, 19.5, 16.2, 16, 14.4, 15.4, 
-18.2, 13.8, 16.1, 13.7, 16.8, 15.9, 16.7, 14.6, 15.2, 14, 14.1, 
-16, 16.7, 15.2, 13.3, 14, 15.9, 14.5, 14.2, 13, 13.7, 14.7, 14.6, 
-13.9, 14.2, 16.8, 14.7, 12.1, 10.2, 10.8, 11.9, 11.8, 12, 12.7, 
-13.6, 13, 13.1, 11.1, 12.8, 13.3, 11.7, 14.3, 15.4, 14.2, 13, 
-13.1, 12.4, 11.2, 9.2, 12.4, 12.7, 13.7, 12.7, 15, 16.4, 14, 
-13.2, 13.6, 15.4, 13.8, 15, 14.5, 14.8, 14, 8.2, 10, 11.2, 13.3, 
-13.7, 15, 12.5, 15.3, 16.4, 17.6, 15, 14.8, 13.8, 14.8, 16.6, 
-17.3, 12.2, 12.1, 13.9, 16.8, 16.8, 14.5, 15.1, 13.8, 13, 14.5, 
-18, 20.2, 21, 16.5, 12.2, 15, 15.7, 17.7, 18.9, 14.9, 11.4, 15.4, 
-15.2, 17.6, 17.2, 21.6, 18.7, 13.9, 13.3, 14.6, 16.5, 17.7, 13.6, 
-15.2, 15.5, 16.5, 18.8, 13.6, 14, 13.8, 16, 19.3, 16.9, 14.3, 
-16.7, 21.3, 19.4, 18.7, 14.7, 16.2, 15.5, 23.4, 22, 16.7, 14.4, 
-16.4, 19.6, 18.3, 14.4, 14.8, 17.1, 15.2, 19.5, 21.1, 21.7, 14.6, 
-18.2, 17.8, 23.5, 20.8, 15.7, 16.1, 21, 15, 16, 16, 14.8, 14.6, 
-16.1, 21.6, 23.8, 27, 20.7, 19.7, 20, 28.8, 30, 33.1, 18.9, 16.3, 
-19, 18.3, 21.2, 16.5, 16.7, 19.5, 29.1, 19.7, 22.6, 20.7, 14, 
-15.5, 14.8, 19.2, 27.4, 18.5, 18.5, 31.5, 16.7, 15.7, 16.7, 22, 
-25.7, 29.2, 27.7, 29.4, 19.9, 27.8, 31.2, 22.8, 17.6, 19.4, 27.5, 
-18.4, 17.3, 17.5, 17.3, 21.9, 21.1, 17.9, 19.6, 23.6, 18.2, 20, 
-17.5, 18.9, 18.7, 28.9, 21.6, 20.7, 21.8, 21.9, 35, 26, 20, 33.6, 
-20.1, 23.5, 23.6, 24.5, 27, 17, 18.9, 21.8, 27.5, 22.8, 26.5, 
-22.7, 22.5, 37.8, 22, 27.6, 21.2, 22.6, 18.7, 17.5, 17.7, 30.3, 
-25.6, 32.7, 22.9, 21, 22.5, 25.7, 37.8, 21.3, 38.7, 21.5, 18.8, 
-21.7, 30.6, 40, 20.8, 23.7, 22, 20.5, 23.3, 34.2, 36.7, 21.3, 
-28.7, 27.6, 28.8, 37, 21.7, 22.7, 18.5, 25.4, 28.7, 18.4, 24.3, 
-33, 16.5, 18, 22.1, 24.3, 24.7, 30.1, 22.7, 22.9, 16.4, 16.2, 
-19, 27, 21.7, 16.7, 17.7, 21.6, 33.8, 31.8, 32, 17.6, 20.2, 17.3, 
-17, 15.6, 17.1, 21.9, 20.1, 29.7, 20.7, 16.5, 15.8, 17.4, 19.4, 
-21.1, 19.9, 28.6, 29.7, 29.7, 19.9, 17.4, 18.6, 23, 25.1, 26.6, 
-19, 21.2, 16.5, 17.5, 18.2, 24, 22.8, 15.1, 16.1, 15.8, 17, 19.7, 
-24.9, 26.9, 27.9, 18.5, 17, 16.4, 20.8, 16.7, 15.8, 18.5, 16.5, 
-16.6, 17.4, 21.7, 22.7, 23.3, 22.5, 21.9, 17.9, 20.1, 16, 16.6, 
-15.6, 15.2, 14.3, 15, 14.5, 16.9, 18.3, 18, 13.5, 13.7, 10.9, 
-13.6, 15.2, 14.1, 13.2, 13.8, 14.6, 16.2, 14.5, 14.3, 15.6, 15.9, 
-19.3, 16, 20.3, 15.8, 16.2, 12.8, 15, 13.4, 13.2, 13.8, 15.7, 
-16.2, 14.9, 18.3, 15.3, 15.2, 14.2, 12, 13.7, 13.8, 12.3, 12.8, 
-13.1, 14.5, 14, 13.3, 15.7, 16, 16.2, 18, 16.3, 15.8, 13.3, 13.7, 
-11.5, 13.7, 12.3, 12.6, 12.7, 14.8, 14.9, 12, 12.8, 12.4, 13, 
-13.1, 12.9, 13.8, 15.2, 13.1, 11.1, 10.8, 13.1, 15, 15.7, 16.4, 
-14.1, 15.5, 14.8, 13.9, 15.4, 14.8, 10.9, 12.9, 12.8, 18.6, 14.6, 
-18, 18.5, 11.8, 13.3, 14.5, 14, 13.3, 15, 18.4, 13.6, 15.3, 16.1, 
-19, 15.5, 16.2, 14.9, 17.9, 10.1, 12.1, 13.1, 12.9, 15.4, 15.6, 
-14, 14.2, 17.4, 14, 13.6, 15.7, 14, 15, 16.4, 15.1, 17.1, 18.9, 
-23.8, 25.9, 15, 17, 19, 26.5, 26.9, 23.7, 30.7, 29.6, 25.9, 20.2, 
-14.8, 13.9, 15.7, 22.8, 18.7, 17, 19, 14.1, 17.6, 19, 15.8, 12.9, 
-14.5, 15.9, 21.9, 24.1, 19.4, 15.4, 17.6, 20.5, 19.4, 18, 16.8, 
-15.8, 16, 22.1, 26.8, 26.3, 17.5, 19, 30.3, 32.7, 35, 36.1, 18.1, 
-18.1, 16.8, 18.6, 20.5, 27.8, 18.8, 16.8, 17.2, 19.6, 18.8, 18.5, 
-19.8, 30.5, 28.3, 32.6, 30.1, 19.8, 19.9, 23.8, 24.3, 17.4, 18.2, 
-18.4, 16.9, 24, 32.8, 18.9, 15.5, 16, 16.6, 20.8, 19.6, 18.5, 
-17.6, 20.8, 21.5, 25, 21.2, 22.6, 25.6, 25.1, 32.5, 27.8, 21.5, 
-20.7, 19.9, 18.4, 22.3, 24.6, 25.6, 19, 18.7, 29.2, 31.8, 18.4, 
-19.2, 30.8, 32.2, 22, 21.4, 20, 20.6, 22.2, 30, 40.4, 26.3, 39, 
-30.6, 39.2, 37.8, 28.8, 30.8, 38.7, 25.2, 20.6, 21, 25.6, 36.2, 
-24.9, 26.2, 20, 19.7, 20.3, 25.1, 29.1, 37.5, 39.2, 33.7, 19.5, 
-19.9, 21, 20.3, 22.6, 32.9, 21.3, 19.5, 19.2, 22, 27.2, 32.2, 
-25.4, 25, 25.2, 26.7, 25.3, 29.9, 27.6, 20.6, 21, 21.6, 24, 23.8, 
-21.9, 29.4, 37.4, 21.5, 21.1, 21, 36.3, 28.7, 19.4, 20.3, 20.8, 
-30.5, 30.3, 23.4, 25.7, 15.7, 19.3, 18.8, 17, 17.6, 18.5, 21, 
-26.9, 30.6, 32.7, 29.2, 25.8, 28.2, 24.7, 30.6, 30.6, 29, 26.5, 
-25.5, 24.9, 20.9, 23.4, 18.1, 20.7, 20.3, 21.1, 19.5, 20.4, 17.3, 
-18.5, 21, 23.5, 25.7, 23.1, 24.8, 22.4, 17.4, 18.3, 26, 25.5, 
-21.8, 21.2, 25.2, 21.7, 22.6, 24.3, 17, 20.7, 22.7, 25.4, 24.9, 
-25, 20.5, 20.2, 19.4, 21.4, 25.5, 19.4, 18.8, 17, 15.5, 16.2, 
-16.7, 20.1, 21.4, 16.4, 17.3, 17, 18.2, 17.5, 14.9, 18, 16.7, 
-17.1, 16.8, 17.7, 18.4, 18.5, 15.5, 15.4, 17.5, 16.8, 18.9, 19.4, 
-20.3, 19.3, 17, 16.4, 13.3, 13.6, 14.1, 14.8, 14.1, 17, 16, 16.5, 
-14.9, 14.4, 13.5, 11.3, 15, 13, 14.9, 14.6, 14.1, 15.5, 14.4, 
-12, 17.5, 13.3, 14.3, 14, 13.5, 13.3, 12.3, 12.6, 14.1, 16.6, 
-17.3, 17.1, 16.1, 15, 15.4, 14.6, 14.6, 16.8, 16.5, 15.6, 14.8, 
-15.2, 15.2, 15, 14.1, 15.5, 12.6, 12.9, 15.1, 13, 15.6, 13.4, 
-14.4, 14.5, 15.4, 16.7, 16.1, 16.6, 16.5, 13.8, 13.4, 11.9, 10.7, 
-13.2, 13.1, 12.8, 16.2, 18, 18.9, 18.3, 19.8, 19.3, 16.2, 17.6, 
-17.5, 13.2, 13.2, 13.4, 14.2, 16.1, 14.2, 14.3, 14.5, 17.1, 18.2, 
-22.2, 22.4, 15.6, 16.6, 14.5, 17.7, 21, 14.3, 20, 20.2, 19.2, 
-19.8, 14.8, 14.2, 17.2, 17.2, 22.1, 15.4, 16.1, 14.8, 15.1, 20.2, 
-22.3, 24.6, 18.4, 18.2, 23.4, 23.8, 20.1, 20.5, 19.5, 18.8, 19.8, 
-26.2, 21.2, 21.2, 17.3, 20.5, 19.2, 18, 17.7, 23.7, 16.9, 23.2, 
-22.3, 18.7, 24, 16.4, 18.8, 19, 26.7, 19.3, 19.5, 21.2, 17, 24.4, 
-29, 19.2, 24.6, 23.4, 22.6, 21.1, 29.1, 36.1, 23.1, 16.5, 16.2, 
-21.3, 25.4, 26.4, 21.1, 21.1, 19.7, 31.2, 34.5, 22.9, 13.5, 16.2, 
-15.3, 19.2, 29.4, 27.7, 19.6, 16.8, 19.9, 20.4, 18.3, 16.7, 16.9, 
-18.9, 17.6, 18.6, 21.4, 28.7, 28, 22.8, 17.2, 18.7, 19.9, 23, 
-30.8, 31.7, 20.8, 20.8, 25.2, 31.3, 32.1, 34.3, 33.7, 28.6, 19.2, 
-20.9, 21.1, 26.1, 26.4, 36.8, 26.3, 17.9, 21.3, 19.5, 20.1, 21.7, 
-19.5, 24.8, 30.2, 31.6, 19, 21.3, 20.6, 22.8, 33.2, 24.7, 21.3, 
-17.9, 18.7, 25.3, 31, 33.2, 31, 18.2, 19.1, 22.2, 20.3, 19.8, 
-18.3, 27.5, 29.8, 31, 32.9, 35.5, 36, 36.6, 21.7, 19.8, 26.7, 
-22.9, 19.8, 24.9, 24.8, 28.8, 32.7, 33.7, 24.7, 21.6, 26.2, 33.4, 
-22.9, 31.2, 23.1, 24.4, 30.7, 38.8, 21.5, 20.7, 20.3, 21.3, 30, 
-37.1, 21.1, 22, 34.4, 33.8, 37.8, 38.4, 32.8, 34.4, 26.4, 27.3, 
-28, 30.7, 30.7, 23.4, 26.1, 26.1, 21.8, 18.9, 18.5, 17.5, 21.5, 
-25.1, 21.9, 24.2, 24.2, 27.4, 21.3, 18, 18.7, 20, 20.9, 19.3, 
-19.3, 22.2, 17.7, 21.9, 25.2, 25.1, 28.5, 27.6, 19.6, 18.5, 19.2, 
-20.4, 22.8, 23, 20.3, 18, 18, 20.2, 18.1, 19.2, 17.8, 19.8, 20.3, 
-18.3, 18.3, 20.2, 22, 24.3, 24.7, 25.4, 19.9, 23, 21.8, 19.3, 
-18.5, 20.6, 17.2, 17.5, 19.1, 18, 18.9, 23.4, 19.3, 19.2, 21.2, 
-21.5, 17.2, 16.8, 16, 18.9, 20.6, 15.9, 16.7, 18.4, 16.2, 16.2, 
-15.8, 16.2, 18.3, 18.5, 19.4, 17, 14.6, 11, 12.4, 14, 10.8, 13.1, 
-15, 13, 17.5, 16, 10.2, 13.7, 15.4, 13.6, 12.9, 14.2, 15, 15.2, 
-18.2, 12.3, 13.8, 13.9, 14.6, 14.9, 12.6, 11.2, 12.9, 14.1, 12.8, 
-15.8, 16, 16, 16.6, 16.6, 16, 12.7, 12.3, 11.8, 14.1, 12.6, 12.9, 
-11.5, 12.9, 11.8, 11.9, 14.2, 12, 11.7, 11.8, 13, 11.4, 11, 12.3, 
-13.1, 11.4, 16, 15.3, 13.2, 15.9, 16, 19.6, 15.2, 10.6, 14.8, 
-15.8, 14.1, 14.4, 10.7, 13.2, 13, 13.2, 16, 13.2, 11.8, 11.6, 
-13.4, 15.2, 15.5, 13.5, 14, 18.5, 14.9, 13.9, 15.9, 11.3, 12.2, 
-13.8, 13.8, 11.3, 13, 13.6, 13.2, 16, 17.2, 14.7, 15.5, 15.2, 
-16, 16.6, 17.8, 19.8, 20.6, 19, 19.5, 12.6, 14.3, 14.9, 13.7, 
-14.2, 18.4, 15.4, 18.7, 16.9, 16.5, 20, 17.2, 15.8, 20, 14.3, 
-14.2, 14.7, 22.4, 25.3, 21.5, 15, 13.8, 15.6, 22.8, 18, 16.6, 
-20, 17.5, 18.1, 17.1, 18.4, 18.8, 21.8, 19.7, 26.1, 18.7, 20.8, 
-29.7, 21, 17.3, 16.8, 19.4, 16.8, 21.1, 20.4, 26.1, 15, 17, 24, 
-22.5, 16.3, 17.9, 17.7, 18.4, 25.6, 28.3, 15.1, 16.8, 19.6, 15.8, 
-16.9, 17.8, 18.2, 19.2, 19, 18.4, 22, 16.4, 16.7, 17.4, 20.6, 
-30.4, 30.3, 35.5, 18.8, 24.7, 27.3, 29.4, 32.5, 33.9, 25, 33.6, 
-25.7, 19, 18.4, 22.1, 25.2, 23.9, 28.7, 31.1, 29.1, 25.6, 23.2, 
-19, 17.1, 18, 20, 32.9, 32.1, 25.2, 18.5, 18.9, 20.8, 23.7, 28, 
-35.2, 23.2, 18, 19.8, 31.9, 21.5, 33, 21.6, 31.2, 36.6, 19.6, 
-23.1, 21.9, 21.1, 27.6, 27.3, 30.1, 33.5, 24.2, 21.4, 20.4, 20.3, 
-18.5, 29.5, 25.4, 25.2, 21.6, 21.8, 25.4, 36.6, 36.6, 28.7, 27.2, 
-25.5, 23.6, 25.6, 35.9, 19.1, 15, 20.7, 21.9, 18.2, 21.9, 25.3, 
-29.6, 29.9, 24.4, 20.2, 23.5, 26, 25.9, 27.4, 31.5, 35.8, 23.9, 
-27.8, 26, 31.1, 35.2, 27.8, 21.3, 21.5, 23, 24.4, 27.4, 23.8, 
-25.2, 28.5, 25.3, 25.6, 24.1, 19.3, 22.7, 31.2, 25.8, 21.5, 20.3, 
-18.9, 25.2, 26.8, 19.2, 21.5, 30.8, 18.6, 19.8, 21.3, 21.3, 29.9, 
-32, 32.4, 32.5, 32.6, 31.5, 21, 20.6, 19.7, 19.7, 20.1, 17.8, 
-22.1, 28.8, 26.8, 27.1, 19.4, 19.1, 22.5, 26, 22.2, 28.4, 25.2, 
-20.9, 17.6, 17.2, 17.2, 18.7, 18.6, 21.8, 16.7, 17.9, 20.8, 21.2, 
-17.5, 16.6, 17.5, 18.1, 18.5, 19.8, 23, 21.2, 21.2, 23.1, 20.2, 
-18.1, 16.2, 18.7, 21.2, 19.3, 21.8, 19.9, 13.6, 14.7, 18, 19.3, 
-17.7, 14.6, 14.5, 14.4, 15.4, 14.5, 16.2, 14.2, 13.2, 15.2, 17.4, 
-13.7, 16.8, 17.7, 16.2, 13.2, 16.3, 16.3, 14.6, 13.9, 16, 18.4, 
-19, 17.4, 16.2, 16.3, 16.8, 14.6, 14.2, 13.3, 14, 11.7, 12.9, 
-12.7, 14.6, 15.1, 16.1, 16.2, 13, 12.4, 12.6, 9.7, 11.8, 15.8, 
-13.6, 8.9, 12.2, 13.2, 15.2, 12.6, 12.9, 15.9, 15.4, 15, 14.2, 
-15.7, 14.4, 14.7, 14.5, 15.5, 19.2, 18.2, 13.9, 15, 15.8, 15.7, 
-15.6, 17.7, 18.8, 15.2, 14.5, 13.5, 13.4, 12.4, 15.5, 13.2, 14, 
-14.1, 15.1, 17.2, 15.1, 14.5, 13.6, 13.1, 13.1, 13.3, 14.8, 15, 
-16.4, 15.3, 13.8, 13.5, 12.7, 13.1, 15.8, 16, 14.4, 11.9, 13.2, 
-12, 11.6, 12.1, 17.3, 17, 14.7, 17.8, 13.7, 16.6, 14.5, 13.6, 
-15.8, 16.4, 16.8, 14.6, 15.7, 19.7, 20.7, 18.6, 13.7, 11.9, 14, 
-14.6, 13.4, 16.6, 21, 23.2, 23.9, 17.8, 16.2, 22.1, 24.3, 19, 
-16.5, 17.1, 17.3, 16.8, 21.7, 20.1, 15, 14.8, 19.8, 24, 14, 15.3, 
-14.8, 16.8, 20.8, 12.9, 14.3, 18.9, 22.6, 24.7, 19.6, 20.2, 23.9, 
-15.1, 17.1, 15.3, 16, 16.8, 19.8, 27.2, 29.1, 31.4, 33.2, 33.7, 
-19.6, 31.8, 22.4, 21.4, 22, 21.6, 30.7, 30.2, 32.6, 26.6, 22, 
-16.3, 17.2, 25.5, 32.1, 18.4, 21, 16.8, 15.6, 18.5, 21.5, 28.1, 
-31.4, 20.9, 18.7, 19.9, 21.9, 19.1, 28.5, 26.2, 20.1, 19.9, 22.2, 
-31.4, 24.1, 35.2, 36.9, 33.2, 35.7, 21.1, 21.6, 18.6, 18.8, 18.7, 
-21.6, 22.4, 20.9, 23.3, 34.4, 20.7, 24.2, 22.2, 23.5, 30.3, 19.8, 
-23.3, 29.3, 20.9, 37.6, 23.2, 25.1, 24.4, 24.6)
diff --git a/data/mmt.rda b/data/mmt.rda
new file mode 100644
index 0000000..9ec1dcb
Binary files /dev/null and b/data/mmt.rda differ
diff --git a/data/nzc.txt b/data/nzc.txt
deleted file mode 100644
index e8b94c2..0000000
--- a/data/nzc.txt
+++ /dev/null
@@ -1,27 +0,0 @@
-year   male female       nz
-1867   1213      6   217416
-1871   2637      4   254948
-1878   4814      2   344985
-1881   4995      9   458007
-1886   4527     15   620451
-1891   4426     18   668652
-1896   3773     86   743214
-1901   2885     78   815862
-1906   2515     55   936309
-1911   2542     88  1058313
-1916   2017    130  1149225
-1921   2993    273  1271667
-1926   2927    447  1408140
-1936   2432    511  1573812
-1945   3414   1526  1702329
-1951   3633   2090  1939473
-1956   4026   2705  2174061
-1961   4913   3611  2414985
-1966   5700   4583  2676918
-1971   7025   4583  2862630
-1976   8081   6779  3129384
-1981   8649   8004  3143307
-1986   9903   9600  3263283
-1991  18750  18939  3373926
-1996  39624  42696  3618303
-2001  50460  55020  3737277
diff --git a/data/nzc.txt.gz b/data/nzc.txt.gz
new file mode 100644
index 0000000..dac5491
Binary files /dev/null and b/data/nzc.txt.gz differ
diff --git a/data/nzmarital.R b/data/nzmarital.R
deleted file mode 100644
index c821469..0000000
--- a/data/nzmarital.R
+++ /dev/null
@@ -1,1809 +0,0 @@
-nzmarital <-
-structure(list(age = c(29, 55, 44, 53, 45, 30, 31, 24, 47, 51, 
-35, 35, 39, 33, 30, 47, 29, 43, 31, 56, 32, 46, 33, 44, 33, 45, 
-47, 35, 34, 50, 50, 38, 44, 34, 27, 50, 48, 51, 28, 43, 32, 51, 
-49, 53, 33, 52, 41, 24, 51, 46, 26, 35, 28, 34, 36, 60, 54, 33, 
-40, 52, 41, 64, 27, 44, 47, 46, 35, 39, 48, 46, 40, 40, 37, 31, 
-49, 31, 33, 50, 48, 43, 40, 40, 33, 45, 50, 44, 40, 61, 45, 39, 
-44, 22, 41, 27, 36, 25, 30, 35, 22, 50, 25, 37, 46, 38, 39, 46, 
-23, 54, 29, 43, 58, 53, 29, 57, 31, 29, 36, 46, 51, 56, 59, 41, 
-44, 50, 40, 34, 26, 58, 36, 31, 52, 32, 40, 48, 53, 49, 54, 56, 
-28, 24, 27, 43, 30, 44, 54, 54, 42, 55, 34, 43, 48, 34, 39, 44, 
-52, 37, 33, 21, 34, 56, 29, 47, 31, 28, 42, 48, 44, 53, 37, 42, 
-54, 45, 46, 34, 29, 40, 54, 53, 48, 52, 25, 43, 48, 51, 53, 32, 
-30, 41, 57, 29, 53, 57, 29, 54, 46, 26, 34, 44, 35, 52, 44, 29, 
-50, 57, 25, 54, 35, 31, 48, 25, 50, 31, 37, 48, 39, 41, 52, 59, 
-39, 26, 41, 35, 31, 26, 32, 35, 35, 36, 26, 35, 37, 41, 54, 49, 
-33, 31, 34, 24, 42, 24, 57, 48, 29, 37, 58, 41, 43, 27, 47, 33, 
-56, 25, 49, 41, 42, 32, 31, 45, 41, 30, 41, 42, 59, 46, 51, 26, 
-42, 25, 25, 37, 42, 45, 49, 29, 24, 46, 50, 53, 31, 24, 38, 54, 
-58, 28, 57, 54, 50, 52, 41, 48, 46, 42, 19, 45, 29, 32, 51, 52, 
-40, 28, 40, 51, 43, 34, 58, 52, 56, 57, 56, 46, 31, 44, 35, 26, 
-53, 48, 43, 60, 31, 33, 49, 55, 34, 51, 34, 32, 31, 36, 41, 40, 
-39, 70, 48, 76, 45, 22, 36, 50, 35, 43, 37, 34, 41, 38, 24, 35, 
-41, 51, 29, 44, 56, 34, 40, 31, 37, 37, 31, 60, 37, 58, 60, 36, 
-27, 29, 48, 37, 43, 39, 46, 34, 50, 43, 41, 46, 49, 53, 30, 31, 
-38, 33, 52, 30, 46, 35, 40, 54, 48, 44, 50, 37, 48, 48, 53, 41, 
-46, 34, 35, 33, 51, 28, 53, 44, 30, 37, 48, 30, 38, 22, 20, 26, 
-30, 36, 33, 31, 39, 35, 30, 51, 27, 28, 38, 47, 48, 56, 48, 60, 
-41, 41, 31, 45, 34, 36, 36, 27, 34, 53, 45, 49, 57, 51, 45, 42, 
-40, 27, 27, 47, 41, 29, 38, 50, 34, 45, 42, 48, 46, 42, 45, 47, 
-42, 53, 31, 20, 30, 44, 28, 24, 36, 54, 58, 44, 40, 22, 46, 27, 
-36, 51, 49, 55, 42, 39, 42, 57, 45, 49, 42, 50, 35, 44, 40, 36, 
-54, 22, 46, 53, 19, 39, 48, 22, 23, 39, 23, 51, 50, 46, 42, 44, 
-25, 33, 21, 20, 51, 31, 59, 21, 43, 19, 49, 37, 41, 27, 19, 58, 
-45, 42, 46, 45, 52, 23, 52, 44, 32, 41, 59, 37, 45, 47, 60, 29, 
-39, 49, 52, 47, 48, 52, 29, 28, 45, 51, 38, 44, 46, 25, 31, 37, 
-56, 39, 59, 59, 43, 59, 34, 36, 36, 30, 55, 46, 36, 43, 56, 43, 
-51, 36, 44, 46, 44, 50, 48, 45, 39, 54, 25, 50, 52, 32, 48, 42, 
-55, 59, 55, 49, 32, 23, 64, 60, 52, 39, 46, 55, 47, 38, 28, 57, 
-36, 42, 34, 49, 32, 39, 41, 51, 25, 36, 38, 43, 53, 21, 48, 32, 
-54, 46, 55, 36, 48, 40, 37, 41, 36, 58, 24, 42, 30, 30, 45, 36, 
-45, 49, 42, 28, 47, 46, 43, 33, 51, 34, 40, 27, 23, 41, 50, 23, 
-31, 38, 60, 39, 23, 48, 54, 29, 27, 53, 26, 31, 41, 56, 44, 57, 
-61, 42, 55, 23, 48, 25, 47, 23, 34, 28, 55, 47, 35, 34, 29, 51, 
-49, 24, 50, 41, 47, 40, 58, 30, 53, 30, 57, 33, 47, 20, 35, 62, 
-53, 35, 19, 24, 18, 22, 24, 46, 43, 21, 27, 35, 42, 36, 31, 20, 
-20, 45, 27, 35, 20, 21, 44, 84, 29, 45, 36, 20, 21, 20, 44, 21, 
-34, 29, 28, 43, 38, 32, 20, 18, 28, 24, 43, 24, 55, 42, 35, 69, 
-33, 28, 40, 43, 44, 44, 33, 45, 28, 20, 20, 29, 32, 60, 45, 41, 
-32, 48, 36, 45, 59, 61, 52, 45, 35, 52, 42, 32, 25, 34, 31, 58, 
-64, 30, 41, 62, 49, 35, 31, 42, 37, 32, 46, 41, 37, 29, 43, 38, 
-40, 44, 24, 41, 50, 34, 22, 41, 31, 46, 44, 26, 40, 46, 28, 47, 
-41, 40, 30, 43, 26, 43, 41, 30, 51, 23, 35, 39, 46, 27, 24, 38, 
-58, 33, 35, 55, 50, 45, 34, 42, 26, 24, 28, 32, 38, 48, 32, 44, 
-31, 36, 40, 33, 30, 59, 33, 67, 40, 41, 58, 39, 35, 51, 47, 51, 
-33, 32, 43, 44, 30, 63, 51, 28, 26, 25, 54, 30, 28, 29, 44, 47, 
-57, 45, 29, 32, 45, 44, 20, 29, 19, 43, 56, 24, 31, 26, 51, 32, 
-37, 34, 41, 51, 36, 31, 25, 58, 25, 56, 41, 38, 26, 48, 26, 32, 
-28, 37, 25, 44, 20, 47, 59, 46, 49, 28, 51, 31, 26, 51, 45, 41, 
-51, 43, 33, 46, 29, 33, 46, 53, 50, 23, 36, 42, 51, 36, 26, 29, 
-40, 52, 17, 53, 23, 40, 33, 48, 37, 57, 44, 30, 47, 36, 42, 58, 
-24, 25, 58, 46, 44, 26, 29, 42, 25, 28, 29, 38, 38, 24, 67, 40, 
-33, 23, 42, 33, 48, 33, 26, 44, 55, 23, 28, 51, 23, 20, 25, 30, 
-44, 50, 30, 26, 54, 43, 56, 32, 36, 43, 21, 57, 27, 53, 48, 27, 
-24, 50, 60, 57, 54, 29, 34, 25, 55, 51, 32, 43, 32, 29, 31, 53, 
-21, 52, 41, 23, 39, 30, 28, 33, 26, 40, 51, 46, 23, 50, 39, 48, 
-46, 37, 57, 56, 57, 53, 56, 49, 53, 32, 36, 57, 52, 36, 32, 44, 
-52, 39, 28, 38, 45, 46, 47, 44, 40, 43, 49, 47, 44, 28, 25, 43, 
-29, 37, 27, 44, 39, 31, 34, 20, 34, 22, 31, 32, 30, 56, 30, 20, 
-39, 23, 39, 48, 38, 30, 41, 28, 49, 27, 40, 35, 28, 40, 31, 19, 
-25, 51, 57, 35, 48, 46, 40, 41, 52, 59, 36, 45, 49, 50, 35, 26, 
-47, 23, 42, 26, 26, 37, 58, 39, 47, 23, 36, 28, 52, 40, 39, 42, 
-30, 42, 30, 56, 46, 22, 36, 20, 41, 35, 33, 33, 33, 41, 23, 55, 
-51, 52, 33, 52, 35, 26, 44, 54, 31, 44, 43, 18, 54, 42, 55, 29, 
-33, 52, 30, 31, 43, 41, 26, 54, 29, 43, 39, 40, 59, 27, 57, 53, 
-39, 47, 24, 46, 17, 23, 25, 24, 56, 52, 38, 20, 37, 30, 31, 46, 
-25, 43, 19, 46, 44, 45, 41, 36, 31, 23, 37, 49, 42, 30, 36, 37, 
-28, 20, 43, 60, 56, 26, 64, 61, 53, 44, 40, 40, 52, 49, 36, 35, 
-40, 50, 45, 56, 21, 47, 54, 53, 24, 41, 34, 26, 30, 36, 30, 56, 
-44, 48, 54, 22, 53, 39, 28, 43, 53, 53, 43, 42, 27, 33, 25, 54, 
-47, 37, 44, 47, 40, 44, 33, 26, 24, 30, 56, 43, 62, 45, 24, 34, 
-31, 22, 46, 53, 52, 43, 45, 40, 47, 44, 48, 53, 43, 42, 43, 48, 
-41, 53, 52, 27, 56, 46, 43, 54, 44, 49, 38, 54, 35, 46, 46, 54, 
-46, 32, 36, 28, 51, 54, 41, 57, 35, 47, 34, 56, 36, 47, 58, 44, 
-55, 40, 25, 55, 53, 55, 32, 34, 28, 21, 42, 42, 37, 41, 47, 30, 
-20, 48, 31, 48, 29, 50, 56, 43, 32, 37, 27, 21, 26, 38, 56, 40, 
-43, 60, 28, 27, 41, 39, 56, 46, 27, 46, 44, 25, 53, 38, 76, 56, 
-60, 56, 35, 73, 74, 52, 84, 39, 44, 50, 55, 82, 51, 43, 73, 54, 
-82, 49, 70, 48, 52, 65, 72, 71, 49, 76, 45, 75, 38, 39, 69, 60, 
-68, 82, 53, 40, 48, 63, 44, 78, 73, 71, 42, 65, 53, 68, 77, 68, 
-72, 74, 49, 82, 60, 54, 69, 55, 78, 61, 76, 54, 73, 56, 52, 51, 
-58, 54, 71, 64, 55, 43, 84, 80, 68, 57, 49, 75, 38, 41, 56, 40, 
-61, 58, 61, 46, 47, 60, 64, 73, 50, 72, 53, 43, 58, 52, 64, 75, 
-57, 52, 67, 83, 48, 76, 51, 56, 60, 71, 63, 81, 51, 64, 65, 64, 
-74, 61, 59, 44, 38, 80, 50, 66, 58, 78, 35, 60, 66, 36, 36, 65, 
-53, 56, 82, 77, 48, 50, 36, 42, 75, 75, 35, 71, 44, 43, 35, 39, 
-36, 65, 46, 37, 46, 46, 46, 56, 51, 73, 59, 50, 49, 68, 53, 48, 
-77, 78, 41, 44, 61, 80, 66, 51, 73, 80, 67, 44, 73, 60, 37, 53, 
-70, 65, 37, 53, 79, 81, 82, 71, 43, 42, 69, 76, 58, 68, 42, 38, 
-37, 41, 61, 42, 44, 63, 65, 60, 63, 81, 55, 70, 56, 73, 60, 81, 
-66, 54, 69, 40, 84, 68, 70, 49, 52, 74, 40, 58, 46, 39, 64, 52, 
-58, 56, 75, 78, 74, 79, 64, 45, 51, 40, 53, 40, 44, 58, 78, 41, 
-42, 63, 79, 63, 40, 46, 54, 39, 60, 78, 59, 67, 55, 44, 42, 49, 
-39, 56, 74, 41, 74, 67, 52, 59, 58, 76, 66, 82, 59, 58, 44, 50, 
-77, 55, 68, 73, 68, 46, 45, 45, 62, 75, 40, 85, 78, 61, 80, 46, 
-65, 37, 48, 64, 77, 45, 68, 58, 61, 42, 58, 75, 68, 77, 60, 62, 
-52, 48, 73, 84, 62, 54, 70, 49, 72, 58, 65, 83, 44, 57, 48, 64, 
-58, 70, 44, 59, 42, 44, 76, 38, 62, 37, 58, 40, 49, 54, 38, 85, 
-62, 81, 56, 51, 66, 51, 42, 67, 61, 74, 65, 46, 71, 52, 69, 71, 
-69, 42, 43, 59, 36, 40, 45, 52, 69, 57, 44, 66, 38, 44, 69, 36, 
-61, 42, 67, 61, 66, 73, 83, 85, 67, 76, 52, 67, 69, 78, 77, 81, 
-69, 43, 40, 40, 43, 38, 67, 71, 58, 43, 59, 45, 75, 39, 80, 72, 
-50, 83, 40, 67, 46, 78, 48, 78, 42, 49, 57, 67, 55, 70, 70, 57, 
-78, 61, 53, 60, 48, 37, 70, 42, 70, 38, 71, 47, 73, 83, 81, 40, 
-42, 66, 49, 64, 70, 70, 55, 64, 74, 61, 68, 49, 64, 79, 61, 65, 
-39, 54, 66, 60, 67, 53, 61, 47, 80, 43, 60, 49, 65, 79, 42, 81, 
-46, 41, 69, 46, 56, 58, 35, 42, 41, 68, 44, 50, 36, 61, 62, 51, 
-83, 43, 75, 49, 81, 44, 62, 45, 75, 78, 68, 78, 62, 60, 58, 75, 
-37, 44, 51, 71, 58, 48, 66, 48, 63, 63, 46, 56, 63, 83, 78, 43, 
-81, 57, 45, 70, 68, 65, 43, 78, 71, 55, 83, 67, 78, 68, 50, 63, 
-85, 49, 72, 82, 47, 79, 44, 51, 84, 70, 77, 61, 48, 54, 49, 73, 
-38, 61, 61, 65, 57, 77, 76, 70, 74, 66, 66, 56, 78, 36, 36, 49, 
-50, 62, 80, 85, 54, 54, 76, 51, 68, 52, 56, 48, 78, 80, 64, 75, 
-43, 69, 61, 81, 42, 72, 79, 79, 45, 61, 38, 71, 49, 45, 65, 80, 
-41, 44, 64, 70, 69, 65, 72, 78, 65, 79, 35, 78, 63, 58, 48, 85, 
-36, 55, 53, 67, 73, 77, 39, 51, 71, 44, 58, 61, 65, 65, 66, 36, 
-73, 78, 70, 56, 66, 77, 76, 80, 44, 36, 62, 61, 46, 60, 54, 55, 
-61, 53, 66, 68, 67, 74, 64, 72, 57, 75, 74, 79, 61, 51, 60, 66, 
-61, 44, 52, 73, 60, 36, 70, 49, 78, 61, 64, 74, 41, 62, 70, 78, 
-74, 59, 80, 81, 42, 74, 53, 62, 51, 62, 78, 62, 53, 70, 81, 45, 
-78, 66, 44, 54, 54, 68, 73, 65, 80, 40, 80, 79, 55, 85, 70, 53, 
-50, 69, 67, 76, 59, 62, 64, 70, 59, 67, 40, 55, 57, 67, 83, 73, 
-72, 65, 60, 79, 52, 65, 56, 60, 46, 60, 36, 59, 60, 40, 59, 60, 
-61, 37, 67, 64, 84, 82, 67, 58, 45, 45, 40, 44, 69, 52, 44, 43, 
-67, 46, 38, 61, 37, 76, 79, 77, 64, 67, 56, 60, 75, 39, 48, 56, 
-73, 72, 48, 43, 63, 53, 69, 44, 63, 79, 83, 78, 47, 63, 74, 53, 
-73, 68, 55, 45, 72, 47, 79, 56, 71, 78, 55, 41, 85, 77, 51, 64, 
-52, 49, 62, 70, 81, 50, 62, 70, 73, 65, 52, 57, 56, 63, 42, 55, 
-41, 59, 66, 45, 84, 80, 75, 80, 70, 82, 36, 74, 78, 75, 47, 37, 
-42, 75, 63, 61, 39, 71, 51, 66, 79, 40, 82, 38, 51, 65, 37, 72, 
-72, 72, 80, 62, 81, 47, 72, 72, 76, 51, 58, 40, 58, 59, 60, 59, 
-51, 76, 68, 45, 51, 80, 49, 57, 84, 84, 77, 63, 55, 45, 81, 77, 
-78, 80, 39, 50, 36, 79, 58, 46, 77, 78, 65, 73, 81, 77, 59, 78, 
-40, 78, 77, 76, 73, 74, 77, 56, 43, 76, 78, 64, 51, 82, 64, 77, 
-83, 72, 84, 79, 80, 60, 74, 80, 51, 76, 50, 82, 61, 75, 51, 48, 
-78, 60, 44, 43, 82, 57, 85, 58, 42, 77, 77, 71, 44, 58, 53, 59, 
-59, 48, 43, 45, 74, 60, 56, 59, 63, 37, 64, 49, 49, 78, 54, 55, 
-40, 72, 76, 46, 72, 54, 45, 65, 46, 78, 64, 43, 57, 79, 50, 74, 
-45, 58, 64, 65, 58, 81, 78, 52, 64, 84, 54, 57, 66, 72, 52, 51, 
-57, 46, 58, 78, 40, 52, 60, 79, 83, 78, 64, 46, 36, 57, 73, 81, 
-53, 39, 77, 76, 39, 48, 65, 60, 76, 48, 67, 48, 65, 81, 84, 84, 
-81, 82, 41, 54, 65, 63, 44, 64, 62, 39, 70, 73, 78, 53, 57, 65, 
-48, 49, 60, 55, 58, 56, 69, 58, 54, 63, 65, 47, 67, 52, 81, 79, 
-54, 54, 48, 53, 42, 44, 68, 44, 37, 54, 60, 39, 37, 42, 42, 46, 
-52, 81, 82, 79, 61, 57, 37, 46, 66, 83, 41, 43, 74, 39, 76, 73, 
-77, 75, 68, 78, 39, 73, 85, 73, 74, 73, 39, 74, 79, 81, 83, 75, 
-74, 83, 83, 86, 75, 75, 85, 72, 72, 74, 72, 76, 77, 80, 75, 76, 
-49, 73, 73, 40, 71, 55, 74, 77, 72, 76, 78, 53, 39, 84, 53, 73, 
-37, 50, 53, 74, 44, 54, 73, 51, 74, 72, 78, 75, 36, 75, 49, 54, 
-82, 86, 83, 41, 42, 38, 54, 75, 72, 52, 40, 38, 73, 57, 49, 47, 
-30, 31, 49, 18, 46, 31, 52, 30, 54, 61, 28, 47, 48, 32, 47, 57, 
-43, 53, 60, 39, 34, 60, 61, 51, 28, 30, 58, 49, 42, 26, 35, 18, 
-61, 40, 27, 55, 56, 41, 51, 43, 61, 55, 46, 44, 29, 36, 33, 24, 
-35, 43, 47, 41, 45, 23, 50, 56, 41, 50, 46, 33, 54, 32, 41, 21, 
-50, 51, 59, 60, 45, 46, 50, 53, 52, 60, 55, 38, 49, 44, 59, 55, 
-48, 51, 41, 52, 33, 46, 37, 29, 42, 43, 27, 43, 31, 32, 35, 41, 
-25, 35, 27, 49, 32, 29, 20, 28, 39, 39, 40, 54, 33, 56, 23, 51, 
-24, 55, 49, 42, 45, 57, 56, 47, 29, 19, 48, 45, 51, 32, 54, 47, 
-56, 41, 39, 45, 36, 42, 51, 44, 48, 41, 34, 41, 47, 36, 56, 59, 
-46, 52, 47, 46, 55, 23, 57, 45, 53, 23, 38, 20, 43, 35, 23, 55, 
-41, 44, 40, 35, 47, 54, 35, 49, 48, 40, 35, 57, 43, 47, 52, 28, 
-36, 25, 35, 21, 45, 56, 43, 45, 22, 56, 18, 20, 61, 21, 35, 47, 
-27, 23, 21, 28, 41, 27, 21, 42, 24, 47, 40, 50, 24, 28, 28, 51, 
-59, 57, 51, 31, 35, 54, 53, 33, 38, 72, 49, 60, 25, 36, 23, 29, 
-28, 31, 52, 35, 51, 46, 46, 51, 36, 52, 34, 51, 33, 40, 29, 37, 
-30, 58, 55, 27, 40, 24, 42, 59, 28, 22, 21, 37, 56, 35, 30, 26, 
-27, 31, 54, 20, 35, 34, 51, 35, 37, 50, 51, 60, 36, 23, 46, 60, 
-31, 28, 32, 23, 27, 56, 54, 46, 46, 31, 21, 46, 36, 51, 58, 34, 
-59, 35, 27, 28, 54, 54, 48, 47, 23, 49, 57, 50, 24, 23, 51, 58, 
-26, 49, 19, 51, 29, 23, 50, 59, 49, 60, 26, 25, 36, 47, 24, 36, 
-47, 31, 53, 34, 36, 46, 40, 26, 24, 49, 19, 40, 33, 52, 48, 30, 
-46, 54, 18, 55, 53, 47, 23, 53, 55, 56, 47, 41, 30, 45, 42, 41, 
-46, 35, 51, 53, 18, 49, 52, 45, 26, 42, 43, 25, 18, 45, 55, 43, 
-26, 47, 48, 31, 46, 49, 54, 36, 53, 51, 48, 59, 59, 23, 41, 22, 
-25, 50, 69, 30, 23, 25, 26, 28, 24, 31, 23, 51, 29, 23, 44, 46, 
-50, 25, 43, 33, 48, 39, 38, 37, 51, 35, 40, 49, 44, 41, 42, 31, 
-54, 41, 45, 43, 40, 43, 34, 44, 44, 42, 58, 43, 53, 28, 47, 39, 
-52, 30, 36, 41, 29, 37, 23, 35, 19, 29, 20, 37, 34, 37, 32, 54, 
-33, 47, 46, 35, 27, 46, 21, 29, 37, 34, 37, 22, 46, 21, 26, 30, 
-28, 27, 34, 51, 19, 40, 23, 26, 37, 53, 25, 55, 32, 28, 21, 43, 
-23, 19, 37, 64, 25, 32, 17, 40, 22, 33, 30, 21, 36, 21, 30, 51, 
-21, 27, 31, 28, 30, 37, 55, 45, 54, 57, 60, 50, 41, 54, 27, 48, 
-40, 27, 56, 37, 38, 25, 26, 22, 18, 48, 56, 45, 54, 56, 37, 30, 
-47, 26, 40, 51, 32, 39, 55, 48, 58, 41, 28, 24, 32, 48, 40, 44, 
-40, 52, 51, 34, 34, 49, 57, 33, 53, 36, 29, 27, 28, 51, 23, 40, 
-53, 45, 54, 52, 57, 49, 55, 36, 57, 44, 47, 45, 58, 39, 63, 47, 
-27, 46, 45, 53, 32, 52, 55, 40, 34, 53, 50, 31, 46, 41, 52, 32, 
-43, 52, 58, 19, 36, 57, 47, 54, 31, 39, 42, 32, 28, 39, 48, 27, 
-52, 50, 58, 48, 32, 36, 37, 20, 37, 20, 24, 61, 33, 54, 30, 23, 
-44, 59, 34, 43, 28, 37, 51, 27, 34, 39, 38, 37, 48, 37, 33, 39, 
-46, 47, 34, 46, 26, 30, 30, 47, 62, 39, 50, 51, 35, 42, 42, 49, 
-45, 29, 44, 43, 39, 44, 51, 42, 47, 55, 50, 25, 22, 27, 31, 39, 
-47, 34, 54, 45, 33, 24, 41, 36, 28, 46, 21, 19, 47, 37, 39, 35, 
-53, 41, 54, 51, 46, 57, 27, 58, 35, 43, 34, 37, 27, 33, 49, 27, 
-48, 34, 17, 20, 48, 36, 40, 38, 46, 54, 18, 29, 26, 28, 17, 43, 
-26, 21, 28, 21, 28, 47, 33, 18, 20, 17, 29, 27, 52, 58, 44, 35, 
-24, 42, 39, 63, 30, 23, 30, 42, 35, 49, 33, 36, 45, 58, 38, 38, 
-33, 24, 20, 55, 43, 26, 51, 49, 57, 47, 54, 54, 45, 39, 45, 25, 
-34, 60, 32, 23, 29, 31, 34, 44, 49, 38, 40, 24, 51, 40, 30, 32, 
-50, 44, 43, 24, 22, 33, 37, 43, 39, 55, 37, 35, 44, 36, 31, 44, 
-34, 86, 43, 44, 29, 41, 36, 44, 46, 35, 58, 50, 25, 20, 50, 21, 
-35, 47, 35, 31, 37, 37, 55, 39, 36, 27, 53, 28, 47, 34, 44, 42, 
-19, 34, 45, 41, 39, 41, 38, 40, 41, 55, 58, 40, 36, 52, 42, 57, 
-45, 33, 26, 35, 35, 32, 38, 41, 59, 21, 40, 49, 27, 40, 20, 46, 
-34, 57, 23, 30, 32, 29, 27, 32, 54, 36, 30, 37, 33, 35, 35, 32, 
-38, 27, 34, 34, 35, 30, 29, 20, 19, 39, 24, 51, 24, 45, 47, 45, 
-42, 47, 44, 35, 48, 54, 51, 25, 37, 33, 33, 51, 66, 39, 24, 31, 
-32, 58, 60, 46, 29, 47, 36, 34, 22, 25, 42, 29, 33, 24, 32, 23, 
-22, 23, 36, 36, 35, 21, 20, 20, 29, 38, 26, 36, 30, 20, 59, 40, 
-49, 42, 60, 41, 51, 62, 24, 30, 25, 35, 32, 29, 30, 32, 33, 29, 
-38, 40, 31, 53, 29, 56, 24, 21, 33, 24, 41, 41, 32, 29, 49, 61, 
-47, 60, 61, 57, 49, 54, 50, 34, 51, 51, 46, 46, 50, 50, 32, 58, 
-48, 51, 45, 46, 37, 44, 38, 50, 51, 44, 47, 51, 43, 38, 31, 54, 
-48, 27, 51, 56, 50, 40, 26, 28, 43, 53, 39, 52, 33, 46, 43, 42, 
-29, 30, 25, 51, 55, 58, 33, 28, 56, 54, 43, 26, 44, 53, 42, 49, 
-32, 43, 48, 52, 50, 29, 44, 43, 32, 52, 25, 53, 50, 36, 32, 35, 
-57, 57, 38, 49, 53, 27, 50, 59, 63, 34, 41, 49, 60, 26, 54, 49, 
-53, 57, 43, 57, 41, 58, 47, 42, 54, 57, 42, 26, 36, 23, 39, 46, 
-54, 58, 40, 34, 43, 27, 50, 33, 20, 45, 49, 39, 46, 31, 53, 52, 
-54, 40, 39, 39, 31, 49, 53, 58, 42, 20, 58, 46, 26, 27, 46, 29, 
-34, 51, 23, 53, 35, 41, 51, 31, 40, 30, 23, 43, 37, 48, 31, 30, 
-40, 35, 43, 61, 54, 41, 28, 32, 55, 28, 26, 30, 43, 38, 45, 21, 
-60, 53, 31, 59, 23, 36, 40, 37, 44, 30, 21, 40, 37, 46, 36, 54, 
-50, 52, 54, 45, 46, 39, 53, 42, 38, 38, 37, 49, 43, 44, 25, 43, 
-51, 44, 49, 47, 46, 42, 43, 45, 32, 42, 20, 29, 20, 34, 34, 29, 
-34, 45, 33, 31, 29, 49, 35, 38, 45, 44, 51, 33, 51, 36, 51, 29, 
-47, 46, 40, 24, 51, 37, 30, 53, 38, 57, 19, 57, 42, 28, 55, 35, 
-54, 39, 32, 31, 30, 49, 56, 34, 27, 26, 34, 47, 45, 47, 47, 46, 
-39, 36, 52, 45, 49, 26, 44, 18, 31, 38, 27, 35, 28, 26, 43, 36, 
-48, 27, 57, 33, 28, 39, 29, 44, 22, 54, 44, 54, 28, 46, 40, 27, 
-44, 48, 22, 30, 39, 27, 43, 44, 36, 32, 28, 46, 37, 40, 42, 40, 
-53, 36, 40, 36, 36, 43, 42, 33, 36, 58, 47, 35, 58, 40, 50, 31, 
-40, 18, 44, 57, 41, 38, 43, 33, 50, 44, 42, 24, 24, 39, 31, 53, 
-49, 51, 43, 47, 45, 29, 52, 59, 41, 29, 53, 19, 50, 22, 42, 59, 
-51, 18, 20, 21, 23, 57, 37, 42, 36, 47, 20, 42, 53, 19, 46, 28, 
-30, 30, 40, 37, 36, 23, 45, 52, 21, 60, 34, 30, 53, 32, 29, 56, 
-43, 38, 38, 46, 58, 34, 53, 31, 30, 31, 39, 39, 30, 53, 34, 31, 
-29, 33, 28, 28, 46, 43, 42, 26, 37, 36, 33, 40, 29, 32, 45, 28, 
-54, 41, 48, 44, 45, 29, 31, 39, 43, 43, 29, 30, 21, 28, 20, 34, 
-51, 40, 32, 27, 25, 27, 59, 55, 43, 33, 32, 33, 62, 45, 40, 48, 
-28, 50, 36, 59, 36, 26, 23, 25, 53, 28, 33, 31, 31, 25, 24, 27, 
-42, 40, 27, 49, 61, 50, 49, 63, 23, 28, 51, 32, 48, 45, 46, 28, 
-54, 21, 57, 54, 43, 51, 55, 64, 34, 58, 41, 25, 52, 52, 50, 62, 
-49, 54, 34, 55, 34, 29, 53, 56, 29, 28, 48, 32, 30, 51, 56, 43, 
-55, 30, 52, 25, 52, 58, 45, 56, 59, 49, 40, 50, 30, 48, 46, 45, 
-49, 26, 27, 54, 50, 53, 50, 32, 28, 39, 19, 22, 39, 52, 42, 24, 
-53, 29, 58, 54, 35, 58, 34, 41, 26, 46, 27, 38, 56, 32, 44, 41, 
-32, 23, 43, 54, 21, 60, 34, 47, 43, 39, 52, 21, 45, 41, 56, 28, 
-58, 49, 30, 51, 24, 30, 47, 61, 29, 26, 38, 54, 25, 37, 41, 58, 
-53, 54, 37, 36, 47, 39, 51, 44, 35, 19, 56, 44, 40, 32, 30, 21, 
-30, 32, 43, 56, 46, 32, 52, 28, 43, 50, 27, 58, 55, 35, 43, 54, 
-32, 37, 46, 23, 48, 60, 29, 43, 24, 24, 39, 40, 52, 47, 53, 51, 
-35, 52, 26, 52, 33, 47, 24, 34, 47, 36, 40, 37, 45, 33, 31, 31, 
-55, 50, 61, 44, 33, 51, 41, 34, 61, 50, 55, 52, 61, 39, 63, 51, 
-57, 28, 45, 54, 45, 20, 52, 39, 37, 51, 35, 34, 57, 37, 58, 32, 
-55, 50, 42, 24, 35, 58, 49, 22, 30, 40, 22, 20, 56, 36, 45, 20, 
-47, 30, 36, 56, 42, 45, 54, 57, 52, 31, 44, 31, 32, 59, 36, 58, 
-33, 31, 43, 42, 56, 35, 52, 48, 37, 35, 39, 39, 44, 23, 48, 26, 
-45, 48, 31, 30, 32, 46, 36, 44, 41, 35, 44, 21, 39, 48, 28, 34, 
-31, 29, 49, 31, 21, 40, 38, 39, 27, 25, 39, 51, 31, 38, 33, 31, 
-41, 37, 39, 29, 55, 26, 34, 23, 45, 39, 34, 35, 24, 31, 30, 29, 
-45, 33, 37, 45, 37, 51, 30, 32, 46, 28, 38, 43, 38, 52, 29, 28, 
-46, 43, 39, 41, 35, 35, 48, 48, 39, 42, 38, 37, 26, 57, 40, 32, 
-35, 47, 24, 49, 39, 40, 47, 33, 33, 40, 32, 32, 32, 38, 29, 28, 
-30, 44, 32, 43, 47, 37, 33, 49, 30, 39, 44, 31, 51, 57, 22, 27, 
-36, 26, 34, 34, 29, 45, 33, 49, 37, 30, 33, 32, 43, 45, 29, 43, 
-27, 35, 43, 40, 48, 35, 33, 44, 51, 25, 41, 59, 43, 51, 42, 38, 
-47, 41, 44, 42, 40, 45, 27, 34, 48, 43, 29, 47, 30, 38, 28, 51, 
-51, 26, 38, 37, 49, 30, 38, 40, 39, 45, 41, 31, 36, 32, 38, 33, 
-32, 33, 34, 36, 35, 43, 39, 45, 38, 54, 39, 32, 36, 28, 40, 44, 
-40, 32, 43, 34, 31, 34, 51, 34, 38, 43, 52, 41, 49, 35, 39, 51, 
-47, 36, 35, 29, 49, 36, 36, 37, 32, 31, 50, 18, 44, 37, 39, 50, 
-59, 24, 36, 27, 48, 31, 51, 30, 33, 32, 46, 48, 24, 53, 38, 43, 
-35, 47, 31, 45, 41, 41, 31, 45, 38, 48, 18, 40, 23, 57, 48, 30, 
-32, 32, 49, 33, 33, 34, 31, 35, 38, 46, 41, 29, 51, 45, 40, 36, 
-24, 39, 40, 44, 52, 35, 55, 47, 36, 49, 43, 42, 19, 33, 26, 50, 
-56, 40, 38, 30, 32, 34, 50, 44, 37, 54, 46, 36, 51, 41, 47, 47, 
-36, 42, 45, 47, 41, 59, 46, 46, 56, 40, 43, 51, 31, 35, 60, 45, 
-30, 24, 44, 34, 48, 58, 25, 59, 45, 41, 54, 58, 33, 31, 33, 46, 
-35, 47, 48, 56, 34, 35, 24, 41, 24, 40, 24, 21, 49, 49, 45, 47, 
-38, 41, 19, 21, 27, 23, 47, 23, 43, 27, 35, 22, 24, 27, 41, 38, 
-38, 35, 44, 36, 23, 45, 38, 38, 35, 45, 33, 29, 30, 32, 54, 41, 
-43, 48, 43, 35, 29, 43, 24, 34, 46, 46, 28, 35, 30, 42, 53, 41, 
-50, 46, 47, 30, 54, 32, 33, 32, 55, 25, 53, 36, 46, 32, 45, 44, 
-46, 44, 55, 41, 59, 39, 40, 23, 41, 35, 34, 46, 58, 52, 59, 55, 
-53, 48, 43, 34, 55, 19, 42, 43, 56, 29, 35, 44, 29, 23, 23, 57, 
-31, 38, 28, 25, 44, 26, 59, 33, 29, 34, 53, 50, 55, 44, 28, 25, 
-32, 33, 27, 30, 46, 38, 40, 40, 46, 48, 24, 51, 38, 32, 54, 34, 
-17, 37, 32, 45, 55, 31, 29, 26, 31, 55, 57, 40, 33, 46, 38, 30, 
-62, 23, 30, 30, 59, 63, 35, 37, 25, 39, 42, 39, 47, 46, 26, 60, 
-36, 29, 34, 42, 46, 39, 24, 31, 44, 27, 41, 51, 51, 22, 58, 41, 
-39, 37, 33, 66, 35, 37, 48, 60, 40, 39, 31, 49, 60, 22, 21, 37, 
-44, 39, 48, 38, 65, 36, 56, 36, 31, 36, 33, 35, 43, 40, 32, 21, 
-26, 38, 31, 32, 46, 41, 34, 44, 44, 35, 31, 44, 40, 29, 33, 55, 
-39, 20, 40, 29, 27, 35, 35, 33, 38, 42, 45, 44, 30, 51, 35, 21, 
-22, 34, 55, 34, 18, 23, 41, 36, 35, 20, 53, 57, 35, 55, 22, 35, 
-39, 37, 39, 32, 46, 29, 37, 34, 40, 54, 31, 23, 34, 36, 28, 34, 
-33, 30, 35, 27, 20, 19, 48, 56, 45, 35, 56, 19, 20, 37, 22, 36, 
-42, 19, 35, 35, 51, 45, 55, 45, 32, 48, 39, 54, 29, 16, 17, 44, 
-60, 28, 18, 36, 24, 24, 25, 56, 41, 21, 22, 31, 42, 42, 35, 45, 
-50, 52, 48, 54, 58, 52, 53, 48, 56, 40, 59, 29, 54, 30, 51, 28, 
-41, 44, 50, 40, 47, 38, 34, 42, 44, 23, 27, 40, 29, 39, 28, 54, 
-48, 52, 23, 52, 33, 46, 45, 48, 45, 41, 47, 36, 37, 45, 47, 47, 
-37, 43, 33, 28, 32, 29, 48, 44, 31, 45, 39, 32, 45, 59, 31, 59, 
-42, 37, 42, 47, 38, 21, 41, 40, 28, 20, 38, 28, 37, 36, 37, 37, 
-45, 39, 25, 47, 55, 40, 36, 34, 36, 34, 54, 20, 20, 54, 44, 29, 
-26, 20, 37, 24, 56, 45, 57, 53, 56, 30, 55, 23, 45, 37, 51, 54, 
-55, 44, 26, 57, 40, 64, 17, 21, 29, 26, 32, 49, 36, 57, 34, 34, 
-38, 51, 32, 49, 40, 61, 46, 50, 45, 19, 51, 27, 46, 59, 33, 46, 
-30, 44, 35, 31, 41, 37, 25, 54, 43, 36, 45, 42, 33, 50, 45, 50, 
-52, 53, 33, 26, 39, 45, 39, 29, 40, 41, 49, 26, 34, 41, 48, 42, 
-41, 43, 30, 31, 43, 42, 45, 44, 22, 36, 50, 26, 40, 35, 40, 31, 
-33, 36, 39, 28, 25, 40, 31, 44, 26, 54, 36, 22, 33, 22, 35, 42, 
-43, 53, 46, 45, 40, 33, 42, 44, 58, 46, 52, 63, 32, 55, 21, 41, 
-21, 20, 39, 37, 44, 29, 31, 40, 33, 33, 50, 52, 37, 43, 51, 23, 
-24, 23, 23, 28, 42, 42, 52, 56, 56, 44, 24, 53, 25, 49, 44, 41, 
-23, 39, 43, 49, 41, 48, 29, 55, 39, 27, 36, 21, 44, 28, 47, 44, 
-42, 35, 41, 32, 31, 20, 47, 30, 37, 56, 50, 43, 58, 32, 56, 28, 
-26, 25, 50, 42, 21, 45, 21, 20, 53, 43, 38, 56, 40, 25, 50, 34, 
-52, 45, 29, 51, 29, 34, 43, 35, 44, 42, 42, 23, 45, 53, 49, 30, 
-25, 22, 57, 28, 33, 32, 49, 30, 26, 22, 37, 51, 56, 58, 48, 23, 
-38, 26, 36, 48, 58, 48, 39, 48, 35, 55, 52, 37, 42, 47, 33, 25, 
-50, 35, 33, 50, 48, 44, 37, 60, 21, 20, 23, 22, 30, 33, 35, 50, 
-31, 35, 33, 25, 22, 38, 20, 52, 44, 29, 42, 45, 20, 29, 51, 39, 
-37, 46, 33, 43, 27, 39, 46, 46, 49, 20, 46, 41, 20, 23, 23, 32, 
-30, 23, 50, 34, 31, 20, 34, 24, 33, 54, 23, 33, 48, 31, 58, 37, 
-23, 38, 57, 50, 58, 53, 26, 32, 48, 41, 59, 29, 33, 32, 45, 24, 
-33, 20, 23, 54, 56, 30, 21, 22, 53, 24, 29, 23, 48, 51, 27, 26, 
-28, 48, 58, 57, 29, 48, 44, 54, 22, 34, 48, 30, 55, 34, 22, 55, 
-42, 58, 24, 33, 22, 33, 56, 55, 59, 45, 21, 52, 22, 35, 35, 52, 
-47, 48, 51, 33, 38, 53, 49, 28, 46, 54, 26, 38, 36, 35, 28, 40, 
-44, 30, 33, 44, 41, 22, 34, 33, 51, 21, 41, 30, 57, 32, 21, 47, 
-24, 63, 21, 47, 29, 50, 48, 40, 54, 54, 56, 51, 36, 37, 21, 48, 
-44, 47, 55, 44, 30, 28, 23, 25, 50, 55, 36, 48, 37, 34, 38, 36, 
-43, 30, 36, 50, 50, 26, 25, 30, 26, 33, 36, 43, 33, 47, 37, 54, 
-32, 19, 33, 45, 19, 45, 44, 30, 60, 42, 35, 31, 35, 34, 40, 61, 
-32, 49, 44, 42, 41, 47, 41, 54, 29, 33, 27, 36, 32, 46, 41, 52, 
-51, 40, 49, 24, 34, 55, 43, 47, 57, 62, 38, 63, 25, 41, 31, 48, 
-42, 51, 30, 37, 58, 36, 35, 24, 46, 45, 46, 58, 17, 31, 29, 60, 
-44, 25, 42, 54, 18, 56, 34, 34, 39, 48, 33, 40, 34, 45, 31, 52, 
-34, 59, 43, 45, 34, 42, 41, 59, 36, 38, 36, 50, 51, 55, 29, 24, 
-41, 59, 28, 51, 33, 31, 52, 45, 44, 42, 46, 38, 37, 40, 52, 40, 
-33, 32, 49, 34, 32, 35, 56, 23, 41, 23, 39, 65, 24, 36, 33, 28, 
-45, 66, 51, 44, 35, 47, 27, 44, 36, 31, 59, 50, 47, 37, 28, 50, 
-40, 43, 45, 20, 40, 56, 33, 29, 59, 32, 45, 38, 43, 46, 40, 29, 
-39, 42, 42, 32, 35, 46, 35, 50, 22, 30, 30, 36, 42, 34, 29, 52, 
-28, 41, 38, 40, 51, 43, 36, 19, 29, 54, 37, 33, 43, 59, 35, 43, 
-28, 38, 58, 46, 55, 26, 59, 33, 34, 38, 28, 53, 26, 26, 33, 28, 
-24, 32, 27, 52, 22, 38, 35, 39, 39, 33, 34, 21, 53, 34, 44, 33, 
-28, 56, 57, 52, 46, 46, 20, 53, 41, 35, 46, 55, 35, 50, 56, 47, 
-23, 52, 24, 53, 28, 19, 49, 27, 37, 37, 41, 32, 47, 44, 36, 52, 
-38, 44, 47, 33, 58, 29, 48, 37, 50, 53, 55, 32, 26, 60, 58, 23, 
-32, 30, 45, 46, 59, 45, 54, 36, 29, 44, 20, 36, 32, 60, 42, 59, 
-35, 24, 21, 22, 32, 37, 23, 52, 45, 21, 34, 44, 48, 26, 30, 47, 
-24, 33, 25, 38, 42, 41, 33, 30, 45, 36, 42, 36, 45, 34, 52, 53, 
-25, 44, 53, 45, 31, 23, 52, 35, 45, 31, 42, 26, 43, 47, 31, 48, 
-41, 42, 24, 48, 40, 36, 45, 52, 29, 52, 52, 34, 45, 47, 26, 26, 
-48, 32, 26, 48, 37, 27, 38, 59, 20, 55, 50, 52, 32, 45, 42, 62, 
-33, 24, 22, 35, 32, 22, 27, 40, 60, 53, 35, 40, 39, 28, 49, 23, 
-53, 20, 35, 50, 32, 40, 31, 26, 56, 36, 25, 47, 45, 30, 37, 55, 
-86, 36, 48, 37, 57, 44, 49, 22, 54, 50, 48, 25, 26, 23, 40, 35, 
-53, 51, 42, 50, 54, 48, 54, 37, 45, 55, 46, 36, 44, 52, 43, 34, 
-43, 38, 36, 25, 27, 19, 37, 42, 36, 51, 39, 37, 46, 35, 43, 46, 
-37, 39, 36, 21, 26, 50, 36, 20, 34, 43, 20, 47, 24, 38, 58, 43, 
-39, 29, 45, 26, 26, 46, 28, 34, 35, 27, 37, 28, 28, 29, 30, 30, 
-27, 23, 35, 46, 45, 88, 47, 42, 37, 24, 32, 28, 40, 27, 50, 34, 
-36, 30, 41, 50, 22, 19, 21, 36, 31, 57, 42, 32, 28, 88, 25, 34, 
-57, 54, 49, 56, 37, 40, 27, 23, 57, 46, 35, 38, 29, 59, 49, 26, 
-26, 29, 27, 35, 32, 38, 32, 41, 26, 30, 36, 40, 28, 24, 47, 41, 
-40, 34, 23, 35, 60, 40, 34, 47, 30, 42, 28), ethnicity = structure(c(1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
-1L, 1L, 1L, 1L), .Label = c("European", "Maori", "Other", "Polynesian"
-), class = "factor"), mstatus = structure(c(3L, 2L, 2L, 1L, 2L, 
-3L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 2L, 2L, 2L, 2L, 
-3L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 4L, 2L, 2L, 2L, 3L, 2L, 2L, 2L, 
-2L, 2L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 2L, 2L, 3L, 2L, 2L, 
-3L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 2L, 1L, 2L, 2L, 2L, 2L, 
-2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 2L, 1L, 
-2L, 2L, 2L, 1L, 3L, 2L, 3L, 2L, 3L, 2L, 2L, 2L, 2L, 3L, 2L, 3L, 
-2L, 2L, 2L, 2L, 2L, 3L, 2L, 2L, 2L, 4L, 2L, 1L, 2L, 3L, 1L, 2L, 
-2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 2L, 2L, 2L, 2L, 2L, 2L, 
-2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 2L, 2L, 
-2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
-2L, 2L, 2L, 1L, 2L, 2L, 1L, 2L, 2L, 3L, 2L, 3L, 2L, 2L, 2L, 3L, 
-3L, 2L, 2L, 2L, 2L, 3L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
-2L, 2L, 2L, 2L, 3L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 2L, 2L, 1L, 
-2L, 2L, 2L, 2L, 2L, 2L, 3L, 2L, 2L, 2L, 2L, 2L, 3L, 2L, 2L, 2L, 
-2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 1L, 3L, 2L, 2L, 2L, 2L, 2L, 
-2L, 2L, 2L, 2L, 2L, 2L, 3L, 2L, 2L, 2L, 3L, 2L, 2L, 2L, 2L, 2L, 
-2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 2L, 2L, 2L, 2L, 2L, 3L, 2L, 1L, 
-2L, 2L, 3L, 3L, 2L, 2L, 2L, 2L, 2L, 1L, 1L, 2L, 2L, 2L, 2L, 1L, 
-2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 2L, 2L, 
-1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 
-2L, 3L, 3L, 2L, 2L, 3L, 2L, 2L, 2L, 2L, 3L, 2L, 2L, 2L, 2L, 2L, 
-2L, 3L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 2L, 3L, 2L, 2L, 2L, 2L, 2L, 
-2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 2L, 1L, 2L, 1L, 2L, 2L, 2L, 
-2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 
-2L, 2L, 2L, 2L, 1L, 2L, 2L, 2L, 2L, 1L, 2L, 2L, 2L, 2L, 2L, 1L, 
-3L, 2L, 3L, 3L, 2L, 2L, 3L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 
-2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 2L, 2L, 2L, 2L, 2L, 
-2L, 2L, 2L, 2L, 2L, 2L, 3L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
-2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 4L, 2L, 3L, 3L, 2L, 1L, 
-3L, 2L, 3L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
-2L, 3L, 2L, 2L, 2L, 2L, 3L, 2L, 2L, 3L, 2L, 2L, 3L, 3L, 2L, 3L, 
-2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 2L, 2L, 3L, 3L, 2L, 3L, 2L, 
-2L, 2L, 2L, 3L, 2L, 3L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
-2L, 2L, 2L, 2L, 2L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 2L, 2L, 2L, 
-2L, 2L, 3L, 3L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
-1L, 2L, 2L, 2L, 2L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 
-2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
-2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 2L, 2L, 2L, 2L, 3L, 2L, 2L, 
-2L, 2L, 3L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 
-2L, 3L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
-2L, 2L, 2L, 2L, 3L, 3L, 1L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 2L, 2L, 
-2L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 2L, 3L, 2L, 3L, 2L, 3L, 2L, 
-1L, 2L, 2L, 3L, 2L, 2L, 3L, 2L, 2L, 2L, 2L, 2L, 3L, 2L, 2L, 2L, 
-2L, 2L, 3L, 3L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 3L, 2L, 2L, 3L, 2L, 
-2L, 2L, 2L, 2L, 3L, 3L, 2L, 2L, 2L, 3L, 3L, 2L, 2L, 2L, 2L, 2L, 
-3L, 3L, 2L, 1L, 3L, 2L, 2L, 2L, 2L, 3L, 2L, 3L, 3L, 2L, 2L, 1L, 
-3L, 2L, 2L, 2L, 3L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 2L, 
-3L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
-2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
-2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 2L, 2L, 2L, 3L, 2L, 2L, 2L, 2L, 
-3L, 2L, 1L, 2L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 2L, 
-2L, 2L, 3L, 2L, 3L, 2L, 2L, 2L, 1L, 2L, 1L, 2L, 2L, 2L, 2L, 3L, 
-2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 2L, 4L, 2L, 2L, 2L, 
-1L, 2L, 2L, 2L, 4L, 2L, 3L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 4L, 
-3L, 2L, 2L, 2L, 1L, 2L, 2L, 3L, 2L, 2L, 2L, 3L, 3L, 3L, 2L, 2L, 
-2L, 3L, 2L, 2L, 3L, 2L, 2L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
-2L, 2L, 2L, 3L, 2L, 3L, 2L, 3L, 2L, 2L, 2L, 1L, 2L, 2L, 1L, 2L, 
-1L, 3L, 4L, 2L, 2L, 2L, 2L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 2L, 
-2L, 2L, 3L, 3L, 2L, 2L, 2L, 3L, 2L, 3L, 2L, 1L, 2L, 2L, 2L, 2L, 
-2L, 2L, 2L, 2L, 2L, 3L, 2L, 2L, 2L, 2L, 3L, 3L, 2L, 2L, 3L, 3L, 
-2L, 2L, 2L, 2L, 2L, 2L, 3L, 2L, 2L, 2L, 2L, 3L, 2L, 1L, 2L, 2L, 
-2L, 3L, 3L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 4L, 2L, 2L, 2L, 3L, 
-2L, 3L, 2L, 2L, 2L, 3L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 2L, 2L, 2L, 
-2L, 3L, 2L, 3L, 2L, 3L, 2L, 2L, 2L, 3L, 2L, 2L, 2L, 2L, 2L, 2L, 
-2L, 3L, 2L, 2L, 3L, 2L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
-2L, 2L, 2L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
-2L, 2L, 2L, 2L, 2L, 3L, 3L, 2L, 2L, 2L, 2L, 2L, 3L, 2L, 3L, 2L, 
-2L, 2L, 2L, 2L, 3L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 2L, 2L, 3L, 2L, 
-2L, 2L, 2L, 3L, 3L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
-2L, 2L, 2L, 1L, 2L, 2L, 3L, 1L, 3L, 2L, 2L, 2L, 2L, 2L, 3L, 2L, 
-2L, 4L, 2L, 2L, 2L, 2L, 2L, 3L, 2L, 2L, 3L, 2L, 3L, 2L, 2L, 2L, 
-2L, 2L, 2L, 3L, 2L, 2L, 2L, 3L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
-3L, 2L, 2L, 2L, 3L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
-2L, 1L, 2L, 2L, 2L, 1L, 2L, 3L, 2L, 3L, 2L, 3L, 3L, 2L, 2L, 2L, 
-3L, 2L, 2L, 2L, 4L, 2L, 2L, 3L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 
-2L, 2L, 3L, 2L, 2L, 3L, 3L, 2L, 2L, 2L, 3L, 2L, 2L, 2L, 2L, 2L, 
-1L, 2L, 2L, 2L, 2L, 3L, 2L, 2L, 2L, 3L, 2L, 2L, 2L, 2L, 2L, 3L, 
-3L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 2L, 2L, 2L, 2L, 1L, 2L, 2L, 
-2L, 1L, 3L, 3L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 3L, 2L, 2L, 2L, 2L, 
-2L, 2L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 1L, 2L, 1L, 2L, 2L, 3L, 2L, 
-2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 2L, 2L, 2L, 2L, 1L, 2L, 3L, 
-2L, 3L, 2L, 2L, 1L, 2L, 3L, 2L, 2L, 2L, 4L, 2L, 2L, 2L, 2L, 2L, 
-2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
-1L, 2L, 2L, 2L, 2L, 3L, 2L, 2L, 2L, 3L, 2L, 2L, 2L, 3L, 2L, 2L, 
-3L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 2L, 2L, 2L, 2L, 2L, 3L, 2L, 2L, 
-2L, 2L, 3L, 4L, 2L, 2L, 1L, 2L, 2L, 2L, 2L, 4L, 2L, 2L, 2L, 2L, 
-2L, 2L, 2L, 2L, 2L, 2L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 2L, 2L, 
-2L, 2L, 4L, 2L, 2L, 2L, 2L, 2L, 3L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
-1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
-2L, 1L, 2L, 2L, 2L, 2L, 1L, 1L, 4L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
-2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 2L, 2L, 4L, 2L, 1L, 3L, 
-2L, 2L, 1L, 2L, 2L, 2L, 4L, 2L, 4L, 2L, 2L, 2L, 2L, 2L, 3L, 2L, 
-2L, 2L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
-2L, 2L, 3L, 2L, 2L, 2L, 2L, 2L, 1L, 2L, 2L, 2L, 1L, 2L, 2L, 2L, 
-1L, 2L, 2L, 2L, 2L, 2L, 3L, 2L, 2L, 2L, 1L, 2L, 2L, 2L, 2L, 2L, 
-2L, 2L, 2L, 1L, 2L, 4L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 2L, 4L, 2L, 
-2L, 2L, 2L, 1L, 2L, 2L, 2L, 3L, 2L, 4L, 2L, 4L, 2L, 1L, 1L, 2L, 
-2L, 2L, 1L, 2L, 2L, 2L, 3L, 1L, 2L, 2L, 3L, 2L, 2L, 2L, 4L, 2L, 
-2L, 2L, 2L, 2L, 4L, 2L, 2L, 2L, 3L, 2L, 3L, 2L, 2L, 2L, 2L, 3L, 
-2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 2L, 2L, 2L, 2L, 
-3L, 3L, 2L, 2L, 2L, 2L, 2L, 4L, 1L, 2L, 2L, 2L, 2L, 2L, 1L, 2L, 
-2L, 2L, 2L, 2L, 3L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
-2L, 2L, 2L, 2L, 2L, 3L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
-2L, 2L, 2L, 2L, 1L, 3L, 2L, 2L, 2L, 2L, 3L, 2L, 2L, 2L, 2L, 2L, 
-4L, 4L, 2L, 2L, 2L, 3L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 2L, 
-2L, 2L, 2L, 2L, 4L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
-2L, 4L, 2L, 2L, 2L, 2L, 2L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 4L, 2L, 
-2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 4L, 2L, 2L, 1L, 2L, 2L, 1L, 2L, 
-2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 2L, 2L, 4L, 4L, 2L, 
-2L, 2L, 2L, 2L, 2L, 2L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
-2L, 2L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 2L, 2L, 2L, 2L, 2L, 
-2L, 2L, 2L, 2L, 2L, 2L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
-2L, 2L, 4L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
-2L, 2L, 2L, 2L, 2L, 2L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 
-2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 3L, 3L, 2L, 2L, 2L, 2L, 
-2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
-2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
-2L, 2L, 4L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 2L, 1L, 2L, 2L, 2L, 2L, 
-2L, 2L, 2L, 2L, 3L, 4L, 2L, 4L, 4L, 2L, 2L, 1L, 2L, 2L, 2L, 4L, 
-2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
-2L, 2L, 2L, 1L, 1L, 4L, 2L, 2L, 4L, 2L, 2L, 3L, 1L, 2L, 2L, 2L, 
-1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 4L, 2L, 2L, 2L, 2L, 
-4L, 2L, 2L, 2L, 2L, 2L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 2L, 
-2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
-2L, 1L, 2L, 2L, 3L, 2L, 2L, 2L, 2L, 2L, 4L, 2L, 2L, 2L, 3L, 3L, 
-2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
-2L, 1L, 1L, 2L, 1L, 2L, 2L, 2L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
-2L, 2L, 2L, 4L, 2L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
-2L, 1L, 2L, 2L, 2L, 4L, 2L, 2L, 2L, 2L, 4L, 2L, 2L, 2L, 2L, 2L, 
-4L, 2L, 2L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 4L, 2L, 2L, 3L, 2L, 
-2L, 2L, 4L, 2L, 2L, 2L, 2L, 2L, 4L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
-2L, 2L, 2L, 4L, 2L, 2L, 2L, 2L, 3L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
-1L, 2L, 2L, 2L, 2L, 2L, 1L, 2L, 2L, 2L, 2L, 4L, 1L, 1L, 2L, 2L, 
-1L, 4L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 2L, 2L, 2L, 4L, 
-2L, 2L, 2L, 1L, 2L, 2L, 1L, 3L, 2L, 2L, 2L, 2L, 2L, 2L, 4L, 2L, 
-2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
-2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 4L, 4L, 2L, 2L, 2L, 2L, 
-4L, 1L, 4L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 2L, 2L, 2L, 2L, 2L, 
-2L, 3L, 1L, 2L, 4L, 2L, 1L, 2L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
-2L, 2L, 2L, 2L, 2L, 2L, 2L, 4L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
-1L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 2L, 2L, 3L, 1L, 2L, 2L, 4L, 2L, 
-4L, 2L, 2L, 2L, 4L, 2L, 2L, 4L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 3L, 
-2L, 2L, 2L, 2L, 2L, 2L, 2L, 4L, 2L, 4L, 2L, 4L, 2L, 2L, 2L, 2L, 
-2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 4L, 2L, 4L, 2L, 2L, 4L, 2L, 
-2L, 2L, 2L, 2L, 2L, 3L, 4L, 2L, 2L, 4L, 1L, 1L, 2L, 2L, 2L, 2L, 
-2L, 2L, 2L, 2L, 1L, 2L, 2L, 3L, 2L, 2L, 2L, 1L, 2L, 2L, 2L, 2L, 
-2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 2L, 2L, 2L, 2L, 4L, 2L, 
-2L, 2L, 2L, 1L, 2L, 2L, 1L, 2L, 4L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 
-2L, 2L, 2L, 2L, 2L, 3L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 1L, 2L, 2L, 
-2L, 2L, 4L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 2L, 2L, 2L, 
-2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
-2L, 1L, 1L, 3L, 2L, 2L, 2L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
-3L, 2L, 1L, 2L, 2L, 2L, 2L, 2L, 4L, 4L, 2L, 2L, 1L, 2L, 2L, 2L, 
-2L, 4L, 2L, 2L, 2L, 2L, 2L, 2L, 4L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
-4L, 2L, 2L, 4L, 2L, 2L, 2L, 2L, 4L, 2L, 2L, 4L, 4L, 2L, 2L, 2L, 
-2L, 4L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 4L, 2L, 2L, 2L, 2L, 2L, 4L, 
-2L, 2L, 4L, 2L, 2L, 2L, 2L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
-2L, 2L, 4L, 2L, 2L, 4L, 2L, 4L, 2L, 2L, 2L, 2L, 2L, 4L, 2L, 2L, 
-3L, 2L, 2L, 2L, 3L, 2L, 2L, 2L, 3L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 
-2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 2L, 2L, 2L, 2L, 
-3L, 2L, 3L, 2L, 3L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
-2L, 2L, 4L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 2L, 2L, 2L, 2L, 2L, 
-2L, 2L, 3L, 2L, 3L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
-2L, 2L, 2L, 2L, 2L, 1L, 4L, 3L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 
-2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 2L, 2L, 2L, 
-2L, 2L, 2L, 2L, 2L, 3L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 2L, 
-2L, 2L, 2L, 2L, 2L, 2L, 3L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
-1L, 2L, 2L, 4L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 2L, 2L, 
-3L, 2L, 2L, 3L, 2L, 2L, 2L, 2L, 3L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
-2L, 2L, 2L, 2L, 2L, 2L, 3L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 2L, 3L, 
-3L, 2L, 3L, 2L, 1L, 2L, 3L, 3L, 2L, 1L, 3L, 3L, 2L, 2L, 4L, 3L, 
-2L, 2L, 2L, 2L, 2L, 2L, 1L, 2L, 2L, 2L, 2L, 2L, 3L, 2L, 2L, 2L, 
-2L, 2L, 2L, 3L, 2L, 3L, 2L, 2L, 2L, 2L, 3L, 1L, 1L, 2L, 2L, 2L, 
-2L, 3L, 2L, 2L, 2L, 1L, 2L, 2L, 3L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 
-2L, 2L, 2L, 2L, 2L, 2L, 1L, 2L, 3L, 2L, 1L, 2L, 2L, 3L, 2L, 1L, 
-2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 2L, 3L, 1L, 2L, 2L, 2L, 2L, 2L, 
-2L, 2L, 2L, 2L, 1L, 3L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 2L, 2L, 
-2L, 3L, 3L, 2L, 1L, 3L, 2L, 3L, 3L, 2L, 3L, 2L, 2L, 2L, 2L, 3L, 
-3L, 2L, 2L, 2L, 2L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 2L, 3L, 
-2L, 2L, 2L, 2L, 3L, 1L, 2L, 3L, 2L, 2L, 2L, 3L, 2L, 2L, 2L, 2L, 
-2L, 3L, 2L, 1L, 3L, 1L, 2L, 2L, 2L, 3L, 1L, 2L, 2L, 3L, 2L, 2L, 
-3L, 2L, 3L, 2L, 2L, 3L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 2L, 
-2L, 2L, 3L, 2L, 3L, 3L, 1L, 1L, 3L, 3L, 3L, 2L, 2L, 2L, 2L, 2L, 
-1L, 3L, 2L, 4L, 2L, 2L, 3L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 
-2L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 4L, 2L, 2L, 
-2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 1L, 2L, 2L, 3L, 3L, 3L, 2L, 3L, 
-2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 2L, 2L, 2L, 2L, 
-3L, 3L, 2L, 2L, 3L, 2L, 2L, 2L, 2L, 3L, 1L, 3L, 3L, 2L, 2L, 3L, 
-2L, 1L, 2L, 3L, 2L, 2L, 3L, 3L, 2L, 2L, 3L, 3L, 2L, 2L, 2L, 2L, 
-3L, 3L, 2L, 2L, 2L, 3L, 2L, 2L, 3L, 3L, 2L, 2L, 2L, 2L, 2L, 2L, 
-2L, 2L, 2L, 3L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 2L, 2L, 2L, 
-2L, 2L, 2L, 3L, 2L, 2L, 3L, 3L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
-2L, 1L, 2L, 2L, 2L, 1L, 2L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 
-2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 2L, 2L, 2L, 
-2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
-2L, 2L, 2L, 1L, 2L, 1L, 2L, 2L, 3L, 2L, 1L, 2L, 2L, 3L, 2L, 2L, 
-2L, 2L, 2L, 2L, 2L, 1L, 2L, 2L, 2L, 2L, 1L, 2L, 3L, 2L, 3L, 3L, 
-2L, 2L, 2L, 2L, 3L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 2L, 2L, 1L, 
-2L, 2L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 2L, 2L, 2L, 2L, 2L, 2L, 
-2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
-2L, 3L, 2L, 2L, 2L, 1L, 2L, 2L, 2L, 2L, 3L, 2L, 3L, 3L, 2L, 3L, 
-3L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 2L, 
-2L, 2L, 2L, 1L, 2L, 2L, 2L, 3L, 3L, 2L, 1L, 2L, 2L, 2L, 2L, 3L, 
-2L, 2L, 3L, 3L, 2L, 2L, 2L, 3L, 3L, 2L, 2L, 1L, 3L, 3L, 3L, 3L, 
-2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
-2L, 2L, 2L, 2L, 3L, 2L, 3L, 3L, 3L, 2L, 3L, 2L, 2L, 2L, 2L, 2L, 
-2L, 2L, 2L, 2L, 3L, 2L, 2L, 2L, 2L, 2L, 3L, 2L, 2L, 2L, 2L, 2L, 
-3L, 2L, 2L, 3L, 2L, 2L, 2L, 2L, 3L, 3L, 2L, 2L, 2L, 2L, 2L, 2L, 
-2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
-4L, 2L, 3L, 1L, 3L, 2L, 2L, 3L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 
-2L, 2L, 2L, 2L, 2L, 3L, 2L, 2L, 1L, 2L, 3L, 2L, 2L, 2L, 2L, 2L, 
-2L, 2L, 2L, 2L, 4L, 2L, 2L, 3L, 2L, 2L, 2L, 2L, 3L, 2L, 3L, 2L, 
-2L, 3L, 2L, 3L, 2L, 2L, 2L, 1L, 2L, 3L, 2L, 2L, 2L, 2L, 2L, 2L, 
-2L, 2L, 3L, 2L, 2L, 2L, 2L, 2L, 2L, 4L, 1L, 3L, 3L, 3L, 2L, 2L, 
-2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
-2L, 2L, 1L, 2L, 3L, 2L, 2L, 4L, 2L, 2L, 1L, 2L, 2L, 2L, 2L, 2L, 
-3L, 2L, 2L, 2L, 2L, 3L, 2L, 2L, 1L, 2L, 2L, 3L, 3L, 3L, 2L, 2L, 
-2L, 2L, 3L, 2L, 2L, 1L, 2L, 2L, 2L, 2L, 2L, 3L, 2L, 2L, 2L, 2L, 
-2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 2L, 3L, 2L, 3L, 3L, 2L, 1L, 2L, 
-2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
-2L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 4L, 1L, 2L, 2L, 
-2L, 2L, 2L, 2L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 2L, 2L, 2L, 2L, 
-2L, 2L, 2L, 2L, 3L, 3L, 3L, 2L, 2L, 2L, 2L, 3L, 2L, 2L, 2L, 2L, 
-2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 2L, 2L, 
-2L, 2L, 2L, 2L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 2L, 2L, 2L, 
-2L, 2L, 2L, 2L, 2L, 1L, 2L, 4L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
-3L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 2L, 2L, 3L, 1L, 2L, 2L, 2L, 2L, 
-3L, 1L, 2L, 2L, 2L, 2L, 2L, 3L, 1L, 2L, 2L, 2L, 2L, 2L, 3L, 2L, 
-2L, 3L, 3L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 2L, 2L, 2L, 3L, 
-1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
-3L, 2L, 2L, 2L, 3L, 3L, 2L, 2L, 2L, 3L, 2L, 2L, 2L, 2L, 2L, 3L, 
-2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
-2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 
-2L, 3L, 2L, 2L, 3L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
-2L, 2L, 2L, 2L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 
-2L, 2L, 3L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 2L, 
-2L, 2L, 2L, 2L, 1L, 2L, 2L, 2L, 1L, 2L, 3L, 2L, 3L, 2L, 2L, 2L, 
-2L, 2L, 3L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
-2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
-2L, 2L, 2L, 2L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
-1L, 2L, 2L, 2L, 2L, 2L, 3L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
-3L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 2L, 2L, 1L, 2L, 2L, 
-3L, 2L, 3L, 2L, 2L, 2L, 3L, 3L, 3L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 
-2L, 2L, 3L, 2L, 3L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 2L, 2L, 
-2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
-2L, 2L, 1L, 2L, 2L, 3L, 2L, 3L, 3L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
-2L, 2L, 2L, 2L, 2L, 2L, 4L, 2L, 2L, 1L, 2L, 2L, 2L, 2L, 1L, 3L, 
-3L, 2L, 2L, 3L, 1L, 2L, 2L, 2L, 3L, 3L, 2L, 2L, 2L, 2L, 2L, 2L, 
-2L, 2L, 3L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 2L, 2L, 2L, 
-2L, 2L, 3L, 3L, 3L, 2L, 2L, 2L, 2L, 2L, 1L, 2L, 2L, 3L, 2L, 2L, 
-2L, 2L, 2L, 2L, 2L, 2L, 3L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
-3L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 1L, 2L, 2L, 2L, 2L, 
-3L, 2L, 2L, 2L, 2L, 2L, 3L, 2L, 3L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
-2L, 3L, 2L, 2L, 1L, 2L, 2L, 3L, 2L, 4L, 2L, 2L, 2L, 2L, 3L, 2L, 
-2L, 2L, 2L, 2L, 3L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 2L, 2L, 2L, 2L, 
-2L, 3L, 2L, 2L, 2L, 2L, 3L, 2L, 2L, 3L, 2L, 2L, 1L, 2L, 3L, 2L, 
-3L, 2L, 2L, 2L, 3L, 2L, 2L, 3L, 2L, 3L, 2L, 4L, 2L, 2L, 2L, 2L, 
-2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 3L, 2L, 
-2L, 2L, 2L, 3L, 3L, 2L, 3L, 2L, 2L, 2L, 2L, 1L, 2L, 1L, 2L, 3L, 
-2L, 3L, 2L, 2L, 2L, 3L, 2L, 2L, 3L, 2L, 2L, 2L, 2L, 3L, 3L, 2L, 
-2L, 2L, 3L, 2L, 2L, 2L, 2L, 3L, 2L, 2L, 2L, 2L, 3L, 2L, 2L, 2L, 
-2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
-2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 2L, 2L, 2L, 2L, 2L, 
-2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 2L, 2L, 3L, 2L, 2L, 3L, 
-3L, 2L, 2L, 2L, 3L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 2L, 2L, 2L, 1L, 
-1L, 2L, 1L, 3L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
-2L, 2L, 3L, 2L, 2L, 4L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
-3L, 2L, 2L, 2L, 2L, 2L, 3L, 2L, 1L, 3L, 2L, 2L, 2L, 3L, 2L, 2L, 
-2L, 3L, 2L, 2L, 2L, 2L, 2L, 1L, 2L, 2L, 2L, 2L, 3L, 2L, 2L, 2L, 
-2L, 3L, 2L, 2L, 3L, 1L, 2L, 2L, 3L, 3L, 2L, 2L, 2L, 2L, 2L, 2L, 
-2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 2L, 2L, 2L, 2L, 
-2L, 3L, 2L, 2L, 2L, 2L, 2L, 3L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
-1L, 2L, 1L, 3L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 2L, 2L, 
-1L, 2L, 2L, 3L, 3L, 2L, 3L, 2L, 3L, 2L, 1L, 2L, 2L, 2L, 2L, 2L, 
-3L, 2L, 2L, 2L, 1L, 1L, 2L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 2L, 
-4L, 1L, 2L, 2L, 2L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
-2L, 2L, 3L, 2L, 2L, 2L, 3L, 2L, 2L, 2L, 2L, 1L, 2L, 2L, 2L, 2L, 
-3L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 2L, 2L, 2L, 2L, 1L, 2L, 2L, 2L, 
-2L, 2L, 3L, 2L, 2L, 3L, 2L, 2L, 1L, 2L, 3L, 2L, 2L, 2L, 2L, 2L, 
-2L, 2L, 3L, 2L, 2L, 2L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
-3L, 2L, 2L, 2L, 2L, 2L, 3L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
-2L, 3L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
-2L, 3L, 2L, 2L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
-2L, 2L, 2L, 2L, 2L, 3L, 2L, 1L, 2L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 
-2L, 3L, 3L, 3L, 2L, 1L, 2L, 2L, 2L, 1L, 2L, 2L, 2L, 2L, 3L, 2L, 
-1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
-2L, 2L, 2L, 1L, 2L, 2L, 3L, 1L, 3L, 4L, 2L, 3L, 2L, 2L, 2L, 2L, 
-2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 2L, 3L, 
-3L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 2L, 3L, 2L, 3L, 2L, 
-3L, 3L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 2L, 2L, 2L, 2L, 2L, 2L, 
-2L, 3L, 2L, 1L, 2L, 2L, 2L, 2L, 2L, 3L, 2L, 2L, 2L, 2L, 2L, 2L, 
-2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 2L, 3L, 2L, 2L, 2L, 
-2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 2L, 1L, 2L, 
-2L, 2L, 2L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 2L, 2L, 2L, 2L, 2L, 
-3L, 2L, 2L, 3L, 2L, 2L, 2L, 3L, 2L, 2L, 2L, 2L, 3L, 2L, 2L, 2L, 
-2L, 2L, 2L, 2L, 3L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 
-2L, 2L, 2L, 2L, 2L, 3L, 2L, 3L, 2L, 2L, 2L, 3L, 3L, 2L, 2L, 1L, 
-2L, 1L, 2L, 2L, 2L, 2L, 3L, 3L, 2L, 2L, 2L, 2L, 2L, 3L, 2L, 2L, 
-2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 2L, 2L, 1L, 3L, 2L, 
-2L, 2L, 3L, 2L, 2L, 2L, 2L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 
-2L, 2L, 3L, 3L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 2L, 
-2L, 2L, 2L, 2L, 3L, 3L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
-2L, 2L, 2L, 2L, 2L, 2L, 3L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
-2L, 3L, 2L, 2L, 3L, 3L, 2L, 2L, 2L, 3L, 2L, 2L, 2L, 2L, 2L, 2L, 
-4L, 1L, 2L, 3L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 2L, 2L, 2L, 3L, 3L, 
-3L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 2L, 2L, 2L, 1L, 2L, 
-3L, 2L, 1L, 3L, 2L, 2L, 3L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
-2L, 1L, 3L, 3L, 2L, 2L, 2L, 3L, 2L, 3L, 3L, 2L, 2L, 2L, 3L, 3L, 
-2L, 2L, 2L, 2L, 2L, 2L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
-3L, 2L, 3L, 1L, 3L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 2L, 2L, 2L, 3L, 
-2L, 2L, 2L, 3L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
-2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 2L, 3L, 2L, 2L, 1L, 2L, 2L, 
-2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 2L, 2L, 2L, 3L, 3L, 
-2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 
-3L, 3L, 2L, 2L, 2L, 3L, 3L, 1L, 3L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
-3L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 2L, 2L, 3L, 2L, 
-2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 1L, 2L, 2L, 2L, 2L, 3L, 2L, 
-2L, 2L, 2L, 2L, 1L, 2L, 2L, 2L, 2L, 1L, 2L, 3L, 2L, 2L, 2L, 2L, 
-2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 2L, 2L, 2L, 2L, 2L, 3L, 2L, 
-3L, 3L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 2L, 2L, 
-2L, 2L, 2L, 1L, 2L, 2L, 2L, 2L, 3L, 3L, 2L, 2L, 2L, 2L, 2L, 2L, 
-2L, 2L, 3L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
-2L, 2L, 2L, 3L, 2L, 3L, 3L, 3L, 2L, 2L, 2L, 3L, 2L, 2L, 2L, 2L, 
-2L, 2L, 2L, 2L, 3L, 3L, 3L, 2L, 3L, 2L, 2L, 2L, 1L, 2L, 2L, 3L, 
-2L, 2L, 2L, 2L, 1L, 3L, 2L, 2L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
-2L, 2L, 2L, 2L, 2L, 3L, 2L, 2L, 2L, 2L, 3L, 2L, 3L, 2L, 2L, 2L, 
-1L, 2L, 2L, 2L, 2L, 3L, 2L, 1L, 2L, 3L, 2L, 2L, 2L, 2L, 2L, 3L, 
-2L, 2L, 3L, 2L, 3L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 3L, 2L, 3L, 2L, 
-3L, 2L, 2L, 2L, 2L, 3L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 2L, 2L, 
-2L, 1L, 2L, 2L, 3L, 3L, 2L, 3L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 
-2L, 1L, 2L, 2L, 3L, 2L, 2L, 2L, 2L, 1L, 2L, 2L, 2L, 2L, 2L, 3L, 
-3L, 2L, 3L, 2L, 2L, 3L, 1L, 2L, 2L, 3L, 2L, 3L, 2L, 2L, 3L, 2L, 
-2L, 3L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 3L, 2L, 2L, 2L, 3L, 2L, 
-3L, 3L, 3L, 2L, 3L, 2L, 3L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 2L, 2L, 
-3L, 2L, 2L, 2L, 2L, 3L, 2L, 2L, 1L, 2L, 1L, 2L, 2L, 2L, 2L, 2L, 
-2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 2L, 
-3L, 2L, 2L, 3L, 3L, 2L, 2L, 2L, 2L, 1L, 1L, 2L, 2L, 1L, 1L, 2L, 
-3L, 1L, 2L, 3L, 2L, 1L, 2L, 2L, 2L, 3L, 2L, 2L, 1L, 2L, 2L, 3L, 
-2L, 3L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 2L, 1L, 2L, 2L, 2L, 2L, 
-2L, 2L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 1L, 2L, 2L, 3L, 2L, 
-2L, 2L, 2L, 3L, 2L, 3L, 2L, 3L, 2L, 3L, 2L, 2L, 2L, 2L, 2L, 2L, 
-2L, 2L, 2L, 3L, 2L, 2L, 1L, 2L, 1L, 2L, 2L, 1L, 2L, 2L, 2L, 2L, 
-2L, 2L, 2L, 3L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 2L, 3L, 
-2L, 2L, 2L, 2L, 2L, 3L, 2L, 1L, 2L, 3L, 2L, 2L, 2L, 2L, 2L, 2L, 
-2L, 2L, 1L, 2L, 2L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 3L, 
-2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 2L, 2L, 2L, 2L, 2L, 2L, 
-2L, 3L, 2L, 2L, 2L, 3L, 2L, 2L, 3L, 2L, 2L, 2L, 3L, 1L, 2L, 2L, 
-2L, 3L, 2L, 2L, 3L, 2L, 2L, 2L, 4L, 3L, 3L, 1L, 2L, 2L, 2L, 3L, 
-2L, 3L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 2L, 3L, 2L, 3L, 2L, 2L, 3L, 
-1L, 2L, 3L, 2L, 3L, 2L, 2L, 3L, 2L, 2L, 3L, 2L, 2L, 2L, 2L, 2L, 
-2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 2L, 2L, 2L, 
-2L, 3L, 2L, 2L, 3L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 2L, 2L, 2L, 2L, 
-2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 2L, 2L, 2L, 2L, 2L, 3L, 2L, 
-2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 2L, 2L, 2L, 3L, 3L, 3L, 
-2L, 2L, 2L, 2L, 2L, 3L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 2L, 2L, 3L, 
-2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 4L, 2L, 3L, 2L, 2L, 2L, 2L, 2L, 
-3L, 3L, 2L, 2L, 3L, 3L, 2L, 3L, 2L, 3L, 2L, 2L, 3L, 3L, 2L, 2L, 
-3L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 2L, 2L, 2L, 2L, 
-1L, 2L, 2L, 2L, 2L, 3L, 2L, 3L, 2L, 3L, 3L, 2L, 2L, 1L, 2L, 2L, 
-2L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
-2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 
-2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 2L, 2L, 3L, 2L, 1L, 3L, 2L, 
-2L, 2L, 3L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
-2L, 2L, 2L, 1L, 2L, 1L, 2L, 2L, 2L, 3L, 3L, 1L, 2L, 1L, 2L, 2L, 
-3L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 2L, 3L, 2L, 2L, 2L, 2L, 3L, 2L, 
-2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 2L, 2L, 3L, 3L, 2L, 3L, 2L, 2L, 
-2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 2L, 2L, 3L, 1L, 2L, 2L, 3L, 2L, 
-3L, 2L, 3L, 2L, 3L, 2L, 3L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
-2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
-2L, 1L, 3L, 2L, 2L, 2L, 2L, 3L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
-2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 2L, 3L, 2L, 2L, 2L, 2L, 2L, 
-2L, 2L, 2L, 2L, 1L, 2L, 2L, 2L, 3L, 2L, 2L, 1L, 2L, 2L, 2L, 3L, 
-2L, 3L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 2L, 2L, 2L, 2L, 2L, 1L, 
-2L, 2L, 3L, 2L, 2L, 2L, 3L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 2L, 2L, 
-3L, 2L, 2L, 2L, 2L, 2L, 3L, 2L, 3L, 2L, 3L, 3L, 2L, 2L, 2L, 2L, 
-1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 2L, 2L, 2L, 
-2L, 2L, 3L, 2L, 2L, 2L, 2L, 3L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 2L, 
-2L, 2L, 2L, 2L, 2L, 3L, 2L, 3L, 2L, 2L, 2L, 2L, 3L, 2L, 2L, 2L
-), .Label = c("Divorced/Separated", "Married/Partnered", "Single", 
-"Widowed"), class = "factor")), .Names = c("age", "ethnicity", 
-"mstatus"), row.names = c(1L, 2L, 3L, 4L, 5L, 7L, 10L, 11L, 12L, 
-13L, 16L, 20L, 22L, 24L, 26L, 31L, 32L, 33L, 37L, 40L, 44L, 46L, 
-47L, 48L, 49L, 50L, 52L, 53L, 54L, 57L, 58L, 59L, 66L, 68L, 77L, 
-78L, 80L, 81L, 85L, 86L, 87L, 88L, 90L, 94L, 96L, 97L, 98L, 100L, 
-103L, 104L, 105L, 107L, 108L, 109L, 110L, 111L, 115L, 117L, 120L, 
-122L, 124L, 125L, 126L, 127L, 130L, 131L, 133L, 134L, 135L, 138L, 
-140L, 148L, 149L, 150L, 153L, 155L, 157L, 158L, 159L, 160L, 162L, 
-163L, 164L, 168L, 169L, 170L, 171L, 177L, 178L, 179L, 186L, 188L, 
-190L, 195L, 199L, 202L, 203L, 205L, 206L, 207L, 208L, 212L, 214L, 
-216L, 217L, 219L, 220L, 221L, 222L, 223L, 225L, 230L, 233L, 234L, 
-235L, 236L, 237L, 238L, 240L, 242L, 243L, 244L, 246L, 248L, 250L, 
-253L, 257L, 259L, 260L, 262L, 263L, 264L, 265L, 266L, 268L, 269L, 
-270L, 277L, 279L, 281L, 284L, 286L, 288L, 289L, 291L, 292L, 294L, 
-295L, 296L, 303L, 305L, 307L, 309L, 310L, 311L, 312L, 313L, 314L, 
-315L, 316L, 319L, 320L, 321L, 322L, 325L, 326L, 327L, 328L, 330L, 
-331L, 333L, 334L, 336L, 337L, 338L, 340L, 341L, 346L, 347L, 349L, 
-351L, 352L, 357L, 358L, 360L, 362L, 363L, 368L, 370L, 371L, 373L, 
-374L, 377L, 382L, 383L, 384L, 387L, 388L, 391L, 395L, 399L, 402L, 
-405L, 406L, 407L, 408L, 411L, 413L, 417L, 419L, 420L, 421L, 422L, 
-424L, 425L, 427L, 436L, 444L, 447L, 448L, 456L, 458L, 459L, 460L, 
-462L, 467L, 469L, 472L, 477L, 480L, 481L, 487L, 489L, 491L, 494L, 
-495L, 499L, 501L, 503L, 505L, 509L, 510L, 512L, 515L, 518L, 520L, 
-522L, 523L, 524L, 525L, 528L, 531L, 535L, 536L, 539L, 540L, 542L, 
-543L, 544L, 545L, 552L, 553L, 554L, 556L, 557L, 558L, 559L, 560L, 
-562L, 563L, 567L, 574L, 575L, 576L, 577L, 578L, 579L, 580L, 584L, 
-585L, 586L, 588L, 589L, 591L, 592L, 594L, 595L, 596L, 598L, 600L, 
-602L, 603L, 613L, 618L, 626L, 627L, 628L, 629L, 633L, 635L, 636L, 
-637L, 638L, 639L, 640L, 641L, 643L, 646L, 647L, 648L, 651L, 652L, 
-653L, 654L, 655L, 656L, 657L, 659L, 661L, 662L, 666L, 669L, 670L, 
-671L, 672L, 674L, 675L, 677L, 679L, 681L, 682L, 685L, 687L, 690L, 
-692L, 693L, 708L, 709L, 710L, 711L, 712L, 716L, 719L, 721L, 724L, 
-733L, 739L, 742L, 745L, 746L, 748L, 749L, 750L, 751L, 752L, 753L, 
-754L, 756L, 757L, 761L, 762L, 763L, 764L, 769L, 770L, 773L, 774L, 
-775L, 776L, 778L, 781L, 783L, 785L, 788L, 789L, 790L, 792L, 793L, 
-795L, 796L, 797L, 798L, 801L, 802L, 803L, 807L, 810L, 811L, 813L, 
-814L, 815L, 818L, 820L, 823L, 825L, 826L, 828L, 829L, 831L, 832L, 
-834L, 839L, 841L, 844L, 847L, 849L, 851L, 853L, 855L, 857L, 862L, 
-863L, 865L, 872L, 873L, 880L, 884L, 885L, 886L, 890L, 894L, 895L, 
-896L, 897L, 898L, 900L, 901L, 902L, 904L, 905L, 906L, 907L, 910L, 
-912L, 916L, 918L, 919L, 920L, 924L, 933L, 934L, 935L, 936L, 937L, 
-938L, 940L, 941L, 943L, 944L, 945L, 953L, 955L, 956L, 957L, 958L, 
-960L, 961L, 962L, 967L, 972L, 973L, 976L, 977L, 978L, 980L, 981L, 
-982L, 989L, 990L, 995L, 996L, 997L, 998L, 1003L, 1004L, 1006L, 
-1007L, 1008L, 1009L, 1010L, 1011L, 1017L, 1020L, 1022L, 1024L, 
-1027L, 1029L, 1030L, 1031L, 1033L, 1034L, 1036L, 1037L, 1038L, 
-1040L, 1041L, 1042L, 1043L, 1044L, 1045L, 1046L, 1048L, 1049L, 
-1052L, 1055L, 1056L, 1058L, 1059L, 1060L, 1061L, 1062L, 1063L, 
-1064L, 1065L, 1066L, 1067L, 1068L, 1069L, 1070L, 1072L, 1073L, 
-1075L, 1076L, 1077L, 1079L, 1080L, 1081L, 1083L, 1084L, 1086L, 
-1087L, 1088L, 1091L, 1092L, 1093L, 1097L, 1100L, 1101L, 1104L, 
-1107L, 1109L, 1112L, 1116L, 1119L, 1123L, 1124L, 1126L, 1127L, 
-1128L, 1129L, 1131L, 1132L, 1133L, 1134L, 1135L, 1137L, 1138L, 
-1139L, 1140L, 1141L, 1143L, 1144L, 1145L, 1147L, 1148L, 1149L, 
-1151L, 1154L, 1156L, 1166L, 1170L, 1173L, 1174L, 1179L, 1182L, 
-1184L, 1186L, 1191L, 1193L, 1196L, 1198L, 1199L, 1201L, 1202L, 
-1203L, 1209L, 1210L, 1223L, 1224L, 1225L, 1230L, 1231L, 1232L, 
-1237L, 1238L, 1239L, 1241L, 1245L, 1251L, 1253L, 1256L, 1257L, 
-1259L, 1260L, 1261L, 1262L, 1266L, 1267L, 1272L, 1273L, 1275L, 
-1276L, 1279L, 1281L, 1283L, 1284L, 1285L, 1286L, 1289L, 1291L, 
-1292L, 1295L, 1297L, 1298L, 1299L, 1301L, 1302L, 1303L, 1308L, 
-1314L, 1315L, 1317L, 1318L, 1319L, 1321L, 1323L, 1325L, 1326L, 
-1327L, 1328L, 1330L, 1333L, 1340L, 1341L, 1342L, 1345L, 1346L, 
-1347L, 1348L, 1350L, 1352L, 1355L, 1356L, 1358L, 1360L, 1367L, 
-1369L, 1377L, 1382L, 1383L, 1384L, 1386L, 1387L, 1388L, 1389L, 
-1391L, 1393L, 1394L, 1395L, 1397L, 1398L, 1401L, 1405L, 1406L, 
-1409L, 1412L, 1413L, 1415L, 1418L, 1420L, 1422L, 1424L, 1429L, 
-1432L, 1433L, 1436L, 1437L, 1443L, 1444L, 1450L, 1451L, 1452L, 
-1456L, 1457L, 1463L, 1464L, 1465L, 1466L, 1467L, 1468L, 1469L, 
-1470L, 1471L, 1472L, 1473L, 1474L, 1475L, 1476L, 1478L, 1479L, 
-1480L, 1481L, 1482L, 1485L, 1488L, 1489L, 1490L, 1494L, 1495L, 
-1497L, 1498L, 1499L, 1500L, 1501L, 1502L, 1504L, 1506L, 1507L, 
-1509L, 1510L, 1511L, 1512L, 1513L, 1514L, 1515L, 1516L, 1518L, 
-1519L, 1520L, 1522L, 1523L, 1524L, 1525L, 1526L, 1529L, 1530L, 
-1534L, 1535L, 1536L, 1538L, 1539L, 1540L, 1541L, 1542L, 1543L, 
-1544L, 1545L, 1547L, 1549L, 1550L, 1552L, 1558L, 1559L, 1562L, 
-1566L, 1567L, 1569L, 1575L, 1576L, 1581L, 1582L, 1584L, 1587L, 
-1589L, 1591L, 1593L, 1594L, 1595L, 1596L, 1597L, 1599L, 1600L, 
-1601L, 1603L, 1604L, 1606L, 1607L, 1609L, 1610L, 1613L, 1614L, 
-1615L, 1617L, 1618L, 1619L, 1620L, 1621L, 1622L, 1623L, 1624L, 
-1626L, 1627L, 1628L, 1629L, 1630L, 1631L, 1632L, 1633L, 1634L, 
-1638L, 1639L, 1640L, 1641L, 1642L, 1643L, 1644L, 1645L, 1646L, 
-1647L, 1650L, 1651L, 1652L, 1653L, 1655L, 1656L, 1657L, 1658L, 
-1659L, 1660L, 1661L, 1662L, 1663L, 1666L, 1667L, 1668L, 1669L, 
-1670L, 1671L, 1672L, 1673L, 1674L, 1675L, 1676L, 1677L, 1678L, 
-1679L, 1681L, 1682L, 1683L, 1685L, 1687L, 1688L, 1689L, 1690L, 
-1691L, 1692L, 1694L, 1696L, 1697L, 1699L, 1701L, 1702L, 1704L, 
-1708L, 1709L, 1711L, 1713L, 1715L, 1716L, 1718L, 1721L, 1722L, 
-1723L, 1724L, 1725L, 1727L, 1728L, 1730L, 1731L, 1736L, 1737L, 
-1738L, 1741L, 1742L, 1745L, 1748L, 1749L, 1751L, 1752L, 1753L, 
-1755L, 1756L, 1758L, 1759L, 1761L, 1764L, 1765L, 1766L, 1767L, 
-1769L, 1770L, 1771L, 1773L, 1774L, 1775L, 1776L, 1777L, 1778L, 
-1779L, 1780L, 1781L, 1782L, 1783L, 1784L, 1785L, 1786L, 1787L, 
-1788L, 1790L, 1791L, 1792L, 1793L, 1794L, 1796L, 1797L, 1798L, 
-1800L, 1801L, 1802L, 1803L, 1804L, 1805L, 1806L, 1807L, 1808L, 
-1810L, 1811L, 1813L, 1814L, 1815L, 1816L, 1818L, 1819L, 1820L, 
-1822L, 1828L, 1829L, 1832L, 1834L, 1835L, 1836L, 1837L, 1839L, 
-1840L, 1841L, 1843L, 1845L, 1849L, 1852L, 1855L, 1856L, 1857L, 
-1858L, 1859L, 1860L, 1861L, 1862L, 1863L, 1865L, 1867L, 1870L, 
-1871L, 1874L, 1880L, 1881L, 1882L, 1883L, 1884L, 1885L, 1886L, 
-1888L, 1889L, 1891L, 1892L, 1893L, 1894L, 1897L, 1903L, 1904L, 
-1907L, 1908L, 1909L, 1911L, 1912L, 1913L, 1915L, 1917L, 1921L, 
-1925L, 1926L, 1929L, 1930L, 1931L, 1932L, 1935L, 1936L, 1937L, 
-1939L, 1942L, 1943L, 1944L, 1945L, 1947L, 1950L, 1954L, 1956L, 
-1959L, 1962L, 1963L, 1964L, 1966L, 1973L, 1976L, 1977L, 1978L, 
-1979L, 1980L, 1981L, 1982L, 1983L, 1984L, 1985L, 1986L, 1988L, 
-1990L, 1991L, 1992L, 1993L, 1995L, 1996L, 1997L, 1999L, 2000L, 
-2002L, 2003L, 2004L, 2005L, 2008L, 2009L, 2011L, 2013L, 2014L, 
-2016L, 2017L, 2019L, 2020L, 2021L, 2022L, 2023L, 2024L, 2026L, 
-2028L, 2030L, 2031L, 2033L, 2035L, 2036L, 2037L, 2039L, 2040L, 
-2041L, 2042L, 2043L, 2046L, 2049L, 2053L, 2056L, 2059L, 2060L, 
-2061L, 2063L, 2065L, 2066L, 2067L, 2069L, 2070L, 2075L, 2077L, 
-2081L, 2083L, 2087L, 2088L, 2089L, 2091L, 2092L, 2096L, 2097L, 
-2099L, 2105L, 2107L, 2110L, 2117L, 2118L, 2119L, 2122L, 2123L, 
-2125L, 2126L, 2128L, 2130L, 2131L, 2132L, 2133L, 2136L, 2137L, 
-2138L, 2139L, 2142L, 2143L, 2144L, 2145L, 2146L, 2148L, 2149L, 
-2150L, 2151L, 2152L, 2153L, 2156L, 2157L, 2158L, 2160L, 2161L, 
-2162L, 2165L, 2166L, 2167L, 2168L, 2171L, 2172L, 2173L, 2174L, 
-2176L, 2177L, 2178L, 2181L, 2184L, 2185L, 2188L, 2189L, 2190L, 
-2192L, 2193L, 2195L, 2196L, 2200L, 2201L, 2204L, 2206L, 2210L, 
-2212L, 2222L, 2223L, 2228L, 2230L, 2232L, 2234L, 2235L, 2236L, 
-2237L, 2240L, 2242L, 2255L, 2257L, 2258L, 2259L, 2261L, 2262L, 
-2269L, 2270L, 2274L, 2280L, 2283L, 2284L, 2290L, 2299L, 2301L, 
-2303L, 2304L, 2305L, 2311L, 2313L, 2314L, 2316L, 2318L, 2319L, 
-2322L, 2325L, 2327L, 2329L, 2330L, 2332L, 2336L, 2337L, 2339L, 
-2341L, 2343L, 2349L, 2350L, 2351L, 2352L, 2353L, 2354L, 2356L, 
-2358L, 2372L, 2377L, 2378L, 2379L, 2385L, 2388L, 2390L, 2391L, 
-2395L, 2404L, 2406L, 2407L, 2409L, 2410L, 2411L, 2412L, 2413L, 
-2416L, 2417L, 2420L, 2421L, 2422L, 2424L, 2425L, 2428L, 2429L, 
-2431L, 2433L, 2434L, 2435L, 2436L, 2438L, 2439L, 2440L, 2443L, 
-2445L, 2446L, 2447L, 2448L, 2449L, 2450L, 2451L, 2452L, 2453L, 
-2454L, 2455L, 2461L, 2462L, 2463L, 2465L, 2466L, 2468L, 2469L, 
-2470L, 2471L, 2472L, 2474L, 2475L, 2476L, 2477L, 2478L, 2479L, 
-2480L, 2484L, 2486L, 2488L, 2491L, 2492L, 2493L, 2496L, 2497L, 
-2498L, 2501L, 2502L, 2503L, 2504L, 2506L, 2507L, 2511L, 2514L, 
-2518L, 2519L, 2520L, 2521L, 2523L, 2525L, 2527L, 2529L, 2532L, 
-2533L, 2534L, 2536L, 2537L, 2538L, 2540L, 2541L, 2542L, 2543L, 
-2544L, 2548L, 2549L, 2551L, 2552L, 2553L, 2554L, 2556L, 2557L, 
-2558L, 2559L, 2561L, 2563L, 2566L, 2567L, 2568L, 2569L, 2572L, 
-2574L, 2575L, 2577L, 2578L, 2579L, 2582L, 2584L, 2585L, 2586L, 
-2589L, 2590L, 2591L, 2593L, 2594L, 2595L, 2598L, 2600L, 2601L, 
-2602L, 2603L, 2604L, 2605L, 2607L, 2608L, 2609L, 2610L, 2612L, 
-2614L, 2615L, 2616L, 2619L, 2620L, 2625L, 2628L, 2629L, 2632L, 
-2633L, 2635L, 2636L, 2639L, 2640L, 2641L, 2645L, 2646L, 2651L, 
-2655L, 2657L, 2659L, 2661L, 2664L, 2665L, 2666L, 2668L, 2669L, 
-2670L, 2671L, 2677L, 2679L, 2680L, 2681L, 2682L, 2683L, 2684L, 
-2686L, 2689L, 2691L, 2692L, 2695L, 2696L, 2697L, 2706L, 2712L, 
-2716L, 2717L, 2719L, 2720L, 2721L, 2723L, 2724L, 2734L, 2735L, 
-2736L, 2737L, 2741L, 2742L, 2743L, 2744L, 2748L, 2749L, 2750L, 
-2753L, 2754L, 2755L, 2758L, 2759L, 2760L, 2761L, 2764L, 2768L, 
-2770L, 2771L, 2772L, 2774L, 2777L, 2780L, 2782L, 2788L, 2790L, 
-2791L, 2796L, 2797L, 2798L, 2800L, 2802L, 2803L, 2804L, 2805L, 
-2810L, 2811L, 2816L, 2818L, 2819L, 2820L, 2821L, 2824L, 2825L, 
-2828L, 2830L, 2832L, 2835L, 2836L, 2837L, 2842L, 2845L, 2847L, 
-2848L, 2849L, 2850L, 2855L, 2856L, 2860L, 2863L, 2866L, 2876L, 
-2877L, 2889L, 2891L, 2894L, 2895L, 2896L, 2898L, 2902L, 2904L, 
-2905L, 2914L, 2916L, 2921L, 2922L, 2924L, 2928L, 2933L, 2934L, 
-2936L, 2937L, 2939L, 2941L, 2942L, 2944L, 2945L, 2946L, 2948L, 
-2950L, 2952L, 2955L, 2957L, 2961L, 2962L, 2963L, 2968L, 2969L, 
-2971L, 2972L, 2975L, 2976L, 2977L, 2978L, 2979L, 2982L, 2983L, 
-2985L, 2988L, 2990L, 2991L, 2992L, 2996L, 2999L, 3000L, 3001L, 
-3002L, 3005L, 3008L, 3009L, 3011L, 3014L, 3015L, 3016L, 3017L, 
-3022L, 3024L, 3027L, 3028L, 3030L, 3031L, 3034L, 3035L, 3038L, 
-3040L, 3043L, 3046L, 3047L, 3051L, 3052L, 3058L, 3062L, 3066L, 
-3072L, 3073L, 3074L, 3078L, 3082L, 3083L, 3084L, 3085L, 3088L, 
-3089L, 3090L, 3092L, 3093L, 3094L, 3096L, 3097L, 3100L, 3102L, 
-3104L, 3105L, 3107L, 3110L, 3111L, 3112L, 3113L, 3116L, 3121L, 
-3124L, 3128L, 3131L, 3132L, 3133L, 3135L, 3136L, 3139L, 3141L, 
-3145L, 3146L, 3148L, 3149L, 3151L, 3152L, 3153L, 3155L, 3157L, 
-3160L, 3161L, 3162L, 3170L, 3172L, 3173L, 3174L, 3175L, 3176L, 
-3177L, 3180L, 3183L, 3184L, 3185L, 3186L, 3188L, 3190L, 3198L, 
-3204L, 3206L, 3209L, 3211L, 3212L, 3216L, 3218L, 3219L, 3228L, 
-3230L, 3232L, 3234L, 3235L, 3236L, 3237L, 3239L, 3240L, 3244L, 
-3245L, 3246L, 3247L, 3249L, 3251L, 3254L, 3257L, 3258L, 3260L, 
-3261L, 3270L, 3271L, 3272L, 3274L, 3275L, 3276L, 3280L, 3284L, 
-3290L, 3292L, 3294L, 3295L, 3303L, 3304L, 3309L, 3315L, 3317L, 
-3318L, 3319L, 3322L, 3325L, 3326L, 3327L, 3328L, 3329L, 3331L, 
-3332L, 3335L, 3337L, 3338L, 3339L, 3341L, 3342L, 3349L, 3353L, 
-3355L, 3360L, 3364L, 3365L, 3366L, 3367L, 3369L, 3370L, 3376L, 
-3379L, 3381L, 3382L, 3384L, 3386L, 3387L, 3393L, 3395L, 3398L, 
-3399L, 3400L, 3404L, 3408L, 3410L, 3411L, 3413L, 3414L, 3417L, 
-3421L, 3422L, 3423L, 3424L, 3426L, 3428L, 3430L, 3433L, 3435L, 
-3437L, 3439L, 3443L, 3444L, 3446L, 3447L, 3448L, 3449L, 3450L, 
-3451L, 3453L, 3454L, 3458L, 3460L, 3462L, 3463L, 3464L, 3467L, 
-3468L, 3470L, 3473L, 3479L, 3481L, 3483L, 3488L, 3490L, 3491L, 
-3492L, 3493L, 3494L, 3498L, 3499L, 3501L, 3504L, 3505L, 3506L, 
-3508L, 3510L, 3511L, 3512L, 3513L, 3515L, 3520L, 3524L, 3525L, 
-3528L, 3529L, 3530L, 3531L, 3532L, 3533L, 3536L, 3543L, 3544L, 
-3545L, 3546L, 3548L, 3549L, 3551L, 3555L, 3556L, 3557L, 3558L, 
-3560L, 3561L, 3562L, 3564L, 3571L, 3577L, 3579L, 3582L, 3584L, 
-3585L, 3586L, 3587L, 3588L, 3589L, 3590L, 3591L, 3592L, 3593L, 
-3595L, 3597L, 3605L, 3606L, 3608L, 3613L, 3614L, 3615L, 3619L, 
-3620L, 3621L, 3622L, 3623L, 3625L, 3628L, 3629L, 3630L, 3634L, 
-3638L, 3641L, 3643L, 3644L, 3645L, 3646L, 3647L, 3649L, 3650L, 
-3651L, 3654L, 3656L, 3658L, 3659L, 3661L, 3662L, 3665L, 3666L, 
-3669L, 3670L, 3671L, 3672L, 3673L, 3674L, 3677L, 3678L, 3680L, 
-3681L, 3687L, 3689L, 3692L, 3695L, 3696L, 3697L, 3700L, 3702L, 
-3706L, 3712L, 3713L, 3716L, 3718L, 3720L, 3722L, 3723L, 3724L, 
-3727L, 3728L, 3729L, 3731L, 3732L, 3733L, 3736L, 3737L, 3738L, 
-3739L, 3741L, 3742L, 3744L, 3745L, 3747L, 3749L, 3752L, 3753L, 
-3755L, 3756L, 3760L, 3762L, 3763L, 3764L, 3766L, 3767L, 3768L, 
-3771L, 3775L, 3776L, 3778L, 3780L, 3781L, 3782L, 3783L, 3785L, 
-3788L, 3789L, 3791L, 3792L, 3794L, 3795L, 3796L, 3797L, 3800L, 
-3801L, 3806L, 3807L, 3808L, 3809L, 3813L, 3817L, 3818L, 3822L, 
-3824L, 3827L, 3829L, 3830L, 3831L, 3833L, 3834L, 3836L, 3837L, 
-3839L, 3843L, 3848L, 3849L, 3854L, 3855L, 3857L, 3862L, 3864L, 
-3867L, 3868L, 3869L, 3872L, 3874L, 3876L, 3877L, 3878L, 3879L, 
-3880L, 3883L, 3884L, 3885L, 3888L, 3892L, 3893L, 3895L, 3898L, 
-3901L, 3912L, 3913L, 3916L, 3918L, 3921L, 3922L, 3924L, 3925L, 
-3930L, 3931L, 3936L, 3938L, 3943L, 3944L, 3945L, 3947L, 3951L, 
-3952L, 3954L, 3959L, 3965L, 3966L, 3968L, 3971L, 3974L, 3977L, 
-3980L, 3982L, 3983L, 3985L, 3986L, 3987L, 3988L, 3990L, 3991L, 
-3995L, 3996L, 3999L, 4000L, 4003L, 4006L, 4008L, 4009L, 4011L, 
-4014L, 4018L, 4019L, 4021L, 4022L, 4023L, 4024L, 4026L, 4027L, 
-4028L, 4029L, 4030L, 4033L, 4034L, 4035L, 4042L, 4044L, 4049L, 
-4050L, 4055L, 4057L, 4058L, 4059L, 4066L, 4069L, 4074L, 4075L, 
-4076L, 4077L, 4079L, 4081L, 4082L, 4083L, 4088L, 4091L, 4093L, 
-4094L, 4096L, 4098L, 4099L, 4100L, 4102L, 4104L, 4105L, 4106L, 
-4109L, 4114L, 4120L, 4122L, 4123L, 4125L, 4131L, 4132L, 4137L, 
-4141L, 4145L, 4146L, 4147L, 4150L, 4151L, 4152L, 4153L, 4154L, 
-4157L, 4160L, 4161L, 4163L, 4164L, 4166L, 4172L, 4173L, 4174L, 
-4175L, 4176L, 4178L, 4179L, 4180L, 4181L, 4184L, 4185L, 4186L, 
-4188L, 4189L, 4190L, 4193L, 4194L, 4195L, 4197L, 4198L, 4200L, 
-4203L, 4204L, 4205L, 4207L, 4209L, 4210L, 4211L, 4213L, 4214L, 
-4217L, 4222L, 4224L, 4225L, 4229L, 4233L, 4237L, 4238L, 4240L, 
-4242L, 4243L, 4246L, 4247L, 4249L, 4255L, 4256L, 4257L, 4260L, 
-4261L, 4262L, 4265L, 4270L, 4272L, 4273L, 4276L, 4277L, 4282L, 
-4283L, 4287L, 4290L, 4291L, 4292L, 4293L, 4294L, 4296L, 4298L, 
-4301L, 4303L, 4310L, 4311L, 4313L, 4315L, 4317L, 4318L, 4322L, 
-4326L, 4328L, 4329L, 4330L, 4332L, 4333L, 4336L, 4337L, 4349L, 
-4350L, 4352L, 4354L, 4358L, 4362L, 4365L, 4371L, 4373L, 4374L, 
-4376L, 4377L, 4378L, 4382L, 4387L, 4390L, 4391L, 4393L, 4396L, 
-4399L, 4400L, 4401L, 4402L, 4403L, 4404L, 4405L, 4407L, 4410L, 
-4411L, 4412L, 4413L, 4415L, 4417L, 4420L, 4421L, 4422L, 4423L, 
-4425L, 4428L, 4429L, 4430L, 4432L, 4433L, 4435L, 4440L, 4444L, 
-4445L, 4446L, 4447L, 4449L, 4450L, 4451L, 4452L, 4453L, 4455L, 
-4460L, 4465L, 4470L, 4471L, 4475L, 4476L, 4481L, 4483L, 4484L, 
-4486L, 4489L, 4495L, 4496L, 4497L, 4501L, 4502L, 4505L, 4506L, 
-4507L, 4512L, 4514L, 4515L, 4517L, 4518L, 4521L, 4525L, 4526L, 
-4527L, 4528L, 4529L, 4530L, 4532L, 4533L, 4536L, 4537L, 4541L, 
-4542L, 4543L, 4546L, 4548L, 4550L, 4551L, 4554L, 4557L, 4560L, 
-4567L, 4570L, 4573L, 4574L, 4575L, 4576L, 4581L, 4583L, 4587L, 
-4588L, 4590L, 4593L, 4594L, 4595L, 4598L, 4599L, 4600L, 4603L, 
-4606L, 4607L, 4612L, 4619L, 4620L, 4622L, 4623L, 4625L, 4626L, 
-4630L, 4633L, 4638L, 4642L, 4644L, 4646L, 4649L, 4652L, 4656L, 
-4659L, 4661L, 4663L, 4665L, 4667L, 4669L, 4670L, 4671L, 4673L, 
-4674L, 4678L, 4680L, 4682L, 4687L, 4692L, 4693L, 4694L, 4696L, 
-4697L, 4701L, 4702L, 4705L, 4706L, 4709L, 4710L, 4711L, 4713L, 
-4714L, 4716L, 4719L, 4720L, 4721L, 4724L, 4727L, 4729L, 4734L, 
-4736L, 4741L, 4743L, 4746L, 4753L, 4755L, 4756L, 4760L, 4763L, 
-4764L, 4770L, 4772L, 4777L, 4779L, 4780L, 4781L, 4784L, 4787L, 
-4788L, 4789L, 4791L, 4792L, 4793L, 4796L, 4797L, 4798L, 4799L, 
-4800L, 4802L, 4806L, 4808L, 4809L, 4814L, 4815L, 4816L, 4817L, 
-4818L, 4821L, 4824L, 4827L, 4831L, 4832L, 4833L, 4836L, 4838L, 
-4839L, 4840L, 4843L, 4844L, 4846L, 4848L, 4852L, 4854L, 4855L, 
-4858L, 4859L, 4862L, 4864L, 4867L, 4868L, 4871L, 4872L, 4878L, 
-4880L, 4882L, 4884L, 4885L, 4886L, 4887L, 4889L, 4891L, 4892L, 
-4893L, 4894L, 4895L, 4896L, 4899L, 4901L, 4902L, 4904L, 4906L, 
-4907L, 4908L, 4913L, 4914L, 4915L, 4916L, 4917L, 4919L, 4920L, 
-4931L, 4932L, 4934L, 4937L, 4941L, 4942L, 4944L, 4947L, 4949L, 
-4952L, 4957L, 4964L, 4968L, 4970L, 4971L, 4972L, 4981L, 4982L, 
-4983L, 4984L, 4987L, 4988L, 4992L, 4995L, 5000L, 5002L, 5003L, 
-5009L, 5013L, 5019L, 5020L, 5021L, 5022L, 5023L, 5024L, 5025L, 
-5026L, 5028L, 5029L, 5033L, 5036L, 5037L, 5038L, 5039L, 5040L, 
-5041L, 5043L, 5044L, 5045L, 5046L, 5047L, 5048L, 5050L, 5051L, 
-5052L, 5053L, 5054L, 5056L, 5057L, 5058L, 5059L, 5060L, 5061L, 
-5062L, 5063L, 5064L, 5065L, 5066L, 5068L, 5069L, 5070L, 5071L, 
-5073L, 5075L, 5076L, 5078L, 5080L, 5082L, 5083L, 5084L, 5085L, 
-5086L, 5087L, 5090L, 5092L, 5094L, 5096L, 5098L, 5100L, 5102L, 
-5103L, 5104L, 5107L, 5111L, 5112L, 5113L, 5114L, 5115L, 5116L, 
-5118L, 5119L, 5120L, 5121L, 5122L, 5124L, 5125L, 5126L, 5129L, 
-5131L, 5135L, 5136L, 5137L, 5138L, 5139L, 5140L, 5141L, 5142L, 
-5143L, 5144L, 5145L, 5147L, 5148L, 5149L, 5150L, 5151L, 5153L, 
-5154L, 5155L, 5156L, 5157L, 5158L, 5161L, 5162L, 5163L, 5165L, 
-5166L, 5167L, 5169L, 5170L, 5172L, 5173L, 5175L, 5176L, 5177L, 
-5178L, 5179L, 5180L, 5181L, 5182L, 5183L, 5184L, 5185L, 5186L, 
-5187L, 5188L, 5189L, 5190L, 5191L, 5192L, 5193L, 5195L, 5196L, 
-5197L, 5198L, 5199L, 5201L, 5202L, 5203L, 5205L, 5206L, 5207L, 
-5208L, 5209L, 5210L, 5214L, 5215L, 5217L, 5218L, 5219L, 5221L, 
-5222L, 5223L, 5224L, 5228L, 5229L, 5230L, 5231L, 5232L, 5234L, 
-5235L, 5236L, 5239L, 5240L, 5241L, 5242L, 5243L, 5245L, 5246L, 
-5248L, 5249L, 5250L, 5251L, 5252L, 5253L, 5254L, 5256L, 5257L, 
-5258L, 5259L, 5260L, 5263L, 5264L, 5265L, 5268L, 5271L, 5272L, 
-5273L, 5274L, 5275L, 5276L, 5277L, 5278L, 5281L, 5283L, 5284L, 
-5286L, 5290L, 5292L, 5294L, 5295L, 5296L, 5298L, 5301L, 5302L, 
-5303L, 5304L, 5305L, 5306L, 5307L, 5308L, 5309L, 5310L, 5311L, 
-5312L, 5313L, 5315L, 5318L, 5319L, 5320L, 5322L, 5326L, 5327L, 
-5329L, 5330L, 5332L, 5335L, 5336L, 5337L, 5338L, 5339L, 5340L, 
-5341L, 5342L, 5345L, 5346L, 5347L, 5348L, 5349L, 5350L, 5351L, 
-5352L, 5353L, 5355L, 5356L, 5358L, 5360L, 5363L, 5364L, 5365L, 
-5366L, 5368L, 5369L, 5370L, 5371L, 5372L, 5373L, 5376L, 5378L, 
-5380L, 5381L, 5382L, 5383L, 5384L, 5385L, 5386L, 5388L, 5389L, 
-5393L, 5395L, 5396L, 5397L, 5398L, 5400L, 5401L, 5402L, 5403L, 
-5405L, 5406L, 5407L, 5408L, 5409L, 5411L, 5415L, 5416L, 5417L, 
-5418L, 5419L, 5421L, 5422L, 5423L, 5424L, 5425L, 5426L, 5428L, 
-5429L, 5430L, 5431L, 5432L, 5436L, 5437L, 5438L, 5441L, 5443L, 
-5444L, 5446L, 5447L, 5453L, 5454L, 5455L, 5457L, 5459L, 5460L, 
-5462L, 5463L, 5465L, 5466L, 5469L, 5470L, 5471L, 5472L, 5474L, 
-5476L, 5477L, 5478L, 5480L, 5481L, 5482L, 5485L, 5486L, 5487L, 
-5489L, 5490L, 5492L, 5495L, 5498L, 5501L, 5502L, 5504L, 5505L, 
-5506L, 5510L, 5511L, 5512L, 5517L, 5519L, 5520L, 5521L, 5522L, 
-5524L, 5530L, 5531L, 5532L, 5536L, 5538L, 5543L, 5545L, 5547L, 
-5548L, 5549L, 5550L, 5551L, 5555L, 5558L, 5559L, 5561L, 5562L, 
-5563L, 5567L, 5569L, 5571L, 5573L, 5576L, 5577L, 5578L, 5579L, 
-5583L, 5587L, 5588L, 5589L, 5590L, 5591L, 5593L, 5596L, 5597L, 
-5598L, 5599L, 5600L, 5601L, 5602L, 5605L, 5606L, 5608L, 5609L, 
-5610L, 5611L, 5612L, 5613L, 5614L, 5615L, 5616L, 5617L, 5621L, 
-5622L, 5623L, 5624L, 5625L, 5626L, 5627L, 5628L, 5630L, 5632L, 
-5633L, 5634L, 5635L, 5636L, 5637L, 5638L, 5639L, 5640L, 5641L, 
-5643L, 5644L, 5645L, 5646L, 5647L, 5648L, 5649L, 5650L, 5651L, 
-5652L, 5654L, 5655L, 5656L, 5657L, 5659L, 5660L, 5663L, 5665L, 
-5666L, 5667L, 5668L, 5669L, 5670L, 5671L, 5672L, 5673L, 5674L, 
-5675L, 5677L, 5678L, 5679L, 5680L, 5681L, 5684L, 5685L, 5686L, 
-5687L, 5689L, 5690L, 5691L, 5692L, 5694L, 5696L, 5697L, 5703L, 
-5704L, 5705L, 5706L, 5708L, 5709L, 5711L, 5712L, 5713L, 5715L, 
-5716L, 5718L, 5719L, 5726L, 5727L, 5728L, 5729L, 5730L, 5733L, 
-5735L, 5739L, 5740L, 5744L, 5746L, 5748L, 5750L, 5753L, 5754L, 
-5757L, 5760L, 5761L, 5762L, 5768L, 5769L, 5770L, 5771L, 5772L, 
-5773L, 5774L, 5775L, 5776L, 5777L, 5778L, 5779L, 5780L, 5782L, 
-5784L, 5785L, 5787L, 5788L, 5789L, 5790L, 5792L, 5793L, 5795L, 
-5796L, 5799L, 5800L, 5801L, 5802L, 5804L, 5805L, 5807L, 5808L, 
-5809L, 5810L, 5811L, 5814L, 5815L, 5819L, 5820L, 5821L, 5823L, 
-5824L, 5825L, 5826L, 5829L, 5830L, 5832L, 5833L, 5834L, 5836L, 
-5837L, 5838L, 5842L, 5844L, 5845L, 5846L, 5847L, 5848L, 5849L, 
-5850L, 5852L, 5853L, 5854L, 5855L, 5857L, 5858L, 5859L, 5860L, 
-5861L, 5862L, 5865L, 5867L, 5868L, 5869L, 5870L, 5872L, 5873L, 
-5874L, 5875L, 5876L, 5877L, 5878L, 5879L, 5880L, 5881L, 5882L, 
-5883L, 5885L, 5886L, 5887L, 5888L, 5889L, 5891L, 5892L, 5893L, 
-5894L, 5895L, 5896L, 5897L, 5898L, 5899L, 5900L, 5903L, 5905L, 
-5906L, 5907L, 5908L, 5909L, 5910L, 5912L, 5915L, 5916L, 5917L, 
-5919L, 5920L, 5923L, 5924L, 5925L, 5926L, 5927L, 5928L, 5929L, 
-5931L, 5933L, 5934L, 5936L, 5939L, 5941L, 5944L, 5945L, 5946L, 
-5948L, 5949L, 5950L, 5951L, 5953L, 5954L, 5955L, 5958L, 5960L, 
-5961L, 5962L, 5963L, 5964L, 5968L, 5969L, 5971L, 5972L, 5973L, 
-5974L, 5975L, 5976L, 5977L, 5978L, 5979L, 5980L, 5983L, 5985L, 
-5986L, 5987L, 5988L, 5990L, 5992L, 5994L, 5996L, 5998L, 5999L, 
-6000L, 6001L, 6002L, 6004L, 6005L, 6006L, 6007L, 6008L, 6010L, 
-6011L, 6012L, 6013L, 6015L, 6016L, 6017L, 6019L, 6022L, 6023L, 
-6024L, 6026L, 6027L, 6029L, 6030L, 6031L, 6032L, 6034L, 6035L, 
-6036L, 6037L, 6038L, 6039L, 6041L, 6043L, 6045L, 6047L, 6050L, 
-6051L, 6053L, 6055L, 6056L, 6057L, 6058L, 6060L, 6062L, 6064L, 
-6065L, 6066L, 6067L, 6069L, 6071L, 6072L, 6073L, 6074L, 6075L, 
-6078L, 6080L, 6083L, 6084L, 6086L, 6087L, 6089L, 6090L, 6091L, 
-6095L, 6102L, 6106L, 6107L, 6108L, 6109L, 6110L, 6111L, 6112L, 
-6115L, 6121L, 6122L, 6123L, 6124L, 6127L, 6129L, 6131L, 6133L, 
-6138L, 6143L, 6144L, 6145L, 6146L, 6147L, 6148L, 6149L, 6150L, 
-6152L, 6153L, 6154L, 6155L, 6156L, 6157L, 6159L, 6161L, 6163L, 
-6164L, 6165L, 6166L, 6168L, 6172L, 6177L, 6178L, 6180L, 6183L, 
-6185L, 6187L, 6190L, 6191L, 6193L, 6205L, 6206L, 6207L, 6208L, 
-6214L, 6216L, 6217L, 6221L, 6223L, 6225L, 6229L, 6232L, 6234L, 
-6235L, 6238L, 6240L, 6242L, 6243L, 6244L, 6245L, 6246L, 6247L, 
-6248L, 6249L, 6250L, 6251L, 6253L, 6256L, 6258L, 6259L, 6268L, 
-6276L, 6277L, 6278L, 6280L, 6282L, 6284L, 6285L, 6287L, 6290L, 
-6292L, 6293L, 6294L, 6295L, 6300L, 6302L, 6303L, 6304L, 6305L, 
-6306L, 6307L, 6308L, 6311L, 6312L, 6313L, 6314L, 6315L, 6319L, 
-6320L, 6322L, 6323L, 6324L, 6325L, 6326L, 6329L, 6330L, 6331L, 
-6332L, 6333L, 6334L, 6335L, 6336L, 6337L, 6338L, 6339L, 6340L, 
-6343L, 6345L, 6346L, 6347L, 6348L, 6350L, 6352L, 6353L, 6354L, 
-6356L, 6357L, 6358L, 6363L, 6364L, 6367L, 6368L, 6369L, 6371L, 
-6372L, 6373L, 6375L, 6376L, 6377L, 6378L, 6379L, 6380L, 6381L, 
-6384L, 6385L, 6386L, 6387L, 6389L, 6392L, 6393L, 6396L, 6397L, 
-6398L, 6399L, 6401L, 6402L, 6404L, 6405L, 6407L, 6408L, 6411L, 
-6412L, 6413L, 6415L, 6416L, 6417L, 6418L, 6419L, 6421L, 6424L, 
-6426L, 6431L, 6432L, 6434L, 6436L, 6437L, 6438L, 6441L, 6442L, 
-6443L, 6444L, 6445L, 6446L, 6447L, 6451L, 6453L, 6454L, 6455L, 
-6456L, 6457L, 6458L, 6461L, 6465L, 6466L, 6467L, 6468L, 6469L, 
-6470L, 6471L, 6472L, 6473L, 6476L, 6477L, 6478L, 6479L, 6480L, 
-6482L, 6486L, 6487L, 6488L, 6489L, 6492L, 6495L, 6498L, 6499L, 
-6500L, 6501L, 6503L, 6504L, 6505L, 6506L, 6508L, 6509L, 6510L, 
-6514L, 6519L, 6521L, 6522L, 6523L, 6524L, 6525L, 6526L, 6527L, 
-6528L, 6529L, 6530L, 6531L, 6532L, 6534L, 6535L, 6536L, 6537L, 
-6539L, 6540L, 6541L, 6547L, 6548L, 6550L, 6551L, 6552L, 6554L, 
-6555L, 6556L, 6557L, 6558L, 6559L, 6560L, 6561L, 6563L, 6564L, 
-6565L, 6566L, 6567L, 6568L, 6569L, 6573L, 6577L, 6578L, 6579L, 
-6580L, 6582L, 6584L, 6585L, 6588L, 6590L, 6591L, 6592L, 6593L, 
-6597L, 6598L, 6611L, 6613L, 6619L, 6624L, 6634L, 6642L, 6644L, 
-6645L, 6653L, 6655L, 6657L, 6669L, 6670L, 6671L, 6673L, 6674L, 
-6678L, 6680L, 6687L, 6696L, 6701L, 6703L, 6704L, 6706L, 6707L, 
-6709L, 6710L, 6711L, 6713L, 6714L, 6715L, 6716L, 6720L, 6721L, 
-6722L, 6724L, 6726L, 6728L, 6729L, 6730L, 6731L, 6732L, 6733L, 
-6734L, 6735L, 6737L, 6738L, 6740L, 6742L, 6743L, 6746L, 6747L, 
-6748L, 6749L, 6750L, 6751L, 6752L, 6753L, 6755L, 6756L, 6757L, 
-6759L, 6760L, 6761L, 6763L, 6766L, 6768L, 6769L, 6771L, 6772L, 
-6775L, 6776L, 6778L, 6779L, 6781L, 6782L, 6783L, 6785L, 6786L, 
-6787L, 6788L, 6791L, 6792L, 6794L, 6795L, 6799L, 6800L, 6801L, 
-6803L, 6804L, 6805L, 6806L, 6807L, 6809L, 6811L, 6812L, 6813L, 
-6815L, 6816L, 6818L, 6825L, 6826L, 6830L, 6832L, 6833L, 6834L, 
-6835L, 6836L, 6838L, 6839L, 6840L, 6841L, 6842L, 6844L, 6846L, 
-6849L, 6850L, 6851L, 6852L, 6853L, 6855L, 6856L, 6857L, 6860L, 
-6861L, 6863L, 6867L, 6873L, 6876L, 6878L, 6879L, 6880L, 6882L, 
-6885L, 6888L, 6897L, 6898L, 6902L, 6903L, 6904L, 6905L, 6906L, 
-6909L, 6911L, 6912L, 6913L, 6916L, 6920L, 6922L, 6924L, 6925L, 
-6927L, 6930L, 6933L, 6934L, 6935L, 6936L, 6937L, 6947L, 6950L, 
-6951L, 6952L, 6953L, 6955L, 6956L, 6958L, 6960L, 6962L, 6965L, 
-6968L, 6969L, 6970L, 6972L, 6973L, 6975L, 6976L, 6977L, 6979L, 
-6981L, 6982L, 6984L, 6985L, 6988L, 6991L, 6992L, 6993L, 6994L, 
-6995L, 7000L, 7001L, 7002L, 7003L, 7004L, 7005L, 7008L, 7009L, 
-7013L, 7014L, 7015L, 7016L, 7017L, 7018L, 7019L, 7020L, 7021L, 
-7022L, 7025L, 7026L, 7028L, 7029L, 7031L, 7033L, 7034L, 7035L, 
-7036L, 7038L, 7039L, 7040L, 7041L, 7042L, 7043L, 7044L, 7045L, 
-7048L, 7049L, 7051L, 7052L, 7053L, 7054L, 7055L, 7056L, 7057L, 
-7059L, 7061L, 7062L, 7064L, 7066L, 7067L, 7069L, 7070L, 7071L, 
-7072L, 7073L, 7074L, 7075L, 7076L, 7077L, 7079L, 7080L, 7081L, 
-7082L, 7083L, 7085L, 7086L, 7087L, 7090L, 7091L, 7092L, 7093L, 
-7094L, 7095L, 7097L, 7101L, 7102L, 7103L, 7104L, 7109L, 7110L, 
-7111L, 7113L, 7116L, 7117L, 7119L, 7120L, 7121L, 7123L, 7124L, 
-7125L, 7128L, 7129L, 7134L, 7136L, 7137L, 7139L, 7140L, 7141L, 
-7142L, 7143L, 7144L, 7145L, 7147L, 7149L, 7151L, 7154L, 7155L, 
-7156L, 7157L, 7158L, 7159L, 7163L, 7169L, 7171L, 7172L, 7175L, 
-7180L, 7182L, 7183L, 7187L, 7188L, 7189L, 7192L, 7197L, 7198L, 
-7199L, 7203L, 7204L, 7206L, 7209L, 7210L, 7211L, 7212L, 7213L, 
-7214L, 7218L, 7220L, 7224L, 7225L, 7226L, 7229L, 7230L, 7231L, 
-7232L, 7233L, 7234L, 7237L, 7238L, 7239L, 7240L, 7241L, 7244L, 
-7245L, 7246L, 7247L, 7249L, 7250L, 7252L, 7256L, 7258L, 7259L, 
-7260L, 7261L, 7262L, 7263L, 7264L, 7265L, 7266L, 7270L, 7271L, 
-7272L, 7273L, 7274L, 7275L, 7276L, 7277L, 7278L, 7280L, 7282L, 
-7283L, 7285L, 7286L, 7287L, 7288L, 7289L, 7290L, 7291L, 7298L, 
-7299L, 7300L, 7301L, 7302L, 7303L, 7304L, 7306L, 7307L, 7308L, 
-7309L, 7310L, 7311L, 7312L, 7313L, 7314L, 7315L, 7317L, 7318L, 
-7320L, 7321L, 7322L, 7328L, 7330L, 7331L, 7332L, 7333L, 7334L, 
-7335L, 7338L, 7339L, 7341L, 7350L, 7351L, 7353L, 7355L, 7358L, 
-7359L, 7360L, 7366L, 7367L, 7368L, 7370L, 7371L, 7372L, 7373L, 
-7374L, 7375L, 7376L, 7377L, 7379L, 7380L, 7381L, 7382L, 7384L, 
-7386L, 7387L, 7389L, 7390L, 7395L, 7396L, 7397L, 7398L, 7399L, 
-7400L, 7401L, 7402L, 7403L, 7404L, 7405L, 7406L, 7407L, 7408L, 
-7409L, 7410L, 7411L, 7412L, 7413L, 7414L, 7417L, 7418L, 7422L, 
-7423L, 7424L, 7426L, 7428L, 7429L, 7430L, 7431L, 7434L, 7436L, 
-7437L, 7438L, 7439L, 7440L, 7441L, 7442L, 7443L, 7451L, 7452L, 
-7453L, 7455L, 7456L, 7461L, 7462L, 7463L, 7464L, 7465L, 7466L, 
-7467L, 7468L, 7471L, 7472L, 7474L, 7477L, 7479L, 7482L, 7483L, 
-7484L, 7487L, 7492L, 7493L, 7494L, 7496L, 7500L, 7501L, 7509L, 
-7511L, 7516L, 7518L, 7525L, 7530L, 7534L, 7536L, 7538L, 7541L, 
-7542L, 7543L, 7546L, 7547L, 7578L, 7581L, 7582L, 7583L, 7584L, 
-7585L, 7587L, 7589L, 7590L, 7591L, 7592L, 7593L, 7595L, 7596L, 
-7597L, 7598L, 7599L, 7601L, 7602L, 7603L, 7604L, 7605L, 7607L, 
-7611L, 7612L, 7613L, 7614L, 7615L, 7619L, 7620L, 7621L, 7623L, 
-7624L, 7626L, 7627L, 7628L, 7632L, 7633L, 7634L, 7635L, 7636L, 
-7637L, 7639L, 7640L, 7641L, 7642L, 7643L, 7644L, 7647L, 7648L, 
-7649L, 7650L, 7651L, 7652L, 7653L, 7655L, 7656L, 7657L, 7661L, 
-7662L, 7664L, 7666L, 7667L, 7668L, 7669L, 7670L, 7671L, 7672L, 
-7673L, 7674L, 7676L, 7677L, 7678L, 7679L, 7680L, 7682L, 7683L, 
-7684L, 7685L, 7686L, 7688L, 7689L, 7690L, 7693L, 7694L, 7695L, 
-7696L, 7697L, 7699L, 7701L, 7702L, 7706L, 7708L, 7709L, 7710L, 
-7711L, 7712L, 7713L, 7714L, 7716L, 7717L, 7718L, 7719L, 7720L, 
-7724L, 7725L, 7727L, 7728L, 7730L, 7732L, 7735L, 7736L, 7737L, 
-7738L, 7739L, 7740L, 7741L, 7742L, 7743L, 7745L, 7747L, 7748L, 
-7751L, 7752L, 7753L, 7754L, 7755L, 7758L, 7759L, 7762L, 7764L, 
-7765L, 7768L, 7769L, 7772L, 7775L, 7776L, 7777L, 7779L, 7784L, 
-7785L, 7786L, 7788L, 7789L, 7790L, 7791L, 7792L, 7793L, 7797L, 
-7798L, 7799L, 7801L, 7802L, 7803L, 7804L, 7805L, 7807L, 7808L, 
-7809L, 7810L, 7811L, 7812L, 7813L, 7814L, 7815L, 7816L, 7818L, 
-7819L, 7820L, 7824L, 7825L, 7826L, 7827L, 7829L, 7831L, 7832L, 
-7833L, 7837L, 7838L, 7839L, 7841L, 7842L, 7843L, 7844L, 7847L, 
-7848L, 7849L, 7850L, 7852L, 7853L, 7854L, 7855L, 7856L, 7858L, 
-7859L, 7860L, 7861L, 7862L, 7863L, 7865L, 7866L, 7867L, 7868L, 
-7870L, 7871L, 7872L, 7873L, 7874L, 7876L, 7879L, 7882L, 7883L, 
-7885L, 7886L, 7887L, 7888L, 7889L, 7890L, 7892L, 7893L, 7894L, 
-7895L, 7897L, 7898L, 7899L, 7900L, 7901L, 7902L, 7903L, 7904L, 
-7906L, 7907L, 7908L, 7909L, 7910L, 7911L, 7912L, 7913L, 7914L, 
-7915L, 7916L, 7917L, 7918L, 7919L, 7921L, 7922L, 7923L, 7925L, 
-7927L, 7928L, 7930L, 7931L, 7934L, 7935L, 7938L, 7943L, 7945L, 
-7946L, 7947L, 7948L, 7949L, 7954L, 7955L, 7956L, 7957L, 7958L, 
-7959L, 7960L, 7961L, 7963L, 7964L, 7965L, 7966L, 7967L, 7968L, 
-7969L, 7972L, 7973L, 7975L, 7976L, 7977L, 7979L, 7984L, 7987L, 
-8004L, 8007L, 8011L, 8012L, 8013L, 8014L, 8015L, 8017L, 8018L, 
-8019L, 8026L, 8027L, 8029L, 8030L, 8032L, 8033L, 8034L, 8035L, 
-8036L, 8038L, 8039L, 8040L, 8042L, 8043L, 8044L, 8046L, 8048L, 
-8049L, 8050L, 8051L, 8055L, 8065L, 8067L, 8068L, 8070L, 8073L, 
-8074L, 8076L, 8078L, 8079L, 8080L, 8081L, 8082L, 8083L, 8084L, 
-8086L, 8088L, 8089L, 8090L, 8093L, 8095L, 8096L, 8098L, 8099L, 
-8102L, 8104L, 8105L, 8106L, 8107L, 8108L, 8109L, 8110L, 8112L, 
-8114L, 8116L, 8117L, 8118L, 8119L, 8121L, 8124L, 8126L, 8127L, 
-8128L, 8129L, 8130L, 8131L, 8132L, 8137L, 8138L, 8140L, 8141L, 
-8142L, 8143L, 8144L, 8145L, 8148L, 8151L, 8152L, 8153L, 8154L, 
-8155L, 8156L, 8157L, 8158L, 8159L, 8164L, 8166L, 8168L, 8169L, 
-8170L, 8171L, 8174L, 8176L, 8177L, 8179L, 8180L, 8182L, 8183L, 
-8185L, 8187L, 8188L, 8189L, 8190L, 8191L, 8192L, 8193L, 8194L, 
-8195L, 8196L, 8197L, 8198L, 8199L, 8200L, 8201L, 8203L, 8204L, 
-8206L, 8208L, 8209L, 8210L, 8211L, 8212L, 8213L, 8214L, 8215L, 
-8217L, 8218L, 8219L, 8220L, 8221L, 8222L, 8225L, 8226L, 8227L, 
-8228L, 8229L, 8231L, 8232L, 8233L, 8234L, 8236L, 8237L, 8239L, 
-8240L, 8241L, 8242L, 8243L, 8244L, 8248L, 8250L, 8254L, 8255L, 
-8256L, 8257L, 8258L, 8259L, 8260L, 8262L, 8266L, 8269L, 8270L, 
-8272L, 8273L, 8274L, 8275L, 8276L, 8277L, 8279L, 8280L, 8281L, 
-8282L, 8283L, 8284L, 8285L, 8286L, 8287L, 8288L, 8289L, 8290L, 
-8291L, 8292L, 8293L, 8294L, 8295L, 8296L, 8297L, 8298L, 8299L, 
-8301L, 8302L, 8303L, 8304L, 8305L, 8306L, 8307L, 8308L, 8309L, 
-8310L, 8312L, 8313L, 8314L, 8315L, 8316L, 8317L, 8318L, 8319L, 
-8320L, 8321L, 8325L, 8327L, 8329L, 8330L, 8332L, 8333L, 8334L, 
-8335L, 8336L, 8338L, 8339L, 8340L, 8341L, 8342L, 8343L, 8344L, 
-8345L, 8346L, 8347L, 8348L, 8349L, 8350L, 8353L, 8354L, 8355L, 
-8356L, 8357L, 8361L, 8362L, 8363L, 8364L, 8366L, 8367L, 8368L, 
-8369L, 8371L, 8373L, 8374L, 8375L, 8377L, 8378L, 8379L, 8380L, 
-8381L, 8383L, 8385L, 8386L, 8387L, 8390L, 8391L, 8392L, 8393L, 
-8394L, 8395L, 8398L, 8399L, 8400L, 8401L, 8402L, 8403L, 8404L, 
-8406L, 8407L, 8408L, 8409L, 8410L, 8411L, 8412L, 8413L, 8414L, 
-8415L, 8416L, 8417L, 8420L, 8421L, 8422L, 8426L, 8427L, 8429L, 
-8430L, 8431L, 8432L, 8433L, 8435L, 8437L, 8439L, 8440L, 8442L, 
-8444L, 8445L, 8447L, 8449L, 8450L, 8451L, 8453L, 8454L, 8455L, 
-8457L, 8458L, 8459L, 8460L, 8461L, 8463L, 8465L, 8466L, 8468L, 
-8470L, 8471L, 8473L, 8474L, 8475L, 8479L, 8480L, 8482L, 8484L, 
-8488L, 8490L, 8492L, 8493L, 8494L, 8495L, 8498L, 8499L, 8500L, 
-8503L, 8504L, 8505L, 8506L, 8507L, 8508L, 8510L, 8511L, 8513L, 
-8514L, 8515L, 8516L, 8517L, 8519L, 8521L, 8522L, 8523L, 8524L, 
-8525L, 8527L, 8528L, 8529L, 8530L, 8531L, 8532L, 8533L, 8534L, 
-8535L, 8536L, 8537L, 8538L, 8539L, 8540L, 8541L, 8542L, 8543L, 
-8544L, 8545L, 8546L, 8549L, 8550L, 8551L, 8552L, 8555L, 8556L, 
-8557L, 8558L, 8559L, 8560L, 8563L, 8564L, 8565L, 8566L, 8568L, 
-8569L, 8571L, 8572L, 8573L, 8574L, 8576L, 8579L, 8580L, 8581L, 
-8582L, 8583L, 8585L, 8586L, 8587L, 8588L, 8590L, 8591L, 8593L, 
-8594L, 8595L, 8596L, 8599L, 8600L, 8601L, 8603L, 8610L, 8611L, 
-8612L, 8613L, 8614L, 8615L, 8616L, 8617L, 8618L, 8619L, 8620L, 
-8621L, 8622L, 8623L, 8625L, 8627L, 8629L, 8630L, 8631L, 8636L, 
-8637L, 8640L, 8642L, 8643L, 8644L, 8645L, 8646L, 8647L, 8648L, 
-8649L, 8652L, 8655L, 8656L, 8657L, 8658L, 8659L, 8661L, 8662L, 
-8663L, 8664L, 8666L, 8668L, 8669L, 8671L, 8672L, 8673L, 8674L, 
-8675L, 8676L, 8677L, 8678L, 8682L, 8683L, 8684L, 8685L, 8686L, 
-8687L, 8688L, 8690L, 8691L, 8693L, 8694L, 8695L, 8696L, 8699L, 
-8702L, 8703L, 8704L, 8705L, 8706L, 8707L, 8708L, 8709L, 8710L, 
-8712L, 8713L, 8714L, 8715L, 8716L, 8719L, 8721L, 8723L, 8724L, 
-8725L, 8726L, 8728L, 8730L, 8731L, 8732L, 8733L, 8734L, 8737L, 
-8738L, 8739L, 8741L, 8746L, 8747L, 8751L, 8752L, 8753L, 8754L, 
-8755L, 8759L, 8761L, 8763L, 8766L, 8768L, 8769L, 8770L, 8778L, 
-8779L, 8780L, 8781L, 8783L, 8784L, 8790L, 8792L, 8793L, 8794L, 
-8795L, 8797L, 8802L, 8803L, 8805L, 8806L, 8812L, 8813L, 8814L, 
-8815L, 8816L, 8817L, 8819L, 8821L, 8826L, 8827L, 8833L, 8834L, 
-8835L, 8837L, 8838L, 8840L, 8841L, 8842L, 8845L, 8846L, 8847L, 
-8848L, 8850L, 8851L, 8852L, 8854L, 8856L, 8859L, 8860L, 8862L, 
-8863L, 8864L, 8866L, 8868L, 8870L, 8871L, 8872L, 8873L, 8874L, 
-8876L, 8877L, 8879L, 8881L, 8882L, 8883L, 8884L, 8885L, 8886L, 
-8887L, 8888L, 8889L, 8890L, 8891L, 8892L, 8893L, 8895L, 8896L, 
-8899L, 8901L, 8905L, 8907L, 8908L, 8910L, 8911L, 8912L, 8914L, 
-8915L, 8916L, 8918L, 8921L, 8922L, 8924L, 8925L, 8926L, 8927L, 
-8928L, 8929L, 8931L, 8932L, 8934L, 8937L, 8938L, 8939L, 8940L, 
-8941L, 8942L, 8943L, 8944L, 8945L, 8946L, 8947L, 8948L, 8949L, 
-8950L, 8951L, 8952L, 8953L, 8954L, 8956L, 8957L, 8958L, 8959L, 
-8960L, 8961L, 8962L, 8963L, 8964L, 8965L, 8966L, 8967L, 8968L, 
-8969L, 8971L, 8972L, 8974L, 8975L, 8976L, 8977L, 8980L, 8981L, 
-8982L, 8983L, 8984L, 8985L, 8988L, 8989L, 8990L, 8991L, 8993L, 
-9000L, 9001L, 9003L, 9004L, 9006L, 9007L, 9008L, 9009L, 9010L, 
-9011L, 9012L, 9013L, 9015L, 9016L, 9017L, 9018L, 9021L, 9023L, 
-9025L, 9027L, 9030L, 9031L, 9032L, 9033L, 9034L, 9035L, 9036L, 
-9037L, 9038L, 9039L, 9040L, 9041L, 9042L, 9043L, 9047L, 9051L, 
-9052L, 9053L, 9055L, 9056L, 9059L, 9063L, 9064L, 9067L, 9069L, 
-9070L, 9071L, 9072L, 9073L, 9074L, 9075L, 9076L, 9078L, 9079L, 
-9080L, 9081L, 9083L, 9085L, 9086L, 9089L, 9090L, 9091L, 9094L, 
-9097L, 9098L, 9099L, 9103L, 9104L, 9105L, 9106L, 9107L, 9108L, 
-9109L, 9110L, 9111L, 9113L, 9117L, 9119L, 9122L, 9123L, 9125L, 
-9126L, 9128L, 9129L, 9130L, 9133L, 9134L, 9135L, 9136L, 9138L, 
-9139L, 9140L, 9142L, 9143L, 9144L, 9145L, 9148L, 9149L, 9150L, 
-9151L, 9154L, 9155L, 9156L, 9157L, 9158L, 9159L, 9160L, 9161L, 
-9162L, 9163L, 9164L, 9166L, 9167L, 9170L, 9171L, 9172L, 9173L, 
-9174L, 9175L, 9176L, 9177L, 9178L, 9179L, 9180L, 9182L, 9184L, 
-9185L, 9186L, 9187L, 9189L, 9190L, 9191L, 9192L, 9193L, 9197L, 
-9200L, 9202L, 9203L, 9204L, 9205L, 9206L, 9207L, 9208L, 9209L, 
-9210L, 9211L, 9212L, 9213L, 9214L, 9216L, 9220L, 9221L, 9223L, 
-9225L, 9228L, 9229L, 9231L, 9232L, 9236L, 9237L, 9238L, 9239L, 
-9240L, 9243L, 9246L, 9248L, 9249L, 9250L, 9251L, 9252L, 9253L, 
-9254L, 9255L, 9256L, 9257L, 9258L, 9259L, 9260L, 9261L, 9262L, 
-9263L, 9264L, 9265L, 9267L, 9268L, 9270L, 9271L, 9272L, 9273L, 
-9274L, 9275L, 9276L, 9278L, 9280L, 9281L, 9282L, 9283L, 9284L, 
-9286L, 9289L, 9290L, 9293L, 9295L, 9296L, 9297L, 9299L, 9300L, 
-9302L, 9304L, 9305L, 9307L, 9308L, 9309L, 9310L, 9311L, 9312L, 
-9313L, 9314L, 9315L, 9319L, 9321L, 9322L, 9323L, 9324L, 9325L, 
-9329L, 9332L, 9335L, 9336L, 9339L, 9340L, 9344L, 9345L, 9346L, 
-9347L, 9348L, 9350L, 9351L, 9352L, 9353L, 9354L, 9357L, 9359L, 
-9361L, 9366L, 9367L, 9369L, 9370L, 9371L, 9372L, 9373L, 9375L, 
-9376L, 9377L, 9378L, 9379L, 9380L, 9381L, 9382L, 9383L, 9384L, 
-9385L, 9388L, 9390L, 9392L, 9393L, 9394L, 9395L, 9397L, 9398L, 
-9399L, 9400L, 9401L, 9402L, 9403L, 9404L, 9405L, 9407L, 9409L, 
-9410L, 9415L, 9416L, 9417L, 9421L, 9422L, 9423L, 9424L, 9425L, 
-9426L, 9427L, 9428L, 9429L, 9433L, 9434L, 9435L, 9437L, 9438L, 
-9439L, 9440L, 9441L, 9442L, 9443L, 9444L, 9445L, 9446L, 9447L, 
-9448L, 9449L, 9450L, 9451L, 9452L, 9453L, 9454L, 9455L, 9456L, 
-9457L, 9459L, 9460L, 9461L, 9463L, 9464L, 9465L, 9466L, 9467L, 
-9468L, 9469L, 9471L, 9472L, 9473L, 9474L, 9475L, 9477L, 9478L, 
-9479L, 9480L, 9483L, 9484L, 9485L, 9486L, 9487L, 9488L, 9490L, 
-9491L, 9492L, 9493L, 9496L, 9500L, 9502L, 9504L, 9505L, 9506L, 
-9507L, 9508L, 9509L, 9510L, 9511L, 9512L, 9513L, 9514L, 9515L, 
-9516L, 9517L, 9518L, 9519L, 9520L, 9521L, 9522L, 9523L, 9524L, 
-9525L, 9526L, 9528L, 9529L, 9531L, 9532L, 9533L, 9534L, 9535L, 
-9537L, 9538L, 9546L, 9547L, 9548L, 9551L, 9553L, 9555L, 9557L, 
-9559L, 9560L, 9561L, 9562L, 9566L, 9567L, 9568L, 9569L, 9570L, 
-9572L, 9573L, 9574L, 9575L, 9576L, 9577L, 9578L, 9579L, 9580L, 
-9581L, 9583L, 9584L, 9585L, 9586L, 9587L, 9588L, 9589L, 9590L, 
-9591L, 9592L, 9593L, 9594L, 9595L, 9596L, 9597L, 9598L, 9599L, 
-9600L, 9601L, 9602L, 9603L, 9604L, 9606L, 9607L, 9608L, 9609L, 
-9610L, 9611L, 9612L, 9613L, 9614L, 9616L, 9617L, 9619L, 9620L, 
-9621L, 9622L, 9623L, 9624L, 9625L, 9626L, 9627L, 9628L, 9629L, 
-9631L, 9632L, 9633L, 9634L, 9635L, 9636L, 9638L, 9639L, 9640L, 
-9641L, 9642L, 9643L, 9644L, 9645L, 9646L, 9647L, 9648L, 9650L, 
-9652L, 9653L, 9654L, 9655L, 9656L, 9657L, 9658L, 9659L, 9664L, 
-9666L, 9667L, 9668L, 9669L, 9670L, 9671L, 9673L, 9674L, 9675L, 
-9676L, 9677L, 9678L, 9679L, 9680L, 9681L, 9682L, 9683L, 9684L, 
-9685L, 9688L, 9690L, 9691L, 9692L, 9693L, 9694L, 9695L, 9697L, 
-9699L, 9700L, 9702L, 9703L, 9705L, 9706L, 9707L, 9708L, 9709L, 
-9710L, 9711L, 9712L, 9713L, 9715L, 9716L, 9717L, 9718L, 9719L, 
-9720L, 9721L, 9722L, 9723L, 9724L, 9725L, 9726L, 9727L, 9728L, 
-9729L, 9731L, 9733L, 9735L, 9737L, 9738L, 9739L, 9740L, 9741L, 
-9742L, 9743L, 9744L, 9745L, 9746L, 9747L, 9748L, 9749L, 9750L, 
-9751L, 9756L, 9757L, 9758L, 9759L, 9760L, 9761L, 9762L, 9763L, 
-9764L, 9765L, 9766L, 9768L, 9769L, 9771L, 9772L, 9776L, 9777L, 
-9778L, 9779L, 9781L, 9782L, 9783L, 9786L, 9787L, 9790L, 9791L, 
-9792L, 9795L, 9796L, 9798L, 9799L, 9800L, 9801L, 9804L, 9805L, 
-9806L, 9808L, 9810L, 9813L, 9814L, 9817L, 9818L, 9819L, 9820L, 
-9821L, 9822L, 9824L, 9825L, 9827L, 9829L, 9832L, 9833L, 9835L, 
-9836L, 9839L, 9840L, 9842L, 9843L, 9844L, 9845L, 9846L, 9847L, 
-9848L, 9849L, 9850L, 9851L, 9852L, 9853L, 9854L, 9857L, 9858L, 
-9859L, 9860L, 9862L, 9863L, 9864L, 9866L, 9867L, 9868L, 9869L, 
-9871L, 9872L, 9877L, 9878L, 9879L, 9880L, 9883L, 9884L, 9886L, 
-9889L, 9890L, 9893L, 9894L, 9895L, 9896L, 9897L, 9898L, 9901L, 
-9902L, 9903L, 9904L, 9906L, 9907L, 9909L, 9910L, 9911L, 9912L, 
-9913L, 9914L, 9915L, 9916L, 9917L, 9920L, 9921L, 9925L, 9926L, 
-9927L, 9928L, 9930L, 9931L, 9933L, 9936L, 9937L, 9938L, 9939L, 
-9942L, 9943L, 9944L, 9945L, 9949L, 9951L, 9952L, 9953L, 9954L, 
-9958L, 9960L, 9961L, 9962L, 9963L, 9965L, 9966L, 9967L, 9969L, 
-9970L, 9971L, 9972L, 9973L, 9977L, 9980L, 9981L, 9982L, 9983L, 
-9984L, 9985L, 9986L, 9987L, 9988L, 9989L, 9991L, 9992L, 9993L, 
-9995L, 9996L, 9997L, 9999L, 10000L, 10002L, 10004L, 10005L, 10006L, 
-10007L, 10008L, 10009L, 10011L, 10012L, 10013L, 10014L, 10015L, 
-10016L, 10017L, 10018L, 10022L, 10023L, 10024L, 10025L, 10026L, 
-10027L, 10028L, 10033L, 10034L, 10037L, 10038L, 10039L, 10041L, 
-10043L, 10044L, 10045L, 10046L, 10047L, 10049L, 10050L, 10051L, 
-10052L, 10053L, 10054L, 10057L, 10058L, 10059L, 10060L, 10061L, 
-10062L, 10063L, 10064L, 10065L, 10066L, 10067L, 10068L, 10071L, 
-10072L, 10073L, 10077L, 10078L, 10079L, 10080L, 10081L, 10083L, 
-10084L, 10085L, 10086L, 10087L, 10088L, 10089L, 10090L, 10091L, 
-10092L, 10093L, 10094L, 10096L, 10097L, 10098L, 10099L, 10100L, 
-10101L, 10102L, 10103L, 10104L, 10105L, 10106L, 10109L, 10110L, 
-10111L, 10112L, 10113L, 10114L, 10115L, 10116L, 10117L, 10118L, 
-10119L, 10120L, 10122L, 10123L, 10126L, 10128L, 10129L, 10130L, 
-10131L, 10132L, 10133L, 10134L, 10136L, 10137L, 10138L, 10141L, 
-10142L, 10143L, 10144L, 10145L, 10146L, 10147L, 10148L, 10151L, 
-10152L, 10155L, 10156L, 10158L, 10160L, 10162L, 10164L, 10166L, 
-10170L, 10171L, 10172L, 10173L, 10174L, 10175L, 10176L, 10177L, 
-10179L, 10180L, 10181L, 10182L, 10183L, 10184L, 10185L, 10187L, 
-10188L, 10189L, 10190L, 10191L, 10192L, 10193L, 10196L, 10197L, 
-10198L, 10200L, 10201L, 10202L, 10203L, 10204L, 10205L, 10206L, 
-10207L, 10208L, 10209L, 10210L, 10211L, 10212L, 10213L, 10214L, 
-10215L, 10216L, 10217L, 10218L, 10219L, 10220L, 10221L, 10223L, 
-10224L, 10225L, 10226L, 10227L, 10228L, 10230L, 10231L, 10232L, 
-10233L, 10234L, 10235L, 10240L, 10241L, 10243L, 10244L, 10245L, 
-10247L, 10248L, 10250L, 10251L, 10257L, 10258L, 10259L, 10260L, 
-10261L, 10262L, 10263L, 10265L, 10266L, 10267L, 10268L, 10269L, 
-10270L, 10271L, 10272L, 10274L, 10276L, 10277L, 10278L, 10279L, 
-10280L, 10281L, 10282L, 10284L, 10285L, 10286L, 10287L, 10288L, 
-10289L, 10291L, 10292L, 10294L, 10295L, 10296L, 10297L, 10298L, 
-10299L, 10300L, 10301L, 10302L, 10303L, 10304L, 10305L, 10307L, 
-10308L, 10309L, 10310L, 10311L, 10312L, 10313L, 10315L, 10316L, 
-10317L, 10318L, 10320L, 10321L, 10322L, 10323L, 10324L, 10325L, 
-10326L, 10328L, 10330L, 10331L, 10332L, 10333L, 10334L, 10335L, 
-10336L, 10337L, 10338L, 10339L, 10340L, 10341L, 10342L, 10343L, 
-10344L, 10346L, 10347L, 10348L, 10349L, 10350L, 10351L, 10352L, 
-10353L, 10354L, 10355L, 10356L, 10358L, 10359L, 10361L, 10362L, 
-10363L, 10364L, 10365L, 10366L, 10367L, 10368L, 10369L, 10370L, 
-10371L, 10372L, 10373L, 10374L, 10375L, 10376L, 10380L, 10382L, 
-10383L, 10386L, 10387L, 10388L, 10389L, 10390L, 10391L, 10392L, 
-10393L, 10394L, 10395L, 10397L, 10398L, 10399L, 10400L, 10401L, 
-10403L, 10404L, 10406L, 10407L, 10409L, 10411L, 10412L, 10413L, 
-10414L, 10415L, 10416L, 10419L, 10420L, 10423L, 10425L, 10426L, 
-10430L, 10432L, 10433L, 10434L, 10435L, 10436L, 10437L, 10438L, 
-10439L, 10442L, 10443L, 10444L, 10445L, 10446L, 10448L, 10449L, 
-10450L, 10451L, 10452L, 10453L, 10456L, 10457L, 10459L, 10460L, 
-10462L, 10463L, 10464L, 10465L, 10468L, 10469L, 10470L, 10471L, 
-10472L, 10474L, 10476L, 10477L, 10478L, 10479L, 10480L, 10481L, 
-10482L, 10483L, 10484L, 10487L, 10488L, 10490L, 10491L, 10492L, 
-10493L, 10494L, 10495L, 10497L, 10498L, 10500L, 10501L, 10502L, 
-10503L, 10504L, 10506L, 10508L, 10509L, 10511L, 10513L, 10514L, 
-10515L, 10517L, 10518L, 10519L, 10521L, 10523L, 10525L, 10527L, 
-10528L, 10529L), class = "data.frame")
diff --git a/data/nzmarital.rda b/data/nzmarital.rda
new file mode 100644
index 0000000..12bd5ea
Binary files /dev/null and b/data/nzmarital.rda differ
diff --git a/data/olympic.txt b/data/olympic.txt
deleted file mode 100644
index e8db440..0000000
--- a/data/olympic.txt
+++ /dev/null
@@ -1,88 +0,0 @@
-rank country gold silver bronze totalmedal
-1  China 51 21 28 100
-2  UnitedStates 36 38 36 110
-3  Russia 23 21 28 72
-4  GreatBritain 19 13 15 47
-5  Germany 16 10 15 41
-6  Australia 14 15 17 46
-7  SouthKorea 13 10 8 31
-8  Japan 9 6 10 25
-9  Italy 8 10 10 28
-10 France 7 16 17 40
-11 Ukraine 7 5 15 27
-12 Netherlands 7 5 4 16
-13 Jamaica 6 3 2 11
-14 Spain 5 10 3 18
-15 Kenya 5 5 4 14
-16 Belarus 4 5 10 19
-17 Romania 4 1 3 8
-18 Ethiopia 4 1 2 7
-19 Canada 3 9 6 18
-20 Poland 3 6 1 10
-21 Hungary 3 5 2 10
-21 Norway 3 5 2 10
-23 Brazil 3 4 8 15
-24 CzechRepublic 3 3 0 6
-25 Slovakia 3 2 1 6
-26 NewZealand 3 1 5 9
-27 Georgia 3 0 3 6
-28 Cuba 2 11 11 24
-29 Kazakhstan 2 4 7 13
-30 Denmark 2 2 3 7
-31 Mongolia 2 2 0 4
-31 Thailand 2 2 0 4
-33 NorthKorea 2 1 3 6
-34 Argentina 2 0 4 6
-34 Switzerland 2 0 4 6
-36 Mexico 2 0 1 3
-37 Turkey 1 4 3 8
-38 Zimbabwe 1 3 0 4
-39 Azerbaijan 1 2 4 7
-40 Uzbekistan 1 2 3 6
-41 Slovenia 1 2 2 5
-42 Bulgaria 1 1 3 5
-42 Indonesia 1 1 3 5
-44 Finland 1 1 2 4
-45 Latvia 1 1 1 3
-46 Belgium 1 1 0 2
-46 DominicanRepublic 1 1 0 2
-46 Estonia 1 1 0 2
-46 Portugal 1 1 0 2
-50 India 1 0 2 3
-51 Iran 1 0 1 2
-52 Bahrain 1 0 0 1
-52 Cameroon 1 0 0 1
-52 Panama 1 0 0 1
-52 Tunisia 1 0 0 1
-56 Sweden 0 4 1 5
-57 Croatia 0 2 3 5
-57 Lithuania 0 2 3 5
-59 Greece 0 2 2 4
-60 TrinidadandTobago 0 2 0 2
-61 Nigeria 0 1 3 4
-62 Austria 0 1 2 3
-62 Ireland 0 1 2 3
-62 Serbia 0 1 2 3
-65 Algeria 0 1 1 2
-65 Bahamas 0 1 1 2
-65 Columbia 0 1 1 2
-65 Kyrgyzstan 0 1 1 2
-65 Morocco 0 1 1 2
-65 Tajikistan 0 1 1 2
-71 Chile 0 1 0 1
-71 Ecuador 0 1 0 1
-71 Iceland 0 1 0 1
-71 Malaysia 0 1 0 1
-71 Singapore 0 1 0 1
-71 SouthAfrica 0 1 0 1
-71 Sudan 0 1 0 1
-71 Vietnam 0 1 0 1
-79 Armenia 0 0 6 6
-80 Taiwan 0 0 4 4
-81 Afghanistan 0 0 1 1
-81 Egypt 0 0 1 1
-81 Israel 0 0 1 1
-81 Mauritius 0 0 1 1
-81 Moldova 0 0 1 1
-81 Togo 0 0 1 1
-81 Venezuela 0 0 1 1
diff --git a/data/olympic.txt.gz b/data/olympic.txt.gz
new file mode 100644
index 0000000..42dc271
Binary files /dev/null and b/data/olympic.txt.gz differ
diff --git a/data/oxtemp.txt b/data/oxtemp.txt
deleted file mode 100644
index bc4572e..0000000
--- a/data/oxtemp.txt
+++ /dev/null
@@ -1,81 +0,0 @@
-maxtemp year
-89 1901
-84 1902
-84 1903
-85 1904
-81 1905
-92 1906
-79 1907
-84 1908
-85 1909
-79 1910
-95 1911
-87 1912
-83 1913
-87 1914
-82 1915
-83 1916
-89 1917
-84 1918
-86 1919
-79 1920
-89 1921
-86 1922
-93 1923
-86 1924
-85 1925
-85 1926
-80 1927
-87 1928
-87 1929
-89 1930
-75 1931
-95 1932
-89 1933
-86 1934
-86 1935
-83 1936
-87 1937
-84 1938
-84 1939
-85 1940
-89 1941
-88 1942
-92 1943
-87 1944
-84 1945
-84 1946
-90 1947
-90 1948
-89 1949
-86 1950
-82 1951
-89 1952
-90 1953
-83 1954
-87 1955
-82 1956
-86 1957
-80 1958
-91 1959
-82 1960
-87 1961
-77 1962
-81 1963
-87 1964
-81 1965
-80 1966
-83 1967
-89 1968
-88 1969
-88 1970
-84 1971
-77 1972
-85 1973
-77 1974
-91 1975
-94 1976
-80 1977
-80 1978
-85 1979
-83 1980
diff --git a/data/oxtemp.txt.gz b/data/oxtemp.txt.gz
new file mode 100644
index 0000000..a3d1142
Binary files /dev/null and b/data/oxtemp.txt.gz differ
diff --git a/data/pneumo.R b/data/pneumo.R
deleted file mode 100644
index c61a1f0..0000000
--- a/data/pneumo.R
+++ /dev/null
@@ -1,6 +0,0 @@
-"pneumo" <-
-structure(list(exposure.time = c(5.8, 15, 21.5, 27.5, 33.5, 39.5, 
-46, 51.5), normal = c(98, 51, 34, 35, 32, 23, 12, 4), mild = c(0, 
-2, 6, 5, 10, 7, 6, 2), severe = c(0, 1, 3, 8, 9, 8, 10, 5)), .Names = c("exposure.time", 
-"normal", "mild", "severe"), class = "data.frame", row.names = c("1", 
-"2", "3", "4", "5", "6", "7", "8"))
diff --git a/data/pneumo.rda b/data/pneumo.rda
new file mode 100644
index 0000000..c28e52e
Binary files /dev/null and b/data/pneumo.rda differ
diff --git a/data/rainfall.R b/data/rainfall.R
deleted file mode 100644
index 7d3cf26..0000000
--- a/data/rainfall.R
+++ /dev/null
@@ -1,1000 +0,0 @@
-"rainfall" <- c(0, 23, 13, 69, 46, 0, 10, 15, 18, 18, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 28, 30,
-	0, 81, 15, 41, 0, 0, 0, 0, 0, 48, 318, 0, 15, 254, 51, 150,
-	168, 163, 0, 0, 117, 23, 20, 109, 81, 23, 15, 0, 0, 0, 30, 18,
-	25, 30, 66, 20, 84, 74, 119, 325, 107, 25, 183, 51, 135, 109,
-	81, 8, 127, 3, 157, 185, 23, 18, 58, 20, 71, 23, 0, 107, 69,
-	48, 0, 38, 38, 58, 84, 76, 30, 36, 36, 48, 147, 5, 0, 0, 0, 0,
-	0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 142, 56,
-	25, 18, 64, 8, 20, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13,
-	0, 0, 0, 0, 23, 51, 0, 13, 46, 0, 0, 0, 0, 3, 8, 64, 170, 5,
-	51, 0, 0, 5, 0, 0, 0, 0, 0, 0, 155, 13, 0, 0, 0, 0, 0, 0, 0, 0,
-	30, 38, 0, 178, 0, 130, 81, 0, 0, 0, 0, 0, 51, 0, 23, 13, 5, 3,
-	279, 0, 0, 0, 46, 20, 30, 79, 10, 0, 46, 0, 203, 147, 10, 76,
-	36, 0, 33, 71, 41, 25, 0, 0, 0, 0, 241, 43, 0, 0, 0, 0, 41, 0,
-	5, 0, 36, 175, 10, 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 74, 0,
-	117, 76, 10, 66, 114, 10, 36, 66, 13, 76, 18, 0, 0, 0, 0, 0, 0,
-	0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58, 13, 8,
-	0, 0, 0, 0, 0, 81, 150, 20, 3, 119, 13, 51, 102, 18, 33, 147,
-	130, 0, 0, 94, 0, 25, 0, 0, 0, 0, 20, 33, 114, 132, 79, 0, 0,
-	0, 46, 0, 0, 0, 0, 25, 30, 89, 64, 64, 229, 157, 0, 168, 38,
-	221, 51, 119, 69, 0, 0, 0, 119, 23, 43, 46, 183, 0, 318, 81,
-	15, 58, 30, 0, 0, 0, 114, 213, 117, 203, 13, 445, 140, 150, 69,
-	13, 10, 18, 229, 81, 51, 10, 84, 38, 43, 8, 48, 28, 15, 8, 5,
-	10, 157, 86, 25, 58, 0, 0, 0, 0, 0, 0, 66, 18, 76, 137, 117,
-	206, 287, 64, 203, 135, 51, 168, 0, 102, 305, 0, 0, 432, 43,
-	66, 10, 0, 30, 36, 13, 0, 0, 91, 20, 18, 0, 25, 38, 0, 3, 0, 5,
-	0, 0, 20, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0,
-	0, 0, 0, 0, 0, 8, 23, 0, 51, 112, 23, 0, 51, 20, 13, 0, 0, 0,
-	0, 0, 0, 0, 5, 61, 0, 46, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 56, 8,
-	0, 0, 0, 0, 0, 0, 0, 152, 211, 0, 74, 76, 0, 0, 112, 0, 64, 0,
-	0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	0, 0, 0, 0, 0, 0, 0, 41, 53, 41, 0, 36, 43, 127, 76, 66, 229,
-	36, 0, 0, 28, 0, 0, 152, 155, 13, 0, 3, 10, 0, 0, 51, 56, 259,
-	0, 0, 41, 0, 25, 76, 122, 28, 71, 51, 36, 0, 0, 5, 48, 198,
-	142, 3, 0, 51, 13, 0, 18, 0, 69, 51, 218, 102, 25, 0, 0, 0, 0,
-	0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 3, 0, 8, 216, 20, 0, 0, 0, 0, 0,
-	0, 0, 0, 0, 0, 13, 20, 18, 0, 0, 0, 0, 0, 0, 0, 25, 30, 0, 18,
-	0, 69, 33, 28, 58, 0, 0, 0, 0, 0, 38, 0, 0, 28, 0, 48, 0, 15,
-	0, 5, 0, 0, 0, 43, 13, 8, 193, 84, 0, 0, 165, 84, 0, 127, 76,
-	15, 0, 0, 0, 0, 0, 8, 13, 188, 41, 218, 94, 64, 0, 36, 0, 0, 0,
-	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 145, 79, 102, 135, 76, 262,
-	33, 76, 224, 203, 30, 41, 13, 41, 356, 36, 25, 0, 0, 0, 0, 64,
-	114, 229, 168, 142, 185, 0, 0, 43, 191, 102, 71, 89, 5, 74, 5,
-	13, 41, 0, 0, 0, 0, 25, 0, 18, 5, 51, 0, 8, 64, 36, 25, 0, 18,
-	0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 381, 53, 13, 56, 76, 64, 69,
-	201, 0, 10, 94, 130, 91, 38, 51, 86, 25, 76, 0, 0, 5, 127, 25,
-	18, 8, 15, 36, 76, 20, 30, 23, 53, 15, 36, 8, 18, 0, 0, 0, 0,
-	0, 0, 0, 0, 30, 0, 66, 28, 5, 0, 13, 69, 36, 277, 0, 5, 0, 0,
-	0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 28, 23, 0, 0, 41, 38, 25, 64, 8,
-	0, 0, 0, 5, 66, 0, 0, 0, 0, 0, 0, 8, 15, 58, 28, 3, 43, 51, 46,
-	8, 3, 3, 38, 0, 28, 0, 0, 0, 0, 0, 0, 0, 3, 3, 0, 0, 0, 0, 0,
-	0, 0, 0, 0, 0, 25, 104, 38, 46, 25, 0, 64, 0, 25, 0, 0, 0, 0,
-	0, 0, 0, 0, 0, 0, 38, 38, 0, 0, 61, 0, 0, 127, 5, 64, 0, 51,
-	43, 0, 157, 23, 0, 3, 0, 0, 41, 3, 0, 0, 10, 0, 0, 0, 0, 0, 0,
-	43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3,
-	114, 43, 51, 152, 3, 0, 0, 0, 0, 0, 89, 38, 213, 66, 0, 3, 320,
-	0, 23, 0, 64, 5, 30, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 102,
-	69, 5, 0, 0, 0, 0, 0, 0, 43, 91, 61, 84, 0, 41, 51, 178, 20,
-	25, 76, 8, 0, 76, 0, 0, 51, 18, 25, 3, 25, 66, 23, 0, 0, 0,
-	229, 56, 127, 38, 191, 173, 127, 66, 97, 38, 38, 76, 127, 318,
-	130, 229, 274, 43, 41, 5, 0, 0, 0, 0, 0, 0, 191, 5, 127, 41,
-	56, 3, 76, 5, 86, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 51,
-	165, 69, 0, 0, 8, 0, 0, 0, 0, 0, 0, 147, 56, 102, 51, 64, 0, 0,
-	0, 165, 127, 0, 23, 5, 5, 25, 0, 64, 0, 155, 5, 0, 64, 0, 117,
-	58, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 0, 0, 130, 66, 0,
-	0, 25, 3, 13, 0, 0, 23, 0, 0, 0, 114, 107, 76, 0, 23, 5, 112,
-	64, 0, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	0, 66, 51, 66, 0, 130, 0, 0, 41, 25, 89, 64, 3, 5, 30, 0, 0,
-	69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	0, 0, 0, 0, 0, 127, 0, 0, 0, 0, 0, 0, 0, 76, 0, 0, 127, 0, 183,
-	0, 38, 0, 0, 102, 53, 25, 0, 0, 69, 76, 0, 41, 0, 0, 0, 0, 3,
-	0, 0, 25, 0, 3, 38, 36, 0, 0, 0, 38, 0, 25, 64, 330, 64, 0, 0,
-	0, 0, 0, 0, 3, 0, 51, 8, 0, 0, 0, 0, 0, 0, 51, 74, 76, 0, 0, 0,
-	0, 0, 8, 3, 0, 0, 0, 0, 8, 0, 43, 0, 0, 0, 5, 91, 3, 109, 0,
-	76, 155, 43, 165, 127, 10, 3, 48, 0, 0, 8, 0, 165, 264, 8, 97,
-	107, 391, 173, 0, 64, 0, 25, 0, 0, 0, 0, 91, 0, 25, 0, 0, 0, 0,
-	94, 28, 0, 0, 114, 165, 5, 25, 0, 0, 0, 0, 5, 30, 0, 0, 0, 0,
-	0, 0, 89, 114, 48, 5, 76, 137, 127, 10, 102, 135, 102, 76, 114,
-	66, 64, 3, 0, 0, 3, 51, 64, 109, 64, 8, 28, 3, 224, 5, 51, 3,
-	3, 163, 0, 43, 66, 38, 74, 91, 15, 76, 0, 0, 3, 0, 0, 0, 0, 0,
-	38, 69, 0, 23, 25, 3, 23, 5, 0, 0, 0, 0, 0, 0, 0, 0, 5, 25, 94,
-	0, 0, 0, 0, 23, 3, 66, 152, 0, 0, 0, 0, 51, 0, 0, 0, 0, 0, 0,
-	0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 69, 0, 0, 38, 64, 0, 8, 89, 305,
-	130, 102, 318, 66, 71, 81, 0, 38, 10, 0, 5, 0, 0, 0, 0, 0, 64,
-	152, 89, 3, 0, 71, 69, 8, 0, 0, 25, 25, 3, 0, 0, 0, 0, 0, 15,
-	38, 0, 0, 0, 48, 0, 66, 81, 64, 0, 0, 0, 0, 51, 51, 0, 0, 0, 0,
-	64, 0, 0, 0, 0, 0, 0, 48, 25, 0, 0, 0, 0, 0, 0, 0, 30, 76, 38,
-	127, 124, 41, 3, 25, 0, 25, 89, 5, 0, 0, 38, 18, 0, 0, 0, 0,
-	165, 25, 0, 5, 48, 0, 0, 0, 0, 0, 76, 0, 0, 0, 64, 0, 0, 3, 0,
-	48, 0, 0, 0, 0, 0, 0, 56, 66, 0, 0, 0, 3, 0, 0, 0, 0, 76, 0, 0,
-	76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 89, 0, 0, 0, 0,
-	25, 28, 0, 0, 201, 0, 0, 114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	0, 0, 0, 0, 0, 0, 89, 76, 38, 51, 25, 5, 127, 43, 25, 38, 74,
-	38, 36, 254, 38, 0, 51, 94, 0, 0, 0, 0, 0, 117, 0, 0, 51, 61,
-	41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 99,
-	132, 0, 48, 0, 0, 38, 0, 0, 0, 0, 43, 218, 0, 102, 56, 117, 0,
-	130, 38, 86, 76, 41, 114, 36, 74, 51, 76, 137, 89, 33, 51, 0,
-	20, 76, 0, 203, 8, 0, 0, 43, 0, 66, 53, 64, 127, 10, 43, 8, 0,
-	25, 28, 127, 0, 0, 64, 0, 0, 5, 48, 0, 0, 23, 0, 0, 10, 0, 25,
-	23, 323, 23, 74, 229, 3, 0, 155, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	0, 0, 0, 0, 0, 51, 89, 51, 0, 84, 76, 30, 0, 0, 71, 5, 203, 51,
-	76, 157, 127, 102, 51, 51, 64, 127, 33, 74, 91, 89, 0, 89, 84,
-	0, 53, 74, 5, 25, 38, 0, 0, 0, 25, 0, 203, 79, 25, 102, 48,
-	203, 102, 25, 58, 23, 3, 76, 69, 119, 48, 38, 0, 38, 119, 178,
-	66, 0, 0, 0, 63, 43, 63, 0, 0, 0, 0, 0, 0, 0, 69, 71, 84, 0, 0,
-	0, 0, 0, 0, 0, 38, 0, 198, 119, 38, 79, 0, 229, 0, 0, 0, 8, 0,
-	0, 0, 61, 3, 76, 132, 165, 63, 74, 53, 10, 130, 190, 20, 28, 0,
-	0, 0, 0, 165, 66, 3, 0, 0, 0, 0, 0, 25, 97, 13, 25, 97, 28, 51,
-	0, 0, 0, 0, 0, 43, 23, 114, 25, 51, 23, 112, 152, 15, 0, 0, 0,
-	0, 0, 0, 0, 0, 0, 0, 89, 38, 46, 25, 41, 33, 15, 18, 5, 0, 0,
-	0, 0, 13, 28, 86, 0, 0, 142, 0, 8, 0, 0, 0, 13, 25, 0, 0, 0, 0,
-	0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 5, 0, 0, 0, 5, 25, 0, 0,
-	0, 13, 0, 0, 28, 43, 3, 0, 0, 69, 8, 3, 0, 0, 0, 30, 23, 0, 0,
-	69, 0, 0, 0, 0, 0, 0, 36, 0, 20, 20, 0, 0, 0, 46, 109, 0, 51,
-	48, 0, 0, 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, 53, 0, 0, 0, 0, 0, 0,
-	0, 0, 0, 0, 0, 18, 13, 30, 155, 36, 3, 0, 63, 0, 198, 36, 203,
-	0, 69, 104, 0, 43, 13, 41, 170, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	0, 0, 0, 5, 97, 46, 25, 81, 0, 13, 0, 41, 0, 0, 0, 0, 81, 0, 0,
-	0, 0, 0, 0, 0, 0, 0, 0, 46, 51, 33, 33, 0, 0, 0, 0, 0, 0, 0,
-	114, 63, 13, 0, 0, 18, 25, 0, 0, 0, 0, 5, 0, 0, 0, 0, 122, 147,
-	0, 102, 0, 0, 0, 0, 132, 119, 99, 36, 0, 89, 0, 18, 51, 97, 23,
-	0, 76, 0, 165, 254, 25, 36, 38, 25, 76, 41, 0, 25, 213, 140, 0,
-	79, 84, 198, 0, 8, 0, 46, 18, 25, 38, 163, 104, 36, 163, 30,
-	130, 30, 213, 43, 269, 41, 33, 18, 41, 89, 66, 20, 13, 46, 23,
-	127, 56, 3, 20, 15, 38, 56, 0, 18, 13, 20, 36, 23, 25, 102, 30,
-	28, 38, 58, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	0, 0, 0, 0, 0, 0, 0, 91, 48, 0, 0, 0, 25, 0, 38, 41, 13, 5, 0,
-	13, 0, 53, 0, 191, 330, 97, 89, 94, 41, 43, 38, 10, 18, 3, 0,
-	0, 0, 23, 28, 20, 81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	41, 0, 51, 13, 64, 0, 0, 0, 0, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	0, 0, 18, 38, 56, 127, 122, 79, 3, 8, 3, 0, 89, 0, 0, 0, 0, 0,
-	0, 0, 0, 0, 0, 0, 0, 10, 18, 86, 28, 25, 0, 0, 0, 0, 0, 0, 0,
-	0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 10, 0, 0,
-	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 23, 0, 0, 3,
-	0, 0, 13, 56, 15, 18, 38, 0, 211, 0, 0, 13, 114, 10, 13, 41,
-	203, 0, 13, 0, 0, 69, 71, 102, 38, 0, 0, 0, 0, 74, 0, 0, 0, 61,
-	0, 0, 5, 0, 28, 8, 15, 0, 28, 109, 0, 0, 0, 0, 0, 0, 0, 30, 18,
-	109, 25, 25, 13, 0, 0, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	0, 18, 25, 41, 0, 0, 0, 0, 0, 0, 64, 0, 0, 20, 0, 0, 0, 0, 130,
-	5, 8, 13, 38, 102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 94, 56, 15, 43,
-	5, 46, 0, 0, 0, 0, 0, 284, 76, 43, 74, 0, 0, 0, 0, 48, 0, 0, 0,
-	0, 33, 0, 0, 13, 178, 20, 0, 0, 0, 0, 0, 13, 15, 0, 23, 0, 0,
-	0, 112, 0, 0, 13, 13, 38, 25, 74, 79, 5, 76, 61, 130, 33, 46,
-	25, 66, 0, 0, 23, 46, 64, 28, 46, 33, 0, 58, 0, 0, 0, 168, 33,
-	218, 0, 0, 246, 28, 147, 8, 0, 0, 0, 13, 0, 122, 15, 137, 71,
-	145, 79, 117, 124, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 89,
-	33, 28, 61, 76, 41, 97, 0, 76, 51, 191, 208, 135, 48, 79, 66,
-	76, 71, 165, 20, 0, 0, 0, 0, 0, 109, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	112, 56, 0, 23, 28, 25, 20, 114, 0, 81, 94, 15, 38, 10, 28, 0,
-	0, 0, 0, 130, 213, 86, 132, 91, 0, 0, 0, 0, 0, 0, 46, 38, 41,
-	25, 13, 94, 38, 0, 0, 48, 147, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	0, 0, 142, 0, 28, 0, 0, 0, 18, 41, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	0, 0, 0, 0, 0, 0, 0, 10, 20, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0,
-	48, 0, 79, 79, 0, 0, 74, 23, 13, 196, 15, 76, 20, 216, 38, 130,
-	124, 10, 0, 0, 18, 25, 38, 25, 0, 28, 0, 8, 15, 33, 0, 0, 0, 0,
-	89, 0, 0, 25, 0, 36, 0, 13, 46, 23, 38, 64, 112, 119, 3, 165,
-	13, 112, 0, 0, 0, 48, 0, 0, 0, 0, 13, 66, 0, 25, 0, 18, 38, 18,
-	0, 117, 58, 86, 0, 33, 0, 0, 0, 0, 0, 0, 0, 0, 305, 33, 23, 0,
-	15, 0, 0, 13, 0, 0, 0, 0, 0, 160, 152, 0, 0, 0, 61, 58, 0, 0,
-	163, 58, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	0, 0, 0, 0, 0, 104, 25, 165, 23, 36, 0, 28, 165, 221, 102, 28,
-	53, 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, 43, 20, 0, 0, 0, 0, 0, 0, 46, 53, 89, 43,
-	325, 13, 300, 13, 25, 51, 89, 25, 94, 97, 239, 61, 15, 41, 51,
-	8, 13, 229, 114, 28, 25, 71, 64, 3, 0, 8, 13, 13, 0, 5, 0, 0,
-	20, 28, 0, 0, 8, 0, 10, 13, 18, 53, 69, 36, 25, 43, 0, 0, 0,
-	485, 353, 18, 406, 157, 38, 61, 107, 64, 81, 208, 130, 51, 0,
-	33, 79, 196, 160, 71, 165, 28, 51, 51, 114, 89, 10, 0, 15, 33,
-	23, 0, 0, 0, 0, 132, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0, 0,
-	51, 132, 30, 0, 0, 0, 23, 0, 0, 56, 20, 0, 0, 20, 0, 183, 15,
-	0, 127, 119, 107, 0, 15, 25, 0, 0, 0, 38, 0, 0, 102, 51, 0, 74,
-	0, 0, 0, 28, 0, 0, 36, 0, 0, 0, 25, 76, 61, 132, 51, 69, 0, 66,
-	0, 0, 0, 41, 0, 0, 28, 0, 51, 0, 10, 0, 51, 0, 0, 0, 0, 0, 0,
-	0, 0, 0, 3, 20, 0, 0, 0, 0, 0, 147, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 64, 0,
-	0, 15, 0, 51, 0, 0, 0, 3, 0, 5, 25, 18, 0, 0, 18, 0, 191, 0, 0,
-	0, 61, 0, 0, 0, 0, 0, 10, 8, 13, 3, 0, 0, 8, 53, 0, 30, 8, 0,
-	0, 178, 8, 18, 0, 81, 10, 264, 20, 36, 41, 0, 94, 3, 0, 0, 10,
-	0, 0, 0, 0, 0, 15, 127, 38, 8, 272, 23, 58, 66, 3, 109, 99, 3,
-	185, 10, 38, 0, 8, 0, 64, 81, 38, 0, 5, 8, 173, 25, 5, 76, 292,
-	124, 64, 25, 0, 0, 25, 76, 25, 76, 127, 76, 33, 43, 89, 305,
-	58, 3, 58, 64, 0, 0, 0, 41, 38, 114, 66, 3, 76, 56, 0, 0, 0,
-	241, 25, 127, 64, 89, 25, 38, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	267, 132, 114, 0, 0, 64, 114, 25, 0, 23, 25, 41, 0, 0, 0, 5,
-	13, 23, 0, 18, 23, 25, 66, 114, 127, 208, 51, 0, 43, 51, 0, 0,
-	76, 71, 13, 0, 15, 28, 157, 94, 33, 114, 157, 61, 25, 3, 41,
-	76, 132, 51, 25, 127, 130, 3, 132, 0, 0, 0, 0, 25, 0, 0, 0, 0,
-	0, 0, 0, 0, 0, 91, 0, 0, 114, 89, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	0, 38, 0, 0, 3, 5, 25, 0, 0, 69, 51, 43, 0, 0, 0, 0, 0, 0, 0,
-	0, 0, 0, 0, 0, 0, 0, 0, 25, 241, 114, 36, 0, 30, 0, 8, 66, 0,
-	0, 0, 0, 0, 0, 0, 0, 0, 43, 0, 114, 64, 0, 343, 0, 0, 0, 0, 0,
-	0, 0, 0, 0, 0, 119, 53, 89, 244, 0, 89, 0, 0, 30, 0, 8, 38, 5,
-	0, 38, 30, 193, 89, 48, 3, 0, 0, 0, 0, 46, 8, 25, 102, 25, 102,
-	102, 0, 0, 0, 0, 51, 25, 48, 0, 0, 0, 51, 8, 0, 38, 0, 51, 76,
-	292, 0, 0, 0, 0, 0, 0, 0, 0, 0, 127, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	0, 76, 56, 51, 135, 0, 0, 41, 0, 0, 0, 0, 0, 0, 0, 0, 191, 0,
-	0, 292, 3, 0, 0, 0, 56, 0, 173, 132, 15, 0, 0, 64, 0, 114, 41,
-	0, 41, 0, 0, 0, 0, 0, 127, 0, 46, 51, 117, 71, 163, 30, 25,
-	132, 127, 51, 0, 25, 0, 0, 64, 81, 38, 46, 0, 0, 0, 0, 0, 25,
-	76, 51, 66, 51, 25, 51, 229, 0, 23, 3, 25, 0, 66, 127, 8, 81,
-	66, 160, 91, 5, 0, 0, 89, 33, 10, 5, 15, 0, 66, 79, 328, 23, 0,
-	25, 0, 0, 0, 0, 0, 0, 0, 69, 38, 81, 51, 0, 0, 0, 48, 84, 135,
-	76, 226, 196, 175, 274, 0, 0, 0, 0, 0, 0, 0, 38, 5, 74, 0, 0,
-	5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 114, 102, 25, 137, 279, 89,
-	89, 5, 8, 140, 25, 0, 0, 0, 0, 0, 0, 0, 97, 114, 132, 0, 3, 5,
-	0, 0, 0, 140, 102, 89, 140, 216, 94, 33, 241, 76, 46, 251, 89,
-	20, 30, 18, 0, 0, 66, 0, 0, 0, 0, 8, 69, 15, 10, 0, 0, 0, 0, 0,
-	64, 5, 76, 229, 38, 61, 86, 5, 0, 64, 0, 0, 13, 0, 114, 25,
-	140, 23, 10, 61, 305, 170, 10, 51, 53, 76, 5, 18, 5, 8, 102,
-	185, 76, 104, 191, 89, 0, 8, 0, 0, 0, 0, 0, 0, 5, 0, 13, 36, 0,
-	0, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 25, 51, 0, 0, 0, 0, 0, 0,
-	38, 8, 0, 203, 119, 36, 0, 5, 64, 30, 0, 175, 28, 119, 15, 0,
-	0, 84, 0, 0, 0, 46, 23, 0, 8, 13, 5, 33, 25, 30, 0, 0, 69, 99,
-	117, 203, 25, 13, 28, 0, 0, 0, 0, 0, 0, 56, 36, 25, 0, 0, 0,
-	114, 25, 76, 41, 191, 46, 48, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	0, 0, 64, 0, 0, 53, 0, 0, 94, 23, 5, 0, 0, 0, 0, 0, 0, 30, 109,
-	0, 0, 152, 122, 33, 0, 61, 241, 122, 51, 3, 152, 25, 8, 0, 0,
-	0, 69, 5, 25, 170, 0, 198, 76, 191, 0, 0, 0, 0, 0, 0, 0, 25,
-	127, 38, 0, 0, 0, 0, 89, 0, 0, 0, 0, 51, 0, 0, 0, 91, 3, 0, 23,
-	25, 0, 0, 0, 0, 0, 51, 0, 5, 46, 457, 94, 43, 254, 15, 0, 97,
-	0, 0, 8, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84,
-	0, 8, 89, 180, 56, 318, 71, 25, 140, 127, 25, 25, 102, 130, 5,
-	335, 127, 5, 89, 53, 206, 94, 36, 41, 0, 0, 0, 0, 0, 0, 0, 0,
-	0, 0, 0, 99, 76, 69, 25, 0, 0, 0, 119, 58, 25, 0, 0, 0, 0, 0,
-	0, 99, 130, 20, 5, 0, 5, 0, 64, 25, 0, 0, 0, 173, 25, 43, 74,
-	38, 23, 51, 79, 64, 160, 188, 140, 23, 335, 150, 8, 66, 18, 66,
-	0, 18, 0, 0, 0, 0, 5, 10, 127, 0, 117, 81, 0, 76, 64, 107, 102,
-	53, 18, 81, 25, 43, 64, 51, 198, 51, 0, 114, 119, 137, 0, 0, 0,
-	0, 0, 0, 0, 38, 76, 25, 64, 152, 25, 28, 23, 0, 0, 3, 8, 0, 0,
-	0, 0, 0, 0, 53, 86, 38, 3, 5, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 94,
-	0, 0, 0, 0, 0, 0, 132, 102, 48, 71, 117, 18, 0, 0, 30, 0, 0, 0,
-	0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 140, 56, 0, 58, 23, 0,
-	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 10, 15, 43, 69, 81, 0, 191,
-	25, 0, 0, 0, 0, 71, 0, 165, 64, 183, 25, 94, 0, 0, 5, 89, 0, 0,
-	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 127, 41, 0, 28,
-	0, 5, 0, 0, 0, 0, 0, 0, 13, 28, 180, 0, 3, 0, 0, 114, 0, 25, 0,
-	0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 30, 58, 114, 0, 5, 0, 5, 0, 0,
-	0, 64, 0, 23, 89, 0, 25, 10, 0, 0, 0, 0, 0, 0, 30, 0, 53, 0, 0,
-	0, 5, 0, 43, 0, 0, 33, 0, 5, 0, 43, 0, 0, 0, 56, 0, 0, 0, 0, 0,
-	0, 58, 81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71, 5, 3, 0, 76,
-	25, 117, 23, 41, 0, 0, 0, 0, 0, 0, 0, 183, 89, 0, 64, 71, 0, 0,
-	0, 318, 0, 0, 163, 0, 79, 51, 348, 353, 229, 0, 86, 89, 10, 89,
-	102, 132, 64, 81, 38, 249, 64, 0, 0, 53, 25, 28, 119, 46, 5, 3,
-	81, 33, 30, 38, 5, 3, 0, 0, 0, 0, 0, 0, 38, 0, 0, 8, 3, 0, 0,
-	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 64, 30, 23, 41, 33, 76,
-	0, 56, 20, 53, 191, 130, 102, 58, 74, 0, 0, 94, 36, 51, 0, 208,
-	13, 157, 13, 378, 43, 64, 84, 86, 0, 0, 0, 30, 0, 0, 0, 0, 0,
-	0, 0, 0, 0, 0, 0, 0, 0, 114, 28, 99, 89, 114, 41, 79, 259, 51,
-	140, 43, 8, 76, 66, 33, 56, 76, 25, 18, 41, 0, 0, 0, 0, 0, 3,
-	5, 3, 0, 10, 13, 173, 127, 122, 102, 38, 28, 79, 46, 30, 203,
-	0, 69, 10, 38, 114, 152, 33, 102, 10, 0, 0, 0, 0, 0, 13, 0, 0,
-	0, 0, 0, 0, 20, 3, 8, 15, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	0, 13, 0, 8, 0, 0, 18, 13, 104, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0,
-	30, 25, 33, 0, 0, 0, 0, 0, 0, 30, 0, 25, 0, 0, 0, 0, 0, 0, 0,
-	0, 254, 28, 89, 0, 5, 25, 28, 64, 33, 56, 28, 0, 38, 33, 33,
-	51, 0, 127, 284, 41, 69, 0, 0, 0, 0, 25, 0, 0, 767, 61, 0, 0,
-	0, 3, 43, 8, 10, 5, 51, 58, 102, 259, 10, 48, 25, 0, 0, 0, 0,
-	0, 0, 30, 89, 66, 38, 5, 25, 33, 69, 5, 81, 3, 173, 10, 53, 99,
-	51, 0, 5, 28, 3, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 208, 3, 48,
-	112, 127, 23, 20, 51, 117, 155, 38, 43, 51, 0, 0, 152, 157,
-	127, 61, 66, 69, 8, 79, 86, 25, 51, 8, 0, 0, 0, 0, 0, 0, 0, 0,
-	0, 0, 0, 0, 0, 0, 0, 69, 38, 3, 165, 160, 0, 46, 30, 15, 114,
-	5, 76, 71, 5, 64, 0, 5, 46, 64, 89, 53, 0, 41, 46, 51, 0, 0,
-	30, 5, 0, 157, 114, 99, 79, 64, 23, 66, 0, 0, 0, 23, 51, 0, 0,
-	0, 0, 0, 0, 130, 203, 0, 36, 0, 0, 0, 0, 30, 66, 0, 0, 0, 0, 0,
-	132, 323, 114, 81, 147, 254, 0, 0, 0, 0, 0, 0, 269, 30, 0, 30,
-	20, 28, 0, 8, 15, 56, 0, 168, 0, 56, 64, 0, 0, 69, 0, 81, 272,
-	0, 145, 81, 8, 86, 18, 340, 13, 61, 64, 36, 86, 23, 86, 30, 23,
-	18, 36, 10, 79, 3, 279, 10, 36, 15, 43, 0, 0, 0, 0, 0, 0, 0, 0,
-	0, 0, 0, 33, 112, 0, 28, 38, 13, 5, 36, 8, 0, 0, 0, 0, 0, 0, 0,
-	13, 69, 10, 61, 259, 208, 155, 86, 66, 3, 61, 36, 20, 79, 99,
-	61, 13, 0, 41, 64, 18, 23, 0, 5, 81, 61, 46, 28, 30, 10, 18,
-	18, 3, 0, 13, 0, 0, 0, 0, 0, 0, 0, 13, 18, 0, 0, 3, 0, 0, 0, 0,
-	0, 0, 33, 0, 0, 0, 0, 0, 0, 0, 0, 3, 66, 10, 13, 38, 0, 13,
-	191, 0, 0, 5, 3, 0, 0, 5, 46, 0, 0, 0, 89, 0, 43, 25, 91, 5,
-	18, 0, 0, 0, 76, 5, 0, 0, 53, 25, 0, 25, 5, 0, 0, 15, 43, 8,
-	30, 3, 0, 0, 0, 43, 0, 0, 8, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	0, 0, 0, 0, 0, 0, 15, 8, 25, 114, 51, 36, 165, 114, 0, 0, 0, 0,
-	0, 0, 38, 0, 0, 33, 135, 38, 36, 41, 0, 0, 0, 0, 30, 122, 43,
-	5, 0, 38, 3, 117, 46, 43, 8, 0, 0, 0, 0, 0, 0, 41, 0, 102, 0,
-	10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 0, 0, 127,
-	173, 0, 0, 0, 0, 0, 175, 0, 0, 71, 76, 91, 104, 64, 20, 0, 81,
-	38, 79, 0, 86, 196, 28, 10, 188, 48, 38, 18, 213, 61, 3, 36,
-	38, 18, 25, 10, 0, 0, 15, 15, 0, 0, 0, 89, 38, 28, 3, 150, 91,
-	124, 38, 48, 94, 102, 109, 86, 130, 69, 71, 51, 30, 18, 33, 3,
-	13, 3, 0, 8, 5, 30, 10, 13, 58, 338, 3, 0, 0, 0, 76, 130, 5,
-	18, 36, 0, 3, 8, 20, 43, 99, 20, 282, 46, 66, 61, 0, 0, 0, 0,
-	0, 0, 0, 0, 0, 36, 3, 0, 0, 0, 5, 18, 0, 13, 13, 0, 0, 0, 119,
-	0, 0, 0, 0, 0, 180, 0, 61, 0, 366, 20, 0, 0, 33, 28, 0, 33, 43,
-	15, 0, 0, 0, 0, 8, 13, 0, 0, 0, 33, 0, 0, 5, 0, 15, 0, 0, 0, 0,
-	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 84,
-	0, 0, 20, 18, 0, 0, 0, 0, 0, 0, 13, 0, 0, 51, 13, 0, 0, 0, 0,
-	0, 3, 3, 0, 43, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 23, 0, 76, 5, 8,
-	0, 5, 0, 15, 180, 287, 8, 28, 10, 0, 13, 71, 0, 25, 226, 0, 0,
-	0, 0, 0, 0, 0, 3, 58, 0, 0, 0, 36, 0, 58, 0, 0, 23, 8, 0, 0,
-	109, 5, 0, 41, 0, 0, 0, 180, 71, 117, 64, 0, 0, 0, 0, 0, 0, 0,
-	0, 0, 0, 0, 0, 0, 58, 74, 0, 0, 38, 5, 112, 0, 0, 0, 0, 0, 0,
-	0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 20, 3, 0, 0, 0, 0, 305, 13, 18,
-	99, 3, 0, 457, 117, 91, 109, 0, 43, 0, 0, 20, 0, 5, 0, 38, 61,
-	51, 23, 0, 25, 25, 0, 3, 46, 0, 0, 0, 0, 0, 0, 36, 0, 0, 3, 0,
-	0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 5, 13, 0, 3, 0, 0, 0,
-	0, 0, 0, 0, 46, 86, 137, 71, 5, 132, 866, 25, 213, 30, 0, 0,
-	46, 3, 0, 0, 0, 0, 18, 122, 0, 127, 0, 18, 38, 211, 20, 0, 36,
-	79, 56, 0, 0, 0, 23, 0, 0, 244, 23, 140, 0, 89, 25, 295, 48, 5,
-	0, 127, 18, 0, 356, 478, 81, 124, 201, 91, 475, 74, 20, 282,
-	175, 191, 23, 135, 109, 48, 343, 81, 229, 201, 132, 109, 114,
-	10, 23, 25, 64, 0, 0, 0, 0, 46, 267, 5, 91, 175, 277, 36, 53,
-	33, 231, 86, 109, 10, 43, 3, 46, 211, 53, 8, 109, 3, 91, 163,
-	94, 76, 20, 188, 8, 0, 0, 0, 0, 0, 0, 239, 10, 112, 13, 114, 0,
-	23, 46, 20, 300, 64, 0, 119, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10,
-	8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 33, 0, 0, 0, 0, 0, 18, 0, 94,
-	0, 0, 165, 58, 46, 10, 23, 79, 13, 0, 23, 25, 5, 5, 10, 48, 69,
-	0, 0, 5, 20, 28, 10, 137, 3, 206, 18, 104, 53, 0, 0, 0, 61,
-	160, 8, 28, 10, 86, 5, 18, 0, 5, 0, 33, 10, 0, 10, 10, 8, 28,
-	0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 5, 13, 53, 51, 0, 132, 71, 5,
-	0, 0, 41, 48, 15, 0, 0, 23, 0, 0, 51, 30, 0, 10, 15, 25, 8, 0,
-	0, 0, 0, 0, 0, 0, 0, 0, 13, 18, 0, 0, 23, 0, 0, 0, 0, 20, 20,
-	28, 0, 74, 10, 5, 0, 18, 0, 0, 18, 3, 112, 33, 0, 18, 3, 18, 3,
-	0, 0, 0, 0, 28, 23, 132, 13, 30, 20, 48, 109, 3, 0, 0, 0, 30,
-	18, 66, 18, 69, 0, 3, 157, 20, 168, 28, 178, 117, 3, 3, 0, 18,
-	3, 13, 36, 0, 18, 0, 41, 28, 18, 485, 10, 137, 3, 0, 0, 0, 0,
-	0, 0, 0, 0, 0, 0, 3, 15, 3, 46, 0, 84, 10, 155, 0, 15, 145, 3,
-	33, 46, 254, 267, 175, 155, 15, 23, 25, 25, 41, 3, 0, 15, 0, 0,
-	0, 0, 48, 86, 69, 58, 94, 25, 5, 3, 18, 0, 10, 119, 241, 18,
-	25, 53, 84, 46, 56, 216, 13, 216, 18, 25, 38, 25, 10, 5, 122,
-	94, 122, 0, 33, 122, 8, 114, 13, 10, 0, 0, 0, 0, 3, 61, 0, 0,
-	76, 183, 185, 175, 30, 241, 41, 48, 86, 0, 122, 0, 0, 0, 25, 0,
-	0, 0, 10, 38, 71, 104, 51, 226, 51, 38, 38, 208, 41, 20, 76,
-	15, 0, 0, 0, 13, 13, 25, 18, 36, 130, 76, 107, 15, 0, 33, 91,
-	10, 0, 0, 0, 0, 0, 18, 107, 13, 0, 23, 5, 13, 5, 13, 25, 8,
-	107, 175, 74, 53, 25, 3, 41, 18, 13, 20, 234, 8, 8, 0, 0, 160,
-	15, 23, 36, 61, 25, 109, 58, 43, 38, 30, 56, 10, 0, 36, 41, 28,
-	18, 10, 25, 30, 41, 36, 56, 0, 0, 160, 5, 10, 0, 0, 0, 0, 0, 0,
-	0, 10, 0, 0, 0, 0, 0, 51, 86, 5, 10, 0, 0, 0, 0, 0, 58, 5, 0,
-	0, 61, 122, 0, 5, 86, 18, 0, 46, 0, 0, 0, 0, 0, 0, 3, 25, 10,
-	25, 13, 0, 8, 0, 246, 160, 46, 53, 5, 8, 0, 0, 0, 0, 0, 0, 3,
-	36, 69, 0, 0, 58, 0, 13, 30, 46, 23, 25, 0, 0, 0, 0, 46, 94,
-	135, 3, 0, 0, 173, 0, 38, 71, 175, 0, 0, 0, 0, 112, 46, 53,
-	107, 18, 33, 58, 0, 0, 53, 0, 269, 0, 48, 33, 0, 0, 0, 0, 0, 0,
-	0, 0, 0, 0, 0, 36, 0, 46, 74, 0, 46, 102, 0, 15, 51, 56, 206,
-	51, 183, 23, 5, 86, 51, 13, 3, 0, 5, 0, 284, 25, 71, 28, 3, 3,
-	18, 5, 0, 0, 0, 307, 94, 3, 56, 150, 15, 28, 5, 8, 15, 140,
-	236, 38, 0, 239, 51, 94, 0, 0, 0, 30, 0, 0, 0, 8, 71, 0, 0,
-	163, 119, 434, 25, 56, 3, 0, 0, 0, 5, 10, 30, 0, 28, 0, 23, 18,
-	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 3, 5, 0, 5, 0, 155, 0,
-	0, 0, 0, 0, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10,
-	53, 13, 3, 0, 0, 74, 594, 0, 3, 15, 150, 8, 109, 112, 124, 0,
-	5, 231, 0, 0, 3, 102, 99, 25, 13, 10, 191, 0, 36, 290, 48, 5,
-	43, 0, 0, 84, 43, 8, 76, 107, 36, 15, 5, 13, 0, 0, 0, 0, 0, 0,
-	0, 0, 0, 0, 0, 0, 0, 5, 10, 0, 0, 86, 8, 10, 130, 38, 3, 10,
-	25, 114, 157, 99, 0, 351, 170, 15, 239, 30, 64, 13, 114, 10, 5,
-	10, 3, 5, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0,
-	0, 0, 41, 0, 10, 10, 5, 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	38, 3, 0, 0, 43, 58, 114, 28, 188, 97, 58, 30, 43, 0, 0, 0, 43,
-	3, 5, 107, 94, 38, 3, 94, 15, 13, 36, 3, 10, 15, 8, 10, 23, 0,
-	0, 18, 33, 99, 15, 76, 74, 0, 8, 0, 0, 3, 20, 0, 71, 28, 8, 94,
-	157, 20, 64, 18, 0, 8, 180, 86, 183, 3, 10, 0, 0, 5, 3, 43, 38,
-	51, 10, 5, 0, 0, 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 152, 533, 30, 0, 15, 25, 30,
-	64, 10, 3, 0, 0, 0, 0, 48, 5, 0, 38, 0, 0, 15, 5, 5, 23, 51,
-	175, 79, 18, 8, 38, 5, 147, 0, 36, 5, 0, 15, 0, 0, 0, 0, 0, 0,
-	0, 0, 30, 10, 0, 0, 0, 0, 0, 46, 259, 0, 0, 0, 0, 0, 0, 0, 119,
-	10, 0, 10, 132, 135, 0, 38, 114, 188, 28, 0, 18, 0, 18, 3, 0,
-	0, 0, 0, 216, 20, 0, 0, 112, 0, 28, 56, 0, 0, 0, 107, 193, 3,
-	5, 38, 0, 0, 3, 335, 76, 3, 203, 25, 84, 234, 41, 43, 13, 13,
-	3, 97, 175, 213, 107, 145, 36, 109, 51, 99, 10, 145, 33, 3, 5,
-	5, 3, 132, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 46, 8, 97,
-	20, 114, 137, 5, 38, 53, 10, 0, 66, 191, 3, 102, 10, 0, 0, 0,
-	0, 0, 0, 0, 13, 0, 81, 18, 8, 0, 5, 0, 0, 20, 145, 33, 79, 0,
-	3, 0, 48, 18, 231, 0, 188, 97, 198, 15, 51, 10, 0, 13, 25, 0,
-	3, 28, 0, 18, 79, 109, 8, 53, 23, 51, 0, 0, 0, 0, 0, 0, 0, 0,
-	0, 30, 23, 76, 191, 5, 23, 5, 5, 140, 46, 3, 10, 43, 0, 0, 0,
-	0, 0, 5, 33, 0, 5, 23, 20, 0, 244, 30, 56, 76, 84, 206, 94, 79,
-	38, 0, 191, 13, 8, 0, 0, 0, 0, 0, 0, 0, 91, 236, 64, 61, 124,
-	0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 25, 36, 0, 0, 0, 0, 0, 0, 0, 0,
-	0, 0, 0, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 61, 76, 28, 74, 0,
-	58, 41, 86, 5, 43, 23, 38, 173, 114, 30, 18, 38, 0, 0, 3, 43,
-	0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 8, 8, 13, 0, 0, 0, 0, 13, 58,
-	140, 10, 0, 0, 0, 0, 0, 0, 0, 0, 58, 33, 0, 0, 13, 30, 36, 91,
-	89, 36, 15, 56, 3, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 41,
-	30, 81, 20, 33, 58, 117, 112, 305, 8, 3, 0, 0, 0, 0, 0, 0, 0,
-	0, 0, 0, 104, 20, 25, 0, 0, 0, 0, 0, 0, 0, 0, 15, 3, 0, 150, 0,
-	25, 25, 5, 0, 3, 0, 0, 25, 56, 94, 3, 0, 0, 0, 0, 0, 0, 0, 0,
-	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 41, 0, 89,
-	185, 0, 117, 53, 13, 5, 0, 0, 0, 0, 30, 0, 0, 0, 0, 0, 15, 5,
-	0, 89, 302, 13, 0, 46, 0, 43, 0, 0, 3, 18, 0, 38, 0, 290, 20,
-	0, 69, 99, 104, 8, 20, 28, 30, 25, 0, 0, 0, 0, 0, 0, 30, 48, 0,
-	0, 41, 51, 25, 0, 0, 3, 119, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	218, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	0, 0, 0, 0, 0, 0, 231, 13, 18, 13, 0, 38, 30, 13, 38, 0, 38,
-	18, 0, 0, 213, 104, 25, 142, 163, 97, 10, 89, 13, 0, 0, 0, 20,
-	0, 0, 117, 5, 0, 0, 0, 5, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 0, 0, 0, 0, 0, 20, 0,
-	28, 28, 71, 0, 0, 79, 130, 15, 0, 0, 191, 41, 79, 28, 84, 30,
-	0, 38, 18, 0, 13, 0, 23, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 51, 0,
-	0, 0, 36, 41, 8, 165, 3, 0, 0, 5, 165, 0, 61, 0, 0, 69, 20, 94,
-	10, 0, 13, 0, 0, 0, 0, 0, 130, 150, 203, 0, 28, 0, 0, 0, 0, 0,
-	0, 38, 18, 3, 0, 18, 3, 18, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0,
-	0, 0, 18, 13, 46, 0, 0, 0, 0, 0, 3, 0, 33, 0, 0, 3, 13, 0, 58,
-	0, 94, 28, 206, 102, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	0, 107, 0, 0, 0, 0, 0, 5, 0, 33, 0, 0, 0, 15, 0, 3, 0, 5, 15,
-	5, 66, 218, 3, 76, 20, 409, 10, 13, 15, 0, 10, 66, 122, 0, 0,
-	0, 0, 0, 0, 8, 0, 18, 18, 20, 0, 0, 0, 10, 155, 23, 122, 5, 0,
-	234, 0, 0, 10, 15, 3, 15, 0, 0, 0, 0, 0, 0, 18, 122, 28, 0, 48,
-	48, 0, 122, 61, 0, 3, 46, 10, 109, 10, 36, 0, 0, 53, 112, 64,
-	36, 43, 0, 5, 0, 0, 0, 10, 18, 38, 15, 43, 5, 5, 0, 74, 0, 20,
-	38, 180, 10, 28, 33, 18, 61, 58, 122, 20, 0, 0, 25, 48, 13, 79,
-	41, 36, 0, 0, 0, 0, 61, 0, 0, 0, 0, 175, 10, 8, 0, 0, 0, 15,
-	38, 5, 3, 13, 229, 10, 191, 81, 201, 130, 241, 427, 25, 66, 84,
-	51, 48, 71, 79, 84, 79, 170, 74, 36, 10, 84, 43, 38, 157, 84,
-	43, 300, 15, 66, 15, 61, 3, 8, 0, 0, 0, 0, 0, 0, 0, 66, 48, 25,
-	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 64, 0, 0, 0, 0, 28, 0, 30,
-	23, 3, 112, 64, 0, 0, 0, 0, 0, 0, 43, 38, 30, 15, 23, 0, 30,
-	13, 104, 185, 10, 38, 130, 155, 145, 53, 56, 157, 30, 20, 0, 8,
-	0, 0, 0, 0, 89, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 3, 41, 30, 5, 0,
-	0, 0, 0, 0, 0, 0, 3, 0, 8, 28, 18, 114, 119, 76, 145, 53, 3, 0,
-	71, 30, 157, 48, 28, 132, 28, 86, 8, 124, 13, 53, 0, 0, 0, 0,
-	0, 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 198,
-	36, 145, 10, 0, 0, 0, 8, 13, 0, 0, 0, 86, 0, 0, 53, 5, 30, 46,
-	119, 157, 13, 0, 8, 23, 69, 81, 0, 71, 74, 10, 84, 3, 5, 3, 0,
-	0, 0, 114, 112, 13, 0, 0, 0, 20, 10, 0, 3, 0, 0, 0, 0, 5, 0, 8,
-	0, 0, 0, 0, 0, 5, 0, 0, 36, 10, 61, 0, 0, 0, 0, 0, 18, 25, 0,
-	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 46, 0, 0, 0, 0, 10, 10,
-	0, 0, 0, 0, 89, 61, 0, 76, 33, 15, 0, 163, 15, 122, 64, 145,
-	10, 28, 0, 0, 0, 0, 0, 48, 10, 5, 160, 33, 104, 23, 79, 25, 0,
-	48, 25, 69, 20, 0, 46, 30, 76, 81, 41, 28, 94, 86, 216, 833,
-	18, 79, 38, 178, 13, 10, 3, 5, 3, 3, 20, 0, 23, 66, 8, 8, 30,
-	53, 33, 0, 28, 23, 30, 5, 8, 137, 5, 33, 74, 46, 25, 10, 8, 81,
-	206, 5, 157, 46, 107, 549, 56, 203, 3, 5, 43, 36, 0, 0, 0, 0,
-	0, 25, 23, 18, 36, 201, 102, 38, 53, 89, 38, 56, 36, 18, 0, 0,
-	0, 0, 0, 107, 33, 0, 0, 30, 0, 0, 0, 0, 43, 99, 38, 155, 76,
-	13, 152, 198, 89, 10, 3, 25, 15, 99, 43, 66, 84, 94, 15, 79, 5,
-	0, 5, 0, 3, 86, 20, 124, 53, 10, 79, 10, 58, 64, 137, 91, 183,
-	20, 124, 46, 25, 3, 0, 13, 64, 0, 0, 0, 216, 137, 3, 0, 0, 3,
-	10, 38, 239, 51, 13, 81, 0, 33, 23, 8, 0, 28, 51, 13, 36, 5, 0,
-	36, 38, 25, 10, 46, 170, 56, 0, 0, 0, 0, 0, 0, 0, 0, 20, 43, 3,
-	81, 3, 13, 28, 71, 20, 15, 246, 3, 0, 173, 79, 0, 132, 0, 0, 0,
-	0, 0, 0, 0, 0, 25, 0, 0, 8, 5, 3, 0, 36, 18, 119, 0, 53, 15,
-	53, 0, 13, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 5, 0,
-	23, 43, 18, 0, 0, 0, 0, 0, 15, 30, 0, 0, 0, 0, 0, 28, 33, 15,
-	99, 5, 18, 0, 8, 10, 0, 5, 0, 99, 8, 0, 13, 0, 0, 0, 0, 13, 15,
-	0, 0, 0, 28, 15, 0, 0, 0, 592, 41, 269, 104, 10, 3, 178, 122,
-	15, 213, 211, 48, 38, 86, 20, 229, 25, 28, 241, 119, 23, 13, 3,
-	104, 25, 5, 23, 13, 41, 5, 0, 56, 81, 10, 3, 13, 0, 25, 8, 0,
-	0, 0, 0, 38, 3, 5, 0, 3, 0, 5, 0, 51, 10, 0, 0, 0, 0, 0, 0, 0,
-	0, 0, 0, 0, 0, 155, 89, 107, 23, 124, 10, 0, 61, 3, 43, 28, 10,
-	46, 10, 0, 0, 0, 0, 135, 3, 0, 0, 18, 18, 5, 0, 0, 0, 0, 0, 0,
-	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 46, 0, 0, 18, 3, 8, 0, 8, 5,
-	46, 107, 74, 20, 71, 5, 41, 10, 0, 109, 41, 30, 46, 5, 287,
-	168, 203, 84, 38, 229, 51, 43, 5, 94, 38, 20, 0, 0, 0, 0, 0, 0,
-	3, 0, 0, 18, 0, 30, 8, 5, 0, 51, 114, 38, 8, 8, 48, 0, 0, 18,
-	20, 318, 208, 267, 58, 231, 15, 8, 5, 3, 8, 5, 13, 0, 0, 0, 76,
-	43, 3, 168, 89, 23, 0, 46, 117, 25, 0, 0, 25, 48, 69, 295, 0,
-	0, 274, 155, 284, 18, 56, 300, 373, 3, 130, 160, 3, 3, 25, 5,
-	5, 112, 38, 10, 282, 191, 157, 3, 66, 122, 43, 30, 10, 0, 79,
-	74, 33, 81, 28, 33, 94, 10, 3, 211, 10, 84, 157, 325, 86, 99,
-	109, 13, 0, 0, 0, 0, 56, 8, 0, 38, 201, 107, 36, 61, 20, 91,
-	127, 137, 185, 56, 122, 0, 25, 13, 18, 183, 0, 0, 0, 0, 0, 0,
-	56, 71, 28, 3, 10, 94, 76, 5, 66, 170, 48, 51, 25, 0, 170, 15,
-	0, 0, 48, 53, 18, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 48, 0,
-	18, 0, 119, 13, 0, 76, 152, 0, 0, 0, 0, 0, 0, 33, 76, 130, 163,
-	64, 5, 3, 13, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 74, 51, 5, 20,
-	28, 84, 25, 3, 0, 3, 0, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 3,
-	23, 5, 0, 48, 0, 168, 15, 0, 25, 10, 0, 193, 76, 0, 5, 0, 23,
-	0, 0, 15, 0, 33, 36, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	5, 0, 0, 58, 10, 0, 28, 218, 5, 0, 64, 3, 0, 0, 0, 0, 0, 0, 0,
-	0, 0, 0, 0, 0, 0, 0, 0, 51, 0, 0, 0, 0, 30, 0, 127, 0, 0, 170,
-	76, 20, 137, 86, 71, 36, 61, 0, 48, 3, 0, 23, 0, 0, 0, 0, 0,
-	10, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	0, 66, 165, 86, 147, 56, 0, 137, 25, 137, 5, 64, 3, 0, 0, 0, 0,
-	0, 13, 0, 0, 0, 0, 3, 0, 0, 0, 5, 23, 79, 33, 0, 43, 239, 0, 0,
-	0, 0, 0, 0, 86, 157, 203, 5, 0, 183, 28, 0, 30, 0, 0, 114, 28,
-	208, 53, 64, 48, 0, 0, 0, 30, 157, 18, 13, 5, 8, 13, 3, 0, 0,
-	0, 0, 0, 0, 0, 0, 0, 8, 15, 130, 236, 127, 119, 41, 81, 23,
-	239, 137, 86, 0, 112, 0, 18, 0, 15, 3, 0, 51, 135, 201, 58, 51,
-	20, 163, 66, 8, 0, 0, 0, 0, 0, 25, 46, 0, 0, 8, 0, 0, 0, 8, 28,
-	0, 0, 0, 0, 0, 0, 13, 193, 74, 38, 53, 0, 0, 0, 0, 0, 0, 0, 0,
-	5, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 25, 0, 64, 0, 15, 20, 0, 5,
-	18, 8, 13, 0, 33, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	0, 0, 0, 0, 10, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	0, 0, 0, 109, 168, 117, 61, 10, 58, 18, 0, 0, 0, 0, 0, 0, 41,
-	206, 58, 15, 91, 3, 89, 229, 0, 18, 3, 30, 94, 0, 0, 5, 0, 8,
-	0, 0, 0, 0, 0, 0, 33, 0, 0, 0, 53, 15, 0, 0, 0, 64, 58, 30, 3,
-	5, 3, 23, 127, 38, 340, 104, 81, 0, 81, 36, 0, 0, 119, 0, 0,
-	15, 10, 10, 0, 0, 0, 0, 5, 41, 13, 198, 10, 3, 10, 0, 142, 0,
-	673, 46, 30, 0, 20, 8, 20, 38, 0, 8, 3, 0, 15, 20, 0, 38, 0,
-	18, 48, 312, 8, 13, 0, 0, 241, 104, 0, 0, 0, 0, 0, 0, 0, 23,
-	25, 51, 3, 0, 0, 0, 0, 0, 20, 0, 0, 43, 135, 38, 13, 61, 18, 5,
-	8, 0, 0, 0, 25, 48, 41, 196, 94, 254, 99, 114, 48, 36, 142, 13,
-	3, 5, 147, 28, 0, 48, 0, 48, 25, 0, 0, 0, 18, 0, 0, 48, 43, 30,
-	36, 43, 0, 86, 18, 0, 53, 10, 3, 5, 8, 0, 3, 0, 218, 302, 10,
-	0, 69, 13, 5, 147, 259, 86, 124, 94, 132, 66, 361, 15, 122, 41,
-	64, 61, 43, 18, 10, 66, 18, 15, 53, 23, 368, 165, 178, 38, 226,
-	0, 185, 10, 8, 0, 0, 5, 0, 0, 0, 0, 0, 64, 0, 18, 28, 18, 86,
-	66, 28, 109, 25, 0, 140, 0, 38, 25, 84, 36, 33, 3, 295, 170,
-	38, 246, 20, 71, 152, 140, 198, 3, 155, 91, 8, 0, 0, 0, 0, 0,
-	0, 0, 0, 0, 0, 0, 89, 160, 8, 0, 3, 15, 0, 5, 3, 10, 18, 36, 0,
-	0, 244, 127, 8, 10, 48, 43, 157, 38, 41, 0, 58, 160, 10, 18, 0,
-	20, 36, 10, 48, 0, 0, 0, 0, 8, 0, 25, 0, 0, 20, 58, 36, 58, 3,
-	0, 0, 0, 0, 0, 0, 48, 46, 178, 384, 20, 74, 0, 0, 0, 0, 0, 58,
-	86, 43, 10, 36, 0, 0, 0, 0, 10, 8, 94, 38, 33, 10, 0, 3, 28,
-	61, 3, 0, 0, 150, 74, 5, 0, 25, 0, 0, 0, 0, 0, 38, 15, 5, 3, 0,
-	0, 23, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 99,
-	0, 0, 23, 0, 0, 30, 36, 218, 0, 61, 5, 0, 36, 41, 71, 0, 81,
-	97, 0, 43, 20, 28, 5, 3, 5, 0, 122, 117, 277, 20, 41, 0, 0, 0,
-	0, 188, 279, 211, 79, 99, 102, 76, 30, 76, 84, 64, 33, 18, 5,
-	15, 30, 97, 25, 28, 15, 150, 5, 25, 5, 15, 23, 10, 69, 25, 0,
-	0, 0, 0, 0, 0, 0, 0, 64, 109, 25, 28, 0, 0, 36, 74, 5, 0, 0, 0,
-	94, 0, 81, 269, 5, 0, 0, 0, 0, 0, 41, 0, 64, 0, 0, 0, 0, 0, 0,
-	0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 91, 216, 20, 0,
-	231, 0, 25, 25, 36, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 53, 38,
-	25, 0, 0, 53, 30, 109, 94, 64, 36, 97, 310, 33, 124, 142, 41,
-	0, 3, 10, 48, 89, 109, 102, 66, 292, 8, 0, 0, 165, 254, 0, 150,
-	163, 48, 124, 23, 61, 33, 13, 198, 97, 53, 5, 152, 56, 36, 130,
-	10, 0, 0, 8, 0, 0, 0, 15, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	0, 0, 0, 0, 0, 18, 145, 20, 0, 0, 0, 0, 0, 0, 0, 0, 51, 0, 203,
-	0, 0, 0, 0, 0, 25, 165, 127, 152, 36, 25, 8, 3, 0, 30, 142,
-	109, 30, 191, 8, 0, 0, 0, 0, 0, 0, 41, 23, 333, 119, 137, 30,
-	0, 0, 0, 30, 0, 0, 246, 69, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	0, 0, 69, 102, 8, 0, 180, 150, 127, 89, 8, 0, 46, 71, 8, 0, 0,
-	0, 10, 64, 8, 20, 20, 25, 20, 53, 0, 5, 13, 0, 0, 0, 0, 20, 0,
-	0, 58, 15, 0, 117, 43, 51, 0, 23, 8, 5, 3, 15, 15, 20, 259, 48,
-	33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	18, 0, 10, 5, 79, 102, 84, 81, 0, 10, 0, 0, 0, 0, 46, 0, 0, 0,
-	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 150, 0, 3, 91, 28, 0,
-	0, 36, 0, 0, 15, 0, 36, 51, 61, 20, 13, 173, 102, 124, 470,
-	185, 10, 8, 38, 86, 15, 107, 5, 3, 0, 64, 0, 33, 30, 0, 0, 0,
-	0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 25, 23, 3, 15, 0, 0, 0, 0, 30,
-	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20,
-	36, 5, 30, 0, 180, 5, 66, 61, 66, 15, 86, 76, 10, 0, 119, 0, 0,
-	0, 0, 0, 0, 0, 0, 0, 0, 28, 69, 30, 89, 18, 107, 30, 56, 0, 0,
-	38, 109, 33, 0, 0, 0, 25, 74, 0, 3, 18, 0, 0, 0, 0, 0, 0, 127,
-	292, 142, 320, 330, 107, 127, 91, 0, 114, 249, 81, 267, 53,
-	216, 28, 137, 28, 20, 13, 89, 38, 147, 0, 13, 13, 0, 0, 0, 0,
-	0, 0, 0, 0, 56, 23, 109, 97, 23, 132, 119, 71, 0, 117, 297, 15,
-	0, 0, 69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 48, 109, 0, 0,
-	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 51, 18, 114, 79, 58,
-	91, 3, 38, 107, 97, 43, 97, 46, 18, 43, 3, 18, 142, 0, 0, 94,
-	89, 91, 43, 46, 0, 8, 76, 165, 84, 46, 107, 5, 18, 0, 56, 0,
-	130, 0, 0, 0, 163, 127, 86, 157, 28, 30, 8, 38, 150, 38, 8, 3,
-	30, 23, 0, 0, 71, 0, 0, 0, 38, 0, 0, 13, 0, 18, 13, 74, 104,
-	10, 79, 0, 0, 254, 15, 0, 10, 41, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	23, 0, 0, 76, 15, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 81, 152, 13,
-	38, 147, 109, 64, 109, 5, 0, 0, 0, 0, 84, 183, 292, 5, 8, 43,
-	0, 20, 30, 0, 0, 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 43, 41, 41, 58,
-	91, 18, 0, 0, 0, 0, 0, 0, 0, 0, 41, 76, 81, 20, 0, 0, 0, 0, 0,
-	0, 102, 36, 127, 109, 20, 33, 0, 10, 41, 208, 226, 0, 18, 0, 0,
-	64, 381, 36, 5, 0, 89, 15, 18, 0, 0, 56, 13, 0, 0, 0, 0, 0, 0,
-	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 0,
-	30, 0, 0, 0, 0, 0, 30, 0, 0, 102, 58, 94, 0, 0, 0, 38, 0, 41,
-	64, 104, 56, 33, 0, 0, 0, 0, 15, 0, 25, 38, 0, 56, 0, 0, 0, 0,
-	0, 0, 46, 15, 10, 8, 91, 5, 8, 0, 0, 23, 99, 25, 0, 76, 43, 41,
-	142, 8, 58, 0, 3, 114, 30, 0, 0, 71, 0, 0, 0, 0, 191, 0, 25,
-	15, 28, 43, 38, 107, 102, 64, 38, 0, 8, 0, 13, 10, 33, 0, 3, 0,
-	10, 206, 0, 0, 0, 0, 0, 0, 122, 56, 0, 0, 20, 30, 10, 0, 0,
-	272, 0, 0, 58, 66, 91, 51, 107, 0, 0, 33, 264, 56, 15, 10, 152,
-	66, 10, 79, 66, 28, 18, 25, 23, 0, 20, 30, 0, 0, 0, 0, 0, 0, 0,
-	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 216, 5, 0, 0,
-	0, 0, 53, 81, 15, 0, 18, 66, 64, 262, 71, 51, 0, 0, 0, 0, 0, 0,
-	0, 0, 0, 0, 5, 97, 28, 25, 3, 107, 191, 30, 119, 64, 180, 43,
-	0, 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0,
-	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 119, 30, 86, 0, 0, 213, 38, 305,
-	196, 0, 43, 0, 23, 239, 135, 112, 124, 137, 51, 97, 0, 0, 0, 0,
-	0, 0, 0, 0, 0, 0, 0, 0, 41, 51, 10, 41, 3, 51, 3, 0, 0, 0, 0,
-	0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 135, 259, 13, 5, 48, 20, 74,
-	5, 10, 46, 5, 3, 18, 0, 0, 0, 0, 5, 5, 18, 0, 15, 0, 99, 0, 0,
-	0, 0, 0, 8, 81, 84, 0, 0, 10, 66, 84, 25, 58, 33, 0, 0, 20, 91,
-	0, 0, 58, 0, 0, 119, 15, 0, 58, 58, 0, 0, 0, 64, 165, 94, 43,
-	58, 61, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 5, 0, 0, 97, 81,
-	74, 53, 28, 33, 97, 0, 0, 124, 234, 0, 0, 0, 5, 58, 0, 0, 28,
-	28, 38, 18, 8, 10, 36, 0, 0, 0, 28, 10, 8, 38, 13, 20, 178, 18,
-	185, 38, 0, 0, 61, 0, 86, 0, 36, 0, 33, 102, 46, 20, 0, 0, 0,
-	5, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 15, 30,
-	58, 10, 147, 0, 5, 0, 36, 18, 91, 724, 41, 160, 41, 114, 249,
-	150, 71, 0, 157, 76, 272, 0, 0, 0, 18, 0, 0, 53, 25, 64, 46,
-	41, 25, 0, 71, 0, 25, 0, 0, 64, 114, 343, 124, 86, 58, 15, 99,
-	20, 5, 132, 109, 23, 20, 8, 91, 114, 5, 20, 246, 193, 371, 267,
-	185, 61, 58, 0, 58, 46, 0, 330, 66, 30, 8, 10, 3, 18, 23, 0, 5,
-	0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5,
-	13, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 10, 91, 36, 20, 18, 0, 18,
-	38, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0,
-	3, 0, 20, 23, 130, 102, 13, 0, 0, 23, 66, 0, 23, 0, 0, 0, 41,
-	0, 196, 211, 284, 229, 10, 48, 0, 0, 0, 0, 0, 0, 0, 3, 0, 36,
-	74, 119, 0, 20, 0, 0, 0, 0, 173, 409, 28, 0, 43, 8, 36, 76, 48,
-	0, 30, 10, 0, 38, 28, 112, 13, 41, 5, 25, 8, 0, 0, 0, 0, 0, 0,
-	0, 0, 0, 0, 0, 0, 0, 25, 89, 28, 0, 0, 36, 81, 86, 20, 8, 38,
-	216, 0, 20, 25, 201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 56,
-	8, 5, 124, 175, 0, 5, 33, 13, 20, 0, 13, 84, 3, 0, 0, 0, 0, 25,
-	236, 112, 94, 30, 36, 51, 23, 28, 23, 74, 3, 51, 140, 3, 0, 89,
-	5, 13, 23, 0, 3, 28, 0, 64, 208, 262, 0, 97, 71, 112, 51, 10,
-	48, 0, 0, 10, 102, 15, 41, 0, 15, 5, 23, 3, 0, 8, 64, 48, 0, 0,
-	0, 0, 0, 15, 5, 0, 51, 267, 53, 124, 211, 20, 8, 208, 94, 8, 0,
-	0, 0, 0, 0, 23, 183, 53, 38, 20, 0, 36, 3, 23, 10, 0, 20, 38,
-	51, 183, 15, 0, 8, 25, 0, 0, 0, 66, 15, 64, 58, 15, 10, 33, 58,
-	122, 23, 79, 48, 0, 0, 0, 23, 13, 208, 15, 0, 0, 0, 0, 0, 0, 0,
-	89, 282, 56, 43, 183, 18, 5, 5, 18, 20, 0, 0, 10, 0, 5, 5, 5,
-	13, 0, 0, 0, 8, 33, 84, 64, 33, 48, 46, 0, 0, 0, 69, 46, 43,
-	13, 20, 218, 53, 132, 91, 15, 3, 0, 0, 0, 10, 30, 33, 3, 10, 0,
-	8, 51, 0, 76, 0, 0, 5, 15, 23, 81, 3, 0, 0, 5, 5, 0, 0, 0, 0,
-	0, 0, 0, 0, 25, 3, 3, 3, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0,
-	15, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 30, 46, 23, 102,
-	64, 3, 0, 0, 94, 3, 20, 20, 3, 79, 71, 48, 0, 0, 0, 137, 0, 8,
-	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 51, 33, 0, 0, 0, 0, 0, 0,
-	0, 15, 0, 0, 48, 13, 3, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0, 36,
-	41, 8, 0, 0, 36, 3, 0, 0, 48, 3, 0, 10, 46, 20, 0, 38, 0, 0, 0,
-	0, 0, 0, 0, 0, 0, 279, 48, 48, 208, 175, 201, 79, 147, 0, 13,
-	3, 0, 74, 38, 33, 13, 0, 0, 51, 5, 61, 5, 0, 5, 0, 10, 91, 0,
-	0, 0, 38, 135, 56, 46, 33, 0, 0, 0, 0, 0, 0, 0, 46, 10, 0, 0,
-	0, 5, 0, 0, 0, 0, 48, 10, 188, 23, 5, 25, 262, 10, 15, 0, 0,
-	66, 74, 30, 20, 41, 193, 33, 66, 221, 20, 0, 48, 15, 0, 0, 0,
-	0, 0, 109, 43, 0, 0, 0, 3, 0, 0, 23, 132, 5, 25, 0, 0, 8, 25,
-	130, 8, 51, 79, 43, 0, 0, 0, 0, 0, 157, 244, 20, 155, 5, 84,
-	145, 152, 102, 267, 178, 20, 28, 58, 0, 0, 48, 74, 99, 0, 0, 0,
-	0, 0, 23, 5, 137, 61, 124, 74, 0, 23, 25, 46, 71, 30, 0, 399,
-	170, 203, 173, 99, 124, 211, 28, 46, 36, 114, 198, 23, 20, 3,
-	48, 86, 58, 46, 142, 130, 91, 30, 51, 104, 53, 10, 0, 48, 43,
-	470, 30, 18, 3, 10, 28, 0, 0, 0, 0, 0, 10, 0, 0, 15, 8, 3, 23,
-	114, 25, 0, 10, 46, 208, 0, 0, 23, 0, 0, 0, 0, 30, 15, 94, 132,
-	0, 0, 0, 15, 0, 0, 152, 0, 0, 127, 18, 74, 124, 0, 127, 91, 10,
-	38, 28, 97, 163, 114, 66, 41, 0, 0, 0, 23, 5, 0, 8, 0, 0, 0,
-	13, 0, 5, 8, 0, 10, 30, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0,
-	8, 0, 0, 18, 147, 0, 0, 5, 0, 56, 0, 0, 36, 36, 30, 0, 53, 91,
-	0, 0, 0, 0, 0, 0, 0, 0, 18, 25, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0,
-	0, 0, 0, 0, 18, 28, 56, 0, 10, 8, 124, 236, 147, 89, 0, 13, 20,
-	0, 74, 0, 23, 8, 15, 0, 0, 0, 5, 112, 46, 5, 41, 13, 0, 8, 38,
-	0, 168, 76, 74, 5, 10, 114, 216, 20, 292, 61, 13, 10, 84, 84,
-	23, 13, 0, 20, 0, 0, 0, 0, 58, 46, 0, 86, 5, 0, 0, 5, 89, 28,
-	15, 56, 0, 0, 160, 10, 0, 0, 0, 0, 0, 0, 43, 15, 13, 102, 287,
-	3, 0, 23, 183, 5, 10, 0, 0, 0, 135, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	0, 15, 0, 36, 0, 0, 0, 0, 0, 0, 64, 3, 10, 15, 0, 18, 99, 279,
-	51, 5, 20, 8, 0, 64, 0, 25, 0, 69, 135, 10, 5, 0, 0, 0, 0, 3,
-	0, 46, 3, 0, 43, 48, 18, 0, 0, 43, 53, 18, 91, 33, 25, 0, 5,
-	25, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	0, 0, 0, 363, 290, 124, 292, 124, 175, 142, 147, 0, 0, 0, 0, 0,
-	0, 33, 8, 0, 0, 13, 0, 0, 0, 5, 0, 0, 48, 0, 0, 0, 0, 51, 5, 8,
-	36, 0, 0, 13, 0, 0, 0, 0, 0, 81, 46, 109, 180, 0, 20, 135, 0,
-	8, 0, 5, 0, 13, 61, 81, 74, 165, 295, 13, 5, 56, 99, 130, 51,
-	46, 46, 150, 86, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 117, 224, 145,
-	183, 25, 0, 0, 0, 0, 0, 0, 20, 0, 0, 213, 15, 33, 198, 10, 15,
-	124, 94, 20, 145, 69, 132, 102, 23, 94, 18, 15, 53, 0, 18, 15,
-	18, 0, 0, 0, 0, 0, 15, 10, 0, 0, 13, 66, 33, 99, 23, 0, 0, 0,
-	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 114, 0, 0, 0, 0, 41, 18, 0, 89,
-	229, 36, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 119, 15, 0, 0,
-	10, 0, 0, 0, 0, 0, 0, 0, 5, 20, 0, 0, 0, 0, 0, 0, 0, 76, 132,
-	81, 30, 0, 0, 0, 0, 0, 0, 0, 0, 188, 0, 0, 0, 0, 0, 0, 23, 53,
-	0, 102, 124, 81, 46, 25, 0, 0, 0, 46, 119, 43, 10, 23, 124,
-	201, 43, 20, 0, 91, 8, 0, 0, 0, 109, 71, 43, 0, 0, 46, 46, 18,
-	36, 76, 97, 0, 0, 0, 0, 23, 107, 0, 191, 0, 0, 0, 0, 15, 13,
-	48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58, 114, 140, 69, 18, 13, 0, 91,
-	66, 0, 13, 0, 46, 41, 127, 0, 5, 8, 5, 3, 3, 0, 46, 5, 20, 25,
-	305, 305, 28, 61, 38, 30, 0, 0, 51, 0, 0, 0, 23, 18, 0, 33, 0,
-	48, 114, 142, 15, 150, 84, 46, 56, 559, 56, 76, 79, 318, 46,
-	13, 18, 8, 99, 5, 20, 0, 3, 15, 185, 127, 165, 5, 69, 0, 5, 3,
-	13, 0, 0, 163, 13, 71, 142, 15, 10, 5, 0, 0, 0, 0, 0, 0, 0, 0,
-	0, 0, 0, 0, 38, 290, 74, 18, 0, 0, 0, 160, 30, 0, 0, 0, 0, 0,
-	51, 3, 0, 5, 10, 0, 0, 0, 0, 0, 10, 20, 43, 79, 25, 13, 38, 53,
-	513, 64, 0, 51, 853, 61, 51, 269, 419, 104, 64, 64, 109, 124,
-	51, 0, 127, 140, 193, 48, 30, 244, 25, 10, 0, 0, 0, 0, 0, 0, 0,
-	0, 23, 229, 30, 38, 41, 107, 10, 0, 13, 114, 30, 53, 66, 145,
-	0, 297, 79, 15, 218, 20, 168, 46, 191, 137, 0, 0, 66, 8, 13, 0,
-	0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 229, 0, 0, 0, 0, 46, 0, 8, 0, 0,
-	15, 8, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20,
-	0, 0, 0, 0, 0, 0, 0, 76, 89, 142, 61, 305, 48, 23, 76, 104, 91,
-	107, 0, 130, 97, 170, 99, 5, 216, 69, 224, 56, 38, 152, 20, 5,
-	43, 53, 36, 193, 13, 89, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 0,
-	117, 71, 91, 107, 13, 0, 0, 0, 5, 46, 8, 15, 46, 43, 48, 74,
-	15, 0, 0, 30, 0, 0, 61, 0, 20, 28, 46, 208, 0, 0, 0, 0, 5, 0,
-	81, 30, 0, 0, 0, 0, 119, 8, 0, 46, 91, 41, 213, 0, 0, 0, 0, 0,
-	0, 0, 188, 23, 0, 0, 0, 23, 64, 0, 0, 0, 0, 0, 5, 117, 145, 0,
-	0, 81, 0, 0, 0, 69, 0, 18, 76, 102, 64, 43, 3, 8, 0, 0, 23, 0,
-	0, 0, 15, 330, 99, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0, 56, 13, 53,
-	0, 107, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 356, 0, 0, 0, 0, 0, 0, 0,
-	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 23, 23, 0, 0, 102,
-	89, 0, 15, 114, 0, 20, 46, 25, 48, 0, 71, 61, 0, 0, 0, 0, 8,
-	20, 0, 0, 0, 0, 0, 0, 0, 0, 30, 46, 0, 0, 0, 25, 10, 0, 0, 0,
-	0, 0, 0, 213, 218, 0, 0, 0, 0, 0, 0, 0, 56, 10, 61, 140, 25,
-	36, 76, 0, 0, 0, 71, 15, 5, 81, 25, 56, 0, 15, 56, 20, 5, 8,
-	20, 36, 23, 38, 89, 0, 0, 0, 0, 0, 20, 0, 20, 81, 86, 66, 114,
-	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 122, 127, 147,
-	46, 15, 25, 13, 109, 10, 61, 51, 216, 0, 140, 74, 53, 23, 206,
-	127, 178, 107, 84, 58, 25, 130, 109, 48, 3, 15, 0, 5, 8, 213,
-	183, 36, 211, 150, 18, 10, 127, 99, 109, 3, 86, 20, 15, 8, 18,
-	0, 33, 30, 18, 18, 0, 0, 0, 0, 15, 20, 0, 0, 0, 0, 0, 0, 20, 0,
-	0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 10, 18, 41, 8, 15,
-	3, 0, 0, 0, 0, 0, 0, 0, 51, 66, 86, 262, 46, 152, 155, 43, 8,
-	41, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 51, 15, 112, 51, 0,
-	0, 0, 0, 0, 58, 36, 30, 23, 30, 193, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, 94, 0, 0, 0, 25, 239, 89,
-	109, 10, 8, 38, 25, 196, 0, 0, 23, 0, 0, 0, 0, 0, 15, 48, 43,
-	140, 41, 56, 46, 25, 0, 0, 0, 132, 30, 46, 0, 0, 0, 0, 46, 64,
-	0, 0, 0, 0, 0, 0, 23, 51, 3, 0, 0, 53, 201, 10, 18, 91, 0, 0,
-	61, 13, 18, 0, 0, 0, 0, 0, 0, 0, 56, 0, 51, 38, 241, 71, 74,
-	18, 23, 76, 8, 13, 25, 0, 23, 38, 5, 30, 0, 231, 0, 0, 23, 0,
-	0, 0, 0, 0, 0, 36, 15, 292, 0, 89, 15, 0, 18, 15, 0, 20, 30,
-	107, 33, 15, 5, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 89, 0, 0, 0,
-	0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 185, 0, 152, 25, 46, 97, 196,
-	99, 41, 33, 18, 20, 8, 41, 145, 53, 36, 0, 0, 0, 28, 69, 15,
-	94, 48, 13, 107, 0, 0, 0, 0, 0, 0, 0, 66, 213, 38, 0, 0, 30, 0,
-	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 559, 48, 10, 33, 53, 152,
-	193, 201, 229, 254, 140, 58, 81, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	0, 0, 53, 64, 43, 160, 69, 84, 0, 74, 5, 25, 0, 15, 10, 13, 38,
-	10, 5, 20, 66, 84, 0, 13, 5, 3, 10, 0, 3, 18, 0, 0, 0, 0, 0, 0,
-	0, 0, 0, 0, 0, 0, 0, 10, 155, 188, 5, 0, 0, 43, 18, 10, 0, 0,
-	0, 36, 0, 0, 30, 23, 5, 13, 0, 0, 3, 0, 10, 0, 0, 152, 69, 117,
-	0, 0, 0, 0, 0, 13, 23, 66, 0, 0, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0,
-	0, 0, 0, 0, 0, 0, 97, 178, 23, 53, 79, 13, 0, 0, 0, 0, 0, 0, 0,
-	0, 0, 0, 0, 0, 0, 107, 0, 0, 61, 0, 0, 13, 99, 0, 0, 0, 0, 0,
-	13, 15, 3, 0, 0, 0, 0, 0, 0, 0, 5, 102, 58, 13, 20, 86, 0, 0,
-	25, 109, 8, 0, 5, 196, 0, 71, 71, 15, 66, 61, 51, 3, 3, 0, 8,
-	0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	0, 0, 0, 0, 0, 5, 0, 25, 0, 0, 0, 0, 0, 5, 0, 112, 23, 142,
-	442, 5, 0, 0, 0, 0, 0, 0, 0, 10, 10, 13, 0, 41, 0, 140, 48, 18,
-	0, 51, 13, 152, 20, 20, 38, 61, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0,
-	0, 0, 0, 381, 0, 0, 0, 0, 0, 0, 0, 191, 10, 13, 0, 74, 0, 0, 0,
-	0, 0, 0, 58, 267, 170, 0, 25, 46, 51, 191, 81, 0, 0, 0, 0, 0,
-	0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 74, 25, 23, 76, 64, 0, 0, 56,
-	25, 89, 343, 318, 86, 119, 25, 155, 320, 127, 91, 38, 0, 0, 38,
-	0, 0, 0, 0, 0, 64, 114, 61, 119, 135, 13, 28, 25, 132, 114,
-	102, 71, 224, 318, 18, 25, 61, 99, 79, 18, 15, 5, 23, 38, 5,
-	43, 46, 30, 13, 0, 0, 13, 18, 102, 64, 38, 0, 0, 0, 41, 91, 25,
-	20, 0, 38, 25, 30, 0, 18, 0, 13, 0, 18, 0, 0, 0, 0, 0, 0, 13,
-	5, 0, 51, 25, 0, 3, 0, 0, 10, 5, 8, 38, 114, 51, 0, 0, 0, 0, 0,
-	0, 0, 0, 0, 0, 0, 0, 48, 38, 140, 188, 193, 48, 84, 178, 36,
-	46, 140, 97, 124, 97, 124, 38, 56, 3, 0, 0, 0, 224, 28, 0, 0,
-	69, 102, 5, 0, 0, 36, 0, 36, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	89, 142, 122, 36, 145, 112, 36, 13, 18, 48, 0, 0, 0, 0, 0, 0,
-	0, 0, 15, 48, 38, 13, 0, 0, 0, 51, 15, 48, 38, 18, 0, 0, 23,
-	46, 160, 51, 0, 5, 0, 25, 15, 30, 41, 33, 0, 64, 25, 20, 69,
-	13, 0, 0, 10, 0, 51, 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 74, 8,
-	20, 10, 56, 163, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	0, 0, 0, 0, 89, 64, 0, 0, 20, 292, 30, 25, 135, 48, 20, 56, 5,
-	3, 10, 0, 0, 0, 0, 0, 0, 8, 38, 13, 0, 0, 0, 114, 48, 0, 168,
-	5, 236, 97, 13, 3, 5, 33, 46, 193, 18, 13, 66, 8, 0, 0, 0, 13,
-	58, 112, 102, 0, 0, 0, 0, 0, 356, 5, 0, 5, 152, 0, 10, 140, 61,
-	76, 33, 61, 452, 20, 8, 79, 56, 102, 5, 51, 81, 124, 25, 0,
-	104, 66, 5, 23, 0, 107, 3, 259, 18, 13, 109, 18, 71, 89, 46,
-	239, 30, 10, 86, 84, 36, 41, 3, 91, 117, 3, 114, 20, 25, 274,
-	56, 23, 0, 0, 0, 5, 3, 5, 23, 5, 0, 0, 104, 23, 20, 5, 10, 5,
-	0, 0, 0, 23, 10, 0, 0, 33, 104, 0, 10, 79, 0, 25, 114, 0, 0, 0,
-	0, 0, 38, 36, 124, 183, 170, 130, 23, 43, 41, 76, 155, 231,
-	305, 89, 64, 0, 0, 0, 229, 102, 5, 0, 213, 20, 30, 13, 8, 15,
-	46, 20, 0, 124, 203, 48, 41, 188, 71, 25, 91, 56, 10, 8, 23, 0,
-	0, 0, 0, 0, 0, 0, 0, 0, 196, 135, 48, 0, 79, 109, 224, 94, 150,
-	23, 25, 246, 46, 71, 43, 145, 0, 48, 0, 0, 13, 5, 10, 48, 5,
-	10, 23, 48, 0, 0, 0, 8, 8, 10, 53, 394, 163, 43, 15, 61, 5, 28,
-	10, 0, 0, 0, 0, 302, 117, 64, 97, 84, 56, 61, 8, 25, 36, 51,
-	30, 0, 0, 0, 0, 0, 0, 0, 445, 8, 13, 3, 25, 51, 175, 170, 38,
-	3, 109, 119, 13, 56, 0, 58, 0, 25, 3, 76, 38, 0, 38, 74, 0, 76,
-	28, 0, 89, 15, 69, 114, 18, 191, 10, 10, 5, 152, 0, 0, 0, 13,
-	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 20, 18, 33, 124, 117, 0, 74,
-	0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 25, 0, 13, 23, 107, 56, 318,
-	152, 0, 0, 175, 102, 8, 13, 0, 0, 0, 0, 0, 0, 0, 8, 0, 8, 338,
-	30, 36, 33, 38, 25, 0, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, 0, 20,
-	46, 15, 76, 0, 0, 0, 0, 8, 0, 5, 0, 23, 180, 175, 0, 0, 0, 0,
-	0, 0, 0, 0, 0, 267, 140, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 107,
-	193, 5, 150, 112, 8, 0, 3, 51, 249, 20, 10, 0, 0, 15, 36, 157,
-	15, 18, 36, 0, 56, 38, 145, 71, 43, 71, 48, 46, 0, 33, 0, 94,
-	13, 10, 0, 0, 5, 0, 43, 10, 53, 53, 224, 5, 38, 0, 0, 0, 0, 0,
-	79, 38, 269, 46, 51, 150, 3, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0,
-	0, 0, 13, 0, 0, 0, 8, 0, 0, 5, 48, 51, 3, 0, 0, 0, 0, 152, 58,
-	119, 48, 53, 79, 107, 269, 516, 130, 69, 64, 5, 76, 20, 0, 0,
-	0, 145, 61, 140, 297, 89, 74, 130, 36, 69, 51, 157, 15, 0, 23,
-	0, 18, 20, 5, 13, 36, 0, 41, 36, 0, 170, 20, 0, 0, 0, 0, 0, 0,
-	0, 8, 56, 64, 0, 0, 0, 114, 124, 74, 221, 84, 269, 58, 0, 36,
-	185, 48, 13, 43, 0, 18, 0, 119, 140, 198, 18, 0, 51, 10, 56,
-	112, 20, 0, 0, 0, 0, 0, 0, 46, 109, 81, 15, 58, 84, 102, 76,
-	13, 25, 41, 0, 0, 38, 28, 5, 10, 28, 23, 41, 76, 25, 0, 18, 0,
-	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 127, 33, 211, 46,
-	130, 0, 0, 0, 0, 0, 0, 198, 0, 51, 0, 30, 10, 61, 10, 61, 91,
-	0, 0, 0, 5, 8, 0, 0, 0, 0, 0, 97, 150, 74, 46, 13, 112, 41, 0,
-	28, 86, 69, 5, 58, 0, 0, 28, 91, 48, 28, 0, 0, 0, 0, 8, 0, 15,
-	76, 13, 74, 76, 10, 183, 58, 69, 18, 114, 254, 79, 3, 0, 0, 0,
-	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 25, 51, 58, 102, 81, 0,
-	0, 0, 20, 18, 170, 0, 0, 0, 51, 13, 0, 0, 0, 48, 5, 0, 10, 41,
-	5, 0, 0, 0, 0, 0, 0, 0, 0, 23, 0, 3, 5, 38, 8, 353, 0, 0, 0, 0,
-	0, 0, 8, 0, 8, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51,
-	0, 36, 0, 107, 3, 51, 160, 292, 28, 8, 218, 5, 0, 147, 594, 99,
-	33, 51, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 8, 18, 3, 20, 23,
-	0, 38, 0, 198, 79, 8, 3, 5, 0, 0, 0, 0, 18, 28, 3, 135, 23, 0,
-	0, 58, 48, 33, 107, 157, 64, 91, 69, 0, 0, 0, 0, 0, 0, 0, 20,
-	0, 5, 114, 152, 0, 0, 5, 0, 30, 8, 0, 152, 107, 28, 69, 20, 79,
-	287, 48, 58, 147, 130, 20, 30, 10, 74, 8, 3, 51, 36, 13, 5, 0,
-	0, 0, 46, 48, 0, 0, 33, 51, 46, 203, 0, 0, 0, 36, 104, 89, 41,
-	58, 0, 0, 0, 0, 0, 0, 13, 5, 10, 61, 23, 61, 71, 18, 30, 69,
-	41, 20, 157, 10, 221, 23, 13, 38, 53, 43, 33, 28, 38, 5, 61,
-	41, 0, 0, 0, 0, 61, 3, 0, 0, 20, 5, 8, 0, 3, 0, 15, 5, 0, 0, 0,
-	0, 0, 0, 0, 0, 0, 0, 13, 3, 3, 132, 3, 0, 0, 0, 0, 5, 3, 0, 86,
-	249, 38, 5, 3, 89, 0, 0, 8, 30, 36, 23, 18, 18, 8, 0, 0, 0, 0,
-	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0,
-	0, 0, 0, 0, 0, 0, 61, 36, 36, 122, 28, 3, 13, 119, 33, 102, 74,
-	18, 0, 0, 8, 0, 107, 28, 3, 0, 13, 28, 0, 0, 0, 0, 0, 0, 0, 0,
-	0, 0, 102, 53, 254, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13,
-	137, 335, 28, 53, 23, 353, 15, 152, 33, 89, 5, 0, 0, 3, 0, 0,
-	0, 71, 3, 15, 25, 0, 0, 0, 0, 0, 0, 8, 0, 0, 8, 0, 43, 114, 36,
-	5, 56, 69, 102, 305, 10, 0, 0, 0, 23, 20, 10, 0, 0, 0, 0, 0, 0,
-	0, 0, 3, 84, 0, 0, 213, 13, 30, 10, 13, 114, 8, 18, 46, 10, 58,
-	33, 3, 0, 86, 36, 13, 46, 8, 249, 0, 0, 0, 0, 20, 13, 0, 0, 0,
-	0, 0, 0, 0, 0, 0, 28, 23, 36, 0, 119, 48, 142, 25, 132, 5, 0,
-	0, 0, 13, 127, 0, 0, 124, 23, 0, 20, 0, 0, 0, 0, 0, 0, 0, 20,
-	0, 198, 33, 297, 5, 0, 259, 46, 201, 66, 10, 25, 0, 0, 56, 0,
-	36, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 28, 0, 0,
-	0, 0, 23, 30, 94, 368, 18, 478, 18, 0, 99, 46, 211, 168, 127,
-	64, 15, 13, 8, 33, 140, 30, 0, 13, 10, 13, 8, 0, 0, 0, 0, 0, 0,
-	0, 0, 114, 10, 69, 112, 259, 0, 5, 5, 0, 0, 122, 41, 0, 0, 0,
-	5, 0, 0, 5, 0, 5, 18, 0, 0, 0, 0, 0, 0, 0, 10, 0, 23, 79, 18,
-	3, 0, 0, 15, 0, 0, 18, 0, 0, 0, 25, 51, 33, 3, 0, 5, 56, 160,
-	33, 5, 13, 0, 0, 0, 38, 23, 43, 0, 0, 119, 8, 0, 0, 0, 10, 0,
-	0, 0, 0, 0, 0, 208, 0, 155, 119, 51, 30, 140, 117, 3, 0, 0,
-	150, 84, 15, 25, 0, 41, 13, 0, 109, 91, 36, 94, 58, 152, 74, 5,
-	10, 231, 0, 0, 10, 0, 0, 0, 0, 81, 0, 0, 0, 201, 25, 8, 226,
-	51, 5, 0, 5, 10, 0, 0, 107, 51, 79, 38, 36, 61, 0, 43, 0, 0, 0,
-	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	13, 218, 130, 46, 43, 66, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	0, 0, 0, 0, 0, 74, 282, 79, 20, 3, 201, 114, 43, 3, 0, 0, 0, 0,
-	25, 13, 292, 102, 259, 84, 160, 89, 0, 0, 51, 25, 5, 23, 0, 25,
-	10, 8, 0, 15, 20, 8, 43, 23, 0, 13, 46, 3, 69, 20, 119, 3, 41,
-	25, 23, 0, 0, 0, 71, 0, 15, 137, 79, 3, 0, 13, 0, 0, 25, 28,
-	429, 41, 43, 30, 10, 0, 18, 28, 8, 0, 3, 185, 33, 25, 89, 20,
-	23, 33, 168, 0, 69, 0, 0, 152, 25, 13, 25, 48, 3, 0, 0, 0, 0,
-	0, 0, 0, 0, 0, 10, 23, 0, 18, 89, 43, 76, 48, 28, 114, 74, 23,
-	51, 36, 66, 13, 10, 0, 28, 20, 5, 0, 277, 130, 58, 71, 13, 10,
-	3, 23, 13, 0, 119, 112, 15, 0, 36, 18, 23, 8, 3, 8, 3, 5, 76,
-	107, 28, 43, 38, 28, 30, 0, 185, 38, 10, 124, 5, 140, 23, 109,
-	48, 18, 0, 0, 74, 46, 10, 0, 135, 30, 104, 66, 25, 48, 0, 0, 0,
-	0, 0, 10, 0, 165, 376, 234, 180, 249, 554, 267, 43, 193, 23,
-	20, 48, 0, 0, 94, 119, 279, 102, 43, 56, 226, 109, 25, 18, 5,
-	46, 0, 0, 23, 0, 0, 38, 0, 8, 30, 10, 15, 0, 0, 0, 0, 0, 0,
-	163, 99, 10, 0, 0, 0, 0, 147, 13, 0, 211, 84, 150, 0, 0, 0, 86,
-	53, 28, 20, 0, 0, 38, 15, 0, 221, 25, 135, 69, 71, 168, 56,
-	124, 0, 211, 23, 13, 20, 0, 0, 13, 30, 69, 5, 33, 0, 48, 0, 79,
-	0, 0, 0, 0, 0, 69, 0, 0, 0, 0, 0, 0, 0, 43, 3, 0, 8, 0, 0, 0,
-	0, 0, 0, 0, 0, 0, 74, 0, 0, 99, 79, 5, 206, 33, 0, 0, 0, 0, 0,
-	8, 0, 0, 30, 23, 0, 0, 74, 25, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	0, 0, 0, 0, 5, 48, 0, 64, 79, 43, 0, 89, 41, 43, 10, 94, 23, 3,
-	38, 69, 18, 0, 71, 66, 79, 25, 48, 226, 25, 0, 0, 0, 0, 0, 0,
-	0, 58, 64, 0, 0, 0, 0, 15, 10, 112, 23, 0, 137, 28, 5, 0, 0, 0,
-	226, 0, 0, 0, 0, 0, 84, 0, 0, 0, 0, 28, 13, 0, 5, 0, 64, 0, 15,
-	0, 0, 33, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 53, 208, 0,
-	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 10,
-	0, 0, 0, 0, 0, 8, 0, 28, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	0, 25, 0, 0, 84, 0, 0, 0, 0, 28, 79, 0, 0, 145, 28, 25, 18, 0,
-	0, 0, 30, 208, 28, 0, 3, 0, 0, 0, 0, 23, 0, 0, 15, 10, 33, 175,
-	36, 109, 5, 0, 0, 0, 0, 0, 0, 8, 0, 23, 353, 36, 33, 0, 0, 0,
-	0, 0, 0, 15, 0, 5, 0, 0, 0, 424, 330, 119, 25, 91, 41, 216, 41,
-	290, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0,
-	0, 0, 13, 0, 0, 8, 10, 10, 5, 51, 0, 58, 109, 269, 124, 56, 20,
-	13, 0, 330, 25, 0, 48, 76, 25, 71, 41, 3, 64, 76, 208, 18, 8,
-	5, 0, 0, 3, 0, 5, 33, 152, 112, 15, 43, 401, 41, 25, 8, 28, 0,
-	36, 97, 66, 188, 23, 15, 107, 15, 8, 56, 10, 114, 13, 0, 0, 0,
-	25, 3, 0, 0, 0, 0, 0, 0, 15, 3, 0, 0, 0, 20, 38, 8, 25, 0, 0,
-	0, 0, 0, 0, 0, 0, 0, 8, 13, 25, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0,
-	0, 0, 51, 3, 0, 0, 69, 135, 51, 28, 43, 3, 0, 0, 0, 0, 0, 0, 0,
-	0, 3, 25, 0, 0, 0, 3, 0, 0, 0, 97, 0, 43, 0, 0, 0, 0, 0, 0, 0,
-	0, 0, 20, 97, 89, 0, 0, 0, 43, 8, 91, 8, 0, 0, 0, 0, 20, 51,
-	25, 5, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 5, 0, 30, 0, 0,
-	0, 10, 5, 5, 188, 48, 8, 117, 66, 0, 0, 0, 0, 3, 0, 0, 71, 71,
-	0, 5, 8, 8, 0, 0, 0, 0, 64, 0, 0, 8, 3, 140, 76, 41, 25, 43, 3,
-	5, 0, 0, 0, 0, 0, 0, 8, 0, 3, 5, 249, 348, 25, 0, 0, 0, 5, 0,
-	0, 0, 5, 381, 99, 15, 109, 163, 0, 0, 8, 43, 33, 0, 0, 0, 28,
-	3, 99, 8, 0, 8, 30, 130, 48, 3, 0, 10, 0, 71, 56, 137, 229, 8,
-	25, 20, 20, 0, 140, 155, 66, 64, 241, 91, 0, 282, 13, 0, 41, 3,
-	0, 0, 0, 0, 56, 0, 0, 18, 119, 178, 15, 3, 0, 0, 394, 20, 3,
-	18, 221, 3, 15, 64, 23, 15, 8, 33, 0, 0, 0, 0, 0, 0, 0, 66, 79,
-	3, 48, 0, 0, 0, 5, 38, 58, 13, 10, 41, 15, 5, 0, 0, 0, 0, 0, 0,
-	0, 0, 150, 10, 74, 28, 0, 20, 0, 0, 0, 0, 0, 51, 10, 0, 0, 0,
-	8, 43, 23, 147, 69, 18, 38, 8, 15, 36, 15, 0, 3, 10, 5, 48, 41,
-	10, 66, 43, 165, 277, 58, 5, 0, 0, 0, 0, 0, 119, 0, 211, 36,
-	340, 20, 216, 33, 0, 51, 10, 15, 28, 104, 0, 18, 3, 13, 0, 10,
-	20, 0, 0, 0, 0, 0, 0, 0, 46, 53, 5, 94, 43, 79, 53, 3, 102,
-	114, 91, 356, 18, 5, 178, 226, 150, 234, 343, 135, 30, 157, 58,
-	74, 94, 97, 20, 58, 23, 30, 0, 38, 10, 36, 74, 71, 61, 10, 0,
-	0, 0, 0, 0, 23, 142, 89, 33, 221, 335, 15, 0, 0, 0, 0, 0, 69,
-	18, 20, 185, 3, 3, 0, 10, 20, 102, 64, 20, 3, 0, 0, 15, 0, 3,
-	0, 0, 0, 0, 0, 0, 0, 10, 0, 8, 5, 8, 3, 0, 5, 13, 8, 10, 0, 0,
-	0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 53, 0, 89, 114,
-	56, 10, 20, 185, 10, 170, 15, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	0, 0, 0, 0, 8, 0, 0, 15, 51, 170, 203, 0, 0, 0, 0, 0, 0, 0, 0,
-	218, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 157, 0, 74, 0, 0, 0, 51,
-	107, 5, 23, 5, 150, 30, 145, 13, 25, 13, 147, 112, 13, 147, 15,
-	25, 30, 0, 28, 5, 5, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 310,
-	107, 152, 91, 157, 56, 18, 0, 5, 0, 0, 3, 0, 15, 20, 23, 58, 5,
-	48, 30, 0, 0, 38, 15, 0, 25, 0, 46, 5, 107, 0, 0, 173, 241, 99,
-	84, 188, 91, 10, 3, 0, 0, 0, 5, 152, 18, 41, 84, 69, 0, 0, 41,
-	13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 203, 231,
-	38, 23, 18, 38, 0, 13, 28, 23, 119, 10, 119, 107, 5, 114, 107,
-	152, 175, 61, 76, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 13, 0, 0,
-	81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 94, 61, 41, 94,
-	366, 109, 25, 69, 0, 0, 0, 48, 10, 20, 51, 41, 25, 38, 41, 0,
-	3, 18, 0, 0, 13, 5, 0, 0, 0, 221, 107, 79, 36, 104, 58, 168,
-	58, 10, 0, 3, 10, 13, 8, 18, 20, 18, 15, 25, 91, 30, 168, 13,
-	221, 61, 3, 0, 0, 0, 0, 0, 28, 74, 43, 25, 41, 363, 163, 69, 0,
-	94, 0, 0, 8, 13, 0, 8, 3, 18, 145, 160, 152, 3, 0, 0, 76, 8, 0,
-	0, 0, 18, 5, 36, 0, 8, 0, 43, 20, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0,
-	0, 13, 18, 0, 160, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30,
-	0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 23, 132, 20, 0, 0, 0,
-	0, 0, 0, 0, 0, 28, 41, 13, 28, 10, 5, 53, 0, 56, 0, 188, 10, 8,
-	0, 5, 8, 5, 282, 257, 56, 0, 0, 0, 56, 8, 23, 20, 127, 64, 30,
-	5, 10, 188, 5, 0, 74, 18, 0, 0, 0, 0, 0, 0, 0, 25, 79, 15, 84,
-	165, 48, 89, 74, 0, 0, 0, 25, 0, 0, 0, 28, 3, 0, 36, 0, 0, 0,
-	0, 112, 213, 8, 0, 28, 8, 0, 0, 13, 58, 76, 0, 28, 36, 10, 76,
-	127, 43, 0, 8, 28, 23, 71, 109, 79, 38, 124, 145, 43, 3, 114,
-	91, 8, 86, 10, 0, 8, 0, 43, 178, 25, 5, 64, 104, 384, 3, 3, 0,
-	0, 0, 5, 8, 0, 381, 0, 0, 0, 51, 114, 0, 8, 0, 0, 5, 0, 191, 5,
-	0, 18, 41, 124, 84, 89, 36, 213, 3, 0, 0, 58, 229, 180, 112,
-	107, 218, 470, 79, 56, 99, 86, 5, 13, 3, 66, 18, 97, 5, 3, 5,
-	0, 23, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 5, 81, 0,
-	206, 79, 3, 61, 97, 0, 0, 104, 64, 48, 0, 0, 0, 0, 30, 0, 0, 0,
-	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 122, 170,
-	53, 0, 0, 0, 188, 64, 0, 257, 208, 13, 0, 0, 0, 0, 0, 79, 81,
-	117, 142, 117, 0, 170, 41, 76, 310, 132, 0, 0, 0, 0, 0, 0, 66,
-	0, 0, 0, 0, 236, 221, 91, 226, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,
-	0, 0, 0, 0, 3, 0, 8, 15, 218, 157, 211, 109, 122, 20, 0, 0,
-	109, 43, 18, 30, 99, 0, 0, 0, 0, 0, 0, 30, 0, 137, 15, 38, 38,
-	23, 152, 163, 15, 5, 3, 0, 0, 0, 0, 13, 23, 135, 58, 43, 102,
-	58, 25, 33, 28, 234, 0, 0, 0, 56, 0, 0, 0, 94, 305, 36, 56, 5,
-	0, 0, 46, 0, 56, 0, 0, 0, 0, 0, 46, 5, 13, 0, 0, 0, 0, 0, 0, 0,
-	0, 13, 58, 5, 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, 23, 15, 76,
-	20, 25, 18, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, 0, 33,
-	102, 8, 33, 28, 5, 20, 0, 0, 0, 0, 0, 0, 0, 0, 64, 38, 13, 0,
-	0, 13, 71, 33, 0, 0, 0, 0, 0, 0, 0, 28, 71, 58, 188, 23, 0, 0,
-	0, 5, 0, 0, 0, 0, 0, 0, 0, 64, 66, 46, 127, 3, 0, 0, 0, 0, 0,
-	89, 10, 3, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0,
-	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 74, 0, 0, 0, 13, 0, 0, 0,
-	0, 0, 0, 0, 0, 0, 0, 102, 0, 191, 15, 56, 86, 23, 0, 0, 0, 84,
-	312, 51, 8, 84, 3, 23, 0, 30, 38, 185, 79, 107, 13, 38, 23, 23,
-	130, 5, 3, 10, 0, 0, 36, 79, 109, 28, 183, 229, 356, 38, 13, 0,
-	198, 188, 36, 0, 36, 109, 257, 488, 10, 5, 152, 203, 56, 38,
-	51, 38, 41, 178, 246, 112, 25, 15, 0, 0, 0, 145, 76, 165, 30,
-	91, 76, 191, 33, 23, 160, 23, 112, 109, 287, 236, 124, 33, 13,
-	127, 18, 109, 33, 13, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 15, 51,
-	15, 41, 119, 43, 236, 419, 36, 5, 13, 13, 33, 3, 0, 119, 41,
-	292, 137, 38, 0, 0, 0, 0, 0, 0, 30, 0, 0, 51, 13, 0, 0, 51, 23,
-	13, 15, 15, 0, 193, 38, 317, 18, 0, 15, 63, 56, 0, 0, 0, 0, 0,
-	10, 8, 3, 41, 269, 38, 15, 8, 0, 5, 48, 8, 0, 0, 0, 0, 0, 0, 0,
-	0, 46, 13, 8, 0, 312, 178, 130, 41, 15, 28, 0, 33, 0, 13, 0,
-	142, 0, 13, 165, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	0, 0, 15, 0, 0, 0, 0, 0, 0, 86, 104, 140, 160, 43, 0, 36, 0, 0,
-	0, 10, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 5,
-	185, 102, 10, 5, 5, 56, 112, 5, 8, 13, 0, 0, 0, 0, 0, 0, 229,
-	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 140, 10, 23, 30, 5, 102, 152, 3,
-	0, 46, 15, 0, 180, 74, 185, 58, 0, 33, 66, 23, 5, 8, 3, 208,
-	20, 5, 107, 48, 8, 0, 18, 0, 0, 15, 23, 33, 112, 30, 13, 33,
-	102, 25, 0, 20, 0, 5, 3, 0, 51, 53, 142, 66, 76, 13, 152, 43,
-	48, 13, 25, 5, 102, 84, 0, 0, 102, 0, 0, 0, 0, 13, 0, 3, 127,
-	0, 152, 51, 5, 38, 5, 38, 229, 0, 0, 0, 0, 190, 38, 297, 264,
-	178, 185, 79, 63, 79, 23, 25, 190, 48, 18, 63, 5, 0, 0, 0, 0,
-	5, 127, 5, 28, 33, 13, 114, 23, 8, 513, 43, 0, 0, 8, 178, 112,
-	43, 89, 43, 91, 0, 0, 109, 165, 58, 20, 107, 81, 51, 20, 183,
-	58, 20, 71, 20, 56, 28, 38, 58, 122, 63, 5, 20, 89, 203, 130,
-	84, 335, 81, 107, 15, 0, 0, 0, 0, 61, 8, 0, 0, 0, 5, 3, 13,
-	127, 13, 15, 18, 8, 25, 190, 66, 160, 69, 81, 58, 25, 211, 102,
-	38, 0, 160, 33, 38, 51, 38, 15, 0, 5, 28, 0, 0, 0, 28, 89, 74,
-	15, 3, 13, 0, 25, 0, 284, 51, 287, 229, 43, 20, 43, 89, 58, 38,
-	81, 69, 25, 33, 0, 20, 10, 0, 0, 5, 0, 3, 0, 0, 0, 0, 0, 3,
-	251, 33, 102, 152, 114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	0, 0, 0, 0, 5, 0, 3, 0, 0, 0, 0, 0, 0, 10, 0, 5, 53, 0, 51, 51,
-	20, 51, 165, 191, 13, 0, 0, 0, 76, 89, 51, 41, 0, 0, 0, 0, 10,
-	257, 185, 48, 46, 5, 102, 89, 23, 23, 0, 10, 13, 58, 23, 86,
-	89, 0, 43, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 86, 56, 79, 43,
-	102, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 13, 8, 0, 0, 0, 0,
-	206, 0, 0, 0, 0, 0, 0, 13, 0, 0, 107, 241, 5, 142, 20, 0, 0,
-	10, 0, 0, 0, 5, 15, 0, 23, 0, 64, 0, 0, 0, 8, 0, 0, 0, 76, 13,
-	0, 175, 15, 46, 376, 0, 15, 10, 13, 5, 18, 15, 13, 13, 5, 18,
-	0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 5, 5, 18, 33, 0, 0, 51,
-	76, 3, 152, 160, 28, 51, 25, 0, 0, 0, 0, 5, 8, 0, 0, 0, 38,
-	107, 18, 191, 28, 43, 38, 157, 33, 127, 394, 25, 102, 183, 38,
-	3, 0, 0, 0, 13, 28, 140, 58, 5, 8, 48, 157, 163, 38, 160, 36,
-	3, 25, 8, 0, 13, 71, 20, 13, 0, 81, 18, 107, 15, 5, 51, 18, 13,
-	0, 0, 0, 0, 0, 0, 0, 0, 13, 5, 0, 8, 10, 0, 0, 18, 56, 84, 53,
-	51, 38, 5, 13, 86, 38, 64, 114, 76, 94, 104, 30, 5, 3, 0, 0,
-	13, 5, 0, 0, 0, 0, 0, 3, 8, 0, 38, 127, 0, 0, 0, 0, 0, 0, 3,
-	13, 10, 38, 216, 183, 117, 58, 38, 46, 394, 58, 13, 137, 8,
-	267, 86, 41, 38, 61, 13, 66, 15, 0, 0, 5, 25, 5, 64, 10, 53,
-	10, 64, 38, 0, 13, 0, 10, 69, 3, 8, 3, 5, 5, 0, 0, 0, 0, 0, 0,
-	0, 0, 25, 51, 0, 0, 0, 8, 0, 0, 0, 46, 43, 30, 28, 10, 3, 0, 0,
-	155, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 0, 0, 142, 23, 5, 15, 15,
-	127, 20, 97, 0, 0, 91, 10, 18, 38, 18, 5, 0, 0, 18, 8, 3, 43,
-	23, 137, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 107, 71, 102,
-	25, 25, 127, 43, 0, 0, 3, 13, 30, 3, 15, 198, 5, 183, 8, 0, 0,
-	0, 8, 0, 25, 10, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0,
-	0, 0, 13, 0, 18, 13, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	0, 0, 0, 0, 0, 0, 51, 25, 91, 0, 38, 79, 0, 0, 0, 124, 5, 33,
-	3, 33, 5, 0, 5, 0, 0, 0, 0, 20, 0, 33, 38, 173, 0, 25, 165, 3,
-	0, 18, 25, 41, 15, 0, 74, 15, 94, 0, 0, 28, 38, 13, 0, 152, 0,
-	8, 84, 25, 0, 0, 0, 0, 0, 5, 15, 102, 38, 20, 0, 0, 8, 64, 119,
-	8, 0, 13, 25, 51, 0, 0, 0, 0, 0, 0, 0, 0, 33, 43, 64, 51, 457,
-	102, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	0, 0, 0, 0, 71, 76, 0, 66, 3, 102, 64, 191, 102, 79, 0, 208, 0,
-	5, 10, 3, 10, 23, 0, 0, 0, 61, 8, 249, 107, 18, 0, 137, 3, 51,
-	25, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 127, 51, 51, 130,
-	13, 38, 20, 33, 0, 20, 30, 76, 13, 0, 0, 0, 0, 0, 23, 13, 0,
-	18, 38, 51)
diff --git a/data/rainfall.rda b/data/rainfall.rda
new file mode 100644
index 0000000..f727243
Binary files /dev/null and b/data/rainfall.rda differ
diff --git a/data/ruge.R b/data/ruge.R
deleted file mode 100644
index 363021d..0000000
--- a/data/ruge.R
+++ /dev/null
@@ -1,5 +0,0 @@
-"ruge" <-
-structure(list(counts = c(57,203,383,525,532,408,273,139,45,27,10,4,0,1,1),
-number = c(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14)), .Names = c("counts",
-"number"), row.names = c("1", "2", "3", "4", "5", "6", "7", "8", "9",
-"10", "11", "12", "13", "14", "15"), class = "data.frame")
diff --git a/data/ruge.rda b/data/ruge.rda
new file mode 100644
index 0000000..e31cabc
Binary files /dev/null and b/data/ruge.rda differ
diff --git a/data/toxop.R b/data/toxop.R
deleted file mode 100644
index b56fc32..0000000
--- a/data/toxop.R
+++ /dev/null
@@ -1,11 +0,0 @@
-`toxop` <-
-structure(list(rainfall = c(1735, 1936, 2000, 1973, 1750, 1800, 
-1750, 2077, 1920, 1800, 2050, 1830, 1650, 2200, 2000, 1770, 1920, 
-1770, 2240, 1620, 1756, 1650, 2250, 1796, 1890, 1871, 2063, 2100, 
-1918, 1834, 1780, 1900, 1976, 2292), ssize = c(4, 10, 5, 10, 
-2, 5, 8, 19, 6, 10, 24, 1, 30, 22, 1, 11, 1, 54, 9, 18, 12, 1, 
-11, 77, 51, 16, 82, 13, 43, 75, 13, 10, 6, 37), cityNo = 1:34, 
-    positive = c(2, 3, 1, 3, 2, 3, 2, 7, 3, 8, 7, 0, 15, 4, 0, 
-    6, 0, 33, 4, 5, 2, 0, 8, 41, 24, 7, 46, 9, 23, 53, 8, 3, 
-    1, 23)), .Names = c("rainfall", "ssize", "cityNo", "positive"
-), row.names = c(NA, -34), class = "data.frame")
diff --git a/data/toxop.rda b/data/toxop.rda
new file mode 100644
index 0000000..3f6a9a8
Binary files /dev/null and b/data/toxop.rda differ
diff --git a/data/ugss.rda b/data/ugss.rda
new file mode 100644
index 0000000..17defc8
Binary files /dev/null and b/data/ugss.rda differ
diff --git a/data/usagrain.txt b/data/usagrain.txt
deleted file mode 100644
index 5f7e1a8..0000000
--- a/data/usagrain.txt
+++ /dev/null
@@ -1,143 +0,0 @@
- wheat.flour corn wheat   rye 
-        5.58 1.12  1.62 1.075
-        5.46 1.15  1.58 1.064
-        5.50 1.18  1.56 1.158
-        5.53 1.09  1.39 1.073
-        5.63 1.15  1.28 1.125
-        5.65 1.13  1.28 1.070
-        5.70 1.18  1.36 1.298
-        5.68 1.15  1.46 1.168
-        5.75 1.11  1.45 1.205
-        5.66 1.11  1.47 1.298
-        5.70 1.14  1.51 1.320
-        5.75 1.12  1.53 1.295
-        5.75 1.09  1.52 1.298
-        5.78 1.11  1.52 1.293
-        5.72 1.11  1.54 1.253
-        5.80 1.12  1.59 1.228
-        5.95 1.16  1.65 1.230
-        6.09 1.15  1.63 1.278
-        6.25 1.12  1.62 1.125
-        6.37 1.14  1.57 1.145
-        6.45 1.13  1.59 1.120
-        6.44 1.12  1.55 1.148
-        6.46 1.10  1.59 1.164
-        6.39 1.17  1.58 1.210
-        6.03 1.21  1.60 1.258
-        6.05 1.21  1.63 1.228
-        6.02 1.20  1.64 1.195
-        6.15 1.21  1.68 1.233
-        6.09 1.23  1.63 1.196
-        6.05 1.30  1.38 1.220
-        5.70 1.34  1.30 1.205
-        5.28 1.34  1.30 1.185
-        5.76 1.36  1.47 1.355
-        5.98 1.22  1.64 1.433
-        6.41 1.18  1.69 1.420
-        6.83 1.23  1.69 1.423
-        6.45 1.26  1.78 1.463
-        6.90 1.23  1.75 1.376
-        6.64 1.24  1.48 1.303
-        6.68 1.26  1.66 1.280
-        6.70 1.29  1.54 1.263
-        6.53 1.26  1.43 1.265
-        7.09 1.23  1.46 1.245
-        6.70 1.25  1.44 1.210
-        6.73 1.30  1.52 1.280
-        6.84 1.25  1.50 1.236
-        6.90 1.19  1.56 1.233
-        6.90 1.28  1.59 1.185
-        6.68 1.29  1.57 1.184
-        6.70 1.31  1.58 1.160
-        6.70 1.34  1.56 1.190
-        6.70 1.35  1.56 1.170
-        6.70 1.37  1.46 1.173
-        6.90 1.36  1.45 1.100
-        7.07 1.33  1.43 1.001
-        7.10 1.29  1.53 1.088
-        7.10 1.31  1.54 1.111
-        7.20 1.27  1.53 1.105
-        7.28 1.17  1.66 1.125
-        7.21 1.24  1.74 1.180
-        7.22 1.32  1.71 1.243
-        7.22 1.32  1.75 1.225
-        7.22 1.26  1.67 1.155
-        7.19 1.30  1.65 1.268
-        7.20 1.32  1.67 1.153
-        7.63 1.31  1.77 1.130
-        8.07 1.42  1.90 1.280
-        8.09 1.45  1.89 1.248
-        7.92 1.46  1.92 1.243
-        7.72 1.40  1.69 1.158
-        7.73 1.35  1.75 1.160
-        7.62 1.44  1.83 1.218
-        7.35 1.44  1.80 1.203
-        7.48 1.39  1.68 1.163
-        7.55 1.42  1.83 1.208
-        7.27 1.38  1.80 1.188
-        7.43 1.39  1.67 1.180
-        7.34 1.38  1.57 1.160
-        7.40 1.33  1.48 1.191
-        7.29 1.21  1.42 1.099
-        7.27 1.20  1.45 1.173
-        7.24 1.20  1.49 1.140
-        7.18 1.08  1.44 1.118
-        7.21 1.18  1.50 1.148
-        7.18 1.15  1.52 1.154
-        7.04 1.17  1.56 1.190
-        6.94 1.14  1.51 1.179
-        6.76 1.16  1.46 1.145
-        6.78 1.21  1.47 1.130
-        6.77 1.16  1.26 1.073
-        6.73 1.15  1.29 1.125
-        6.72 1.08  1.19 1.046
-        6.85 1.08  1.18 1.119
-        6.89 1.10  1.28 1.145
-        6.90 1.17  1.36 1.169
-        6.85 1.15  1.34 1.168
-        6.85 1.19  1.43 1.205
-        6.83 1.17  1.40 1.201
-        6.76 1.17  1.35 1.215
-        6.75 1.22  1.36 1.215
-        6.75 1.31  1.40 1.240
-        6.75 1.32  1.33 1.205
-        6.92 1.30  1.30 1.185
-        6.86 1.29  1.28 1.035
-        6.78 1.27  1.33 1.055
-        6.89 1.27  1.33 1.105
-        6.95 1.16  1.42 1.115
-        7.14 1.18  1.48 1.135
-        7.14 1.26  1.50 1.135
-        7.17 1.26  1.52 1.135
-        7.19 1.25  1.54 1.145
-        7.19 1.29  1.54 1.165
-        7.19 1.32  1.55 1.165
-        7.20 1.36  1.40 1.215
-        7.16 1.39  1.43 1.085
-        7.21 1.37  1.45 1.065
-        7.20 1.45  1.68 1.085
-        7.35 1.44  1.67 1.085
-        7.43 1.42  1.74 1.145
-        7.50 1.33  1.63 1.165
-        7.45 1.39  1.72 1.155
-        7.45 1.40  1.74 1.165
-        7.45 1.36  1.68 1.135
-        7.51 1.33  1.66 1.145
-        7.58 1.31  1.66 1.185
-        7.55 1.38  1.63 1.165
-        7.52 1.30  1.44 1.035
-        7.48 1.29  1.31 0.875
-        7.48 1.17  1.33 0.945
-        7.48 1.12  1.39 0.965
-        7.48 1.09  1.49 0.895
-        7.48 1.26  1.60 0.980
-        7.28 1.23  1.58 1.030
-        7.15 1.21  1.52 1.050
-        7.15 1.23  1.58 1.030
-        7.15 1.25  1.68 1.040
-        7.07 1.28  1.67 1.060
-        7.07 1.28  1.36 0.990
-        7.07 1.30  1.47 0.980
-        7.66 1.29  1.60 0.960
-        8.39 1.39  1.86 0.990
-        8.57 1.31  1.92 1.01
diff --git a/data/uscrime.rda b/data/uscrime.rda
new file mode 100644
index 0000000..e680068
Binary files /dev/null and b/data/uscrime.rda differ
diff --git a/data/usgrain.txt.gz b/data/usgrain.txt.gz
new file mode 100644
index 0000000..d12d350
Binary files /dev/null and b/data/usgrain.txt.gz differ
diff --git a/data/venice.R b/data/venice.R
deleted file mode 100644
index 63a2e25..0000000
--- a/data/venice.R
+++ /dev/null
@@ -1,50 +0,0 @@
-"venice" <-
-structure(list(year = c(1931, 1932, 1933, 1934, 1935, 1936, 1937, 
-1938, 1939, 1940, 1941, 1942, 1943, 1944, 1945, 1946, 1947, 1948, 
-1949, 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 
-1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 
-1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981
-), r1 = c(103, 78, 121, 116, 115, 147, 119, 114, 89, 102, 99, 
-91, 97, 106, 105, 136, 126, 132, 104, 117, 151, 116, 107, 112, 
-97, 95, 119, 124, 118, 145, 122, 114, 118, 107, 110, 194, 138, 
-144, 138, 123, 122, 120, 114, 96, 125, 124, 120, 132, 166, 134, 
-138), r2 = c(99, 78, 113, 113, 107, 106, 107, 97, 86, 101, 98, 
-91, 88, 95, 102, 104, 108, 126, 102, 96, 117, 104, 102, 100, 
-96, 91, 107, 114, 117, 126, 108, 110, 116, 104, 108, 127, 118, 
-132, 120, 122, 116, 118, 111, 95, 110, 122, 102, 114, 140, 114, 
-136), r3 = c(98, 74, 106, 91, 105, 93, 107, 85, 82, 98, 96, 87, 
-82, 94, 98, 103, 101, 119, 102, 91, 114, 103, 98, 95, 96, 90, 
-100, 113, 108, 123, 104, 108, 114, 104, 106, 126, 118, 123, 116, 
-119, 116, 113, 99, 95, 109, 114, 100, 110, 131, 111, 130), r4 = c(96, 
-73, 105, 91, 101, 90, 106, 83, 81, 97, 95, 83, 79, 90, 88, 101, 
-99, 107, 101, 89, 109, 98, 98, 94, 95, 85, 98, 110, 107, 116, 
-100, 107, 112, 103, 102, 104, 107, 114, 114, 110, 109, 111, 98, 
-93, 103, 109, 98, 107, 130, 109, 128), r5 = c(94, 73, 102, 91, 
-93, 87, 105, 82, 80, 96, 94, 83, 78, 89, 86, 100, 98, 101, 93, 
-88, 106, 91, 92, 94, 94, 85, 98, 108, 105, 114, 100, 106, 110, 
-102, 101, 103, 100, 112, 108, 105, 104, 96, 97, 92, 102, 108, 
-96, 105, 122, 107, 119), r6 = c(89, 72, 89, 89, 91, 87, 102, 
-81, 80, 94, 94, 81, 78, 84, 84, 91, 98, 98, 92, 86, 104, 91, 
-89, 90, 92, 84, 97, 104, 102, 110, 95, 104, 109, 98, 101, 102, 
-96, 110, 106, 99, 101, 92, 97, 90, 101, 108, 96, 102, 118, 106, 
-110), r7 = c(86, 71, 89, 88, NA, 87, 98, 79, 78, 94, 89, 78, 
-76, 84, 84, 88, 96, 92, 90, 86, 100, 90, 89, 86, 90, 82, 93, 
-104, 96, 108, 94, 99, 104, 92, 100, 102, 95, 108, 104, 99, 100, 
-91, 96, 90, 101, 104, 95, 100, 116, 104, 107), r8 = c(85, 70, 
-88, 88, NA, 84, 95, 76, 78, 91, 88, 75, 76, 83, 80, 84, 96, 86, 
-88, 86, 99, 90, 89, 82, 90, 82, 92, 102, 96, 108, 93, 99, 103, 
-90, 98, 99, 93, 107, 103, 97, 100, 91, 92, 89, 97, 104, 94, 100, 
-115, 103, 104), r9 = c(84, 70, 86, 86, NA, 82, 94, 74, 77, 90, 
-87, 75, 74, 82, 80, 83, 94, 85, 88, 86, 99, 87, 84, 81, 90, 82, 
-91, 100, 94, 107, 92, 98, 103, 90, 98, 98, 92, 107, 103, 96, 
-99, 90, 90, 88, 90, 102, 91, 100, 115, 102, 104), r10 = c(79, 
-69, 85, 81, NA, 81, 94, 69, 77, 89, 86, 73, 71, 80, 80, 82, 93, 
-83, 86, 85, 99, 86, 84, 81, 88, 80, 90, 99, 94, 106, 91, 95, 
-102, 90, 98, 97, 92, 106, 103, 96, 98, 89, 90, 88, 89, 100, 90, 
-99, 112, 99, 104)), .Names = c("year", "r1", "r2", "r3", "r4", 
-"r5", "r6", "r7", "r8", "r9", "r10"), class = "data.frame", row.names = c("1", 
-"2", "3", "4", "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", "31", "32", "33", "34", "35", 
-"36", "37", "38", "39", "40", "41", "42", "43", "44", "45", "46", 
-"47", "48", "49", "50", "51"))
diff --git a/data/venice.rda b/data/venice.rda
new file mode 100644
index 0000000..b67b7fc
Binary files /dev/null and b/data/venice.rda differ
diff --git a/data/venice90.rda b/data/venice90.rda
new file mode 100644
index 0000000..ddb10ef
Binary files /dev/null and b/data/venice90.rda differ
diff --git a/data/waitakere.txt b/data/waitakere.txt
deleted file mode 100644
index a15d254..0000000
--- a/data/waitakere.txt
+++ /dev/null
@@ -1,580 +0,0 @@
-agaaus beitaw corlae cyadea cyamed daccup dacdac eladen hedarb hohpop kniexc kuneri lepsco metrob neslan rhosap vitluc altitude
-0 0 1 1 1 0 1 0 1 0 0 0 0 0 0 1 1 260 
-0 0 1 0 0 0 0 0 1 0 0 0 0 1 0 1 0 200 
-1 0 0 1 0 1 0 1 1 1 1 0 0 1 0 0 0 320 
-0 0 0 0 1 0 0 0 0 1 1 0 0 1 0 1 0 320 
-0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 260 
-0 0 0 1 1 0 0 0 0 1 1 0 0 1 0 1 1 200 
-0 1 1 1 1 0 0 0 1 0 1 0 0 0 1 1 1 160 
-0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 80 
-1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 200 
-0 0 1 1 1 0 0 0 0 1 0 1 1 0 0 1 0 60 
-0 0 1 0 1 0 0 0 1 0 1 0 0 0 0 1 1 100 
-0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 320 
-0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 1 220 
-0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 100 
-0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 100 
-0 0 0 1 1 0 0 0 1 0 0 1 0 0 0 1 0 40 
-0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 20 
-0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 200 
-0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 200 
-0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 430 
-0 0 0 1 0 1 0 1 0 0 0 0 1 0 0 0 0 410 
-0 1 0 1 0 1 0 1 0 0 1 0 0 1 0 1 0 400 
-0 0 0 0 1 1 1 1 0 0 1 0 0 0 0 0 0 410 
-0 0 0 0 1 1 1 0 1 0 1 0 0 0 0 0 0 459 
-1 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 420 
-0 1 0 1 1 0 0 1 1 0 1 0 0 0 0 1 0 410 
-0 1 0 1 0 0 0 0 1 0 0 0 0 0 1 1 0 400 
-0 1 0 1 0 0 0 1 0 1 1 1 0 0 0 0 0 428 
-0 0 0 0 0 1 0 0 0 1 1 0 0 0 0 0 0 400 
-1 0 0 1 0 1 0 0 0 0 1 1 0 0 0 1 0 290 
-0 0 0 1 1 1 0 1 1 0 1 0 0 1 0 1 0 300 
-0 1 0 0 1 1 0 1 1 0 1 1 0 0 0 0 0 310 
-0 0 0 1 1 0 0 1 0 0 1 0 0 1 0 1 0 280 
-0 1 0 0 1 1 0 1 0 0 1 0 0 0 0 1 0 260 
-0 0 0 1 0 1 0 1 1 0 1 0 0 1 1 1 0 290 
-0 1 0 0 1 1 0 0 1 0 1 0 0 1 0 1 0 340 
-1 1 0 1 1 0 0 1 1 0 1 1 1 0 0 1 0 310 
-1 1 0 1 1 1 0 1 0 1 1 1 0 0 0 0 0 280 
-0 1 0 1 0 1 0 0 0 0 1 0 0 0 0 1 0 300 
-0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 310 
-0 0 0 0 0 1 0 1 0 1 1 0 0 1 0 1 0 390 
-0 1 0 1 1 1 0 0 0 0 1 0 0 1 0 1 0 370 
-1 1 0 0 0 1 0 0 1 0 1 1 0 1 0 0 0 360 
-0 1 0 0 0 1 0 1 0 0 0 0 0 1 1 0 0 310 
-0 0 0 1 0 0 0 0 1 0 1 1 0 0 1 1 0 270 
-0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 160 
-0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 170 
-0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 300 
-0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 360 
-0 0 0 0 0 1 0 0 1 0 1 1 1 0 0 0 0 360 
-1 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 280 
-0 0 0 0 0 1 0 0 1 0 1 1 0 0 1 1 0 280 
-0 0 0 0 1 0 0 0 1 1 1 0 1 0 1 1 0 180 
-1 0 0 0 0 0 0 1 0 1 1 1 0 0 0 0 0 150 
-1 1 1 0 1 1 0 0 1 0 1 0 0 0 0 1 1 140 
-1 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 1 140 
-0 1 1 1 1 0 0 0 1 1 1 0 0 1 0 1 1 160 
-0 0 0 1 0 0 0 0 1 0 1 0 1 0 0 1 0 260 
-1 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 240 
-0 0 0 0 0 1 0 0 0 0 1 1 1 0 0 0 0 300 
-1 0 0 0 0 1 0 0 0 0 0 1 1 0 0 0 0 300 
-0 0 0 0 1 1 0 0 0 1 1 1 0 0 1 1 0 280 
-0 0 0 1 1 0 0 0 1 1 1 1 0 0 0 1 0 260 
-1 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 220 
-1 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 270 
-1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 1 210 
-1 1 0 1 1 0 0 0 1 1 0 0 0 0 1 1 0 240 
-0 1 1 0 0 0 0 0 0 0 1 1 0 1 0 0 1 200 
-0 1 0 0 1 0 0 1 0 1 1 0 1 0 0 1 0 100 
-0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 120 
-0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 220 
-0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 240 
-0 0 0 0 1 0 0 0 0 0 1 0 0 1 0 1 0 260 
-1 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 180 
-0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 0 1 70 
-0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 150 
-1 0 0 1 0 0 0 0 0 0 1 0 1 0 0 0 0 90 
-0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 160 
-1 0 0 0 1 1 1 0 0 0 1 0 0 0 0 1 0 200 
-1 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 230 
-0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 200 
-1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 140 
-0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 190 
-0 1 0 1 1 0 0 0 1 1 1 0 0 0 0 1 0 270 
-1 1 1 1 1 0 0 0 1 0 0 0 0 1 0 1 1 150 
-1 0 0 1 0 1 0 0 0 0 1 1 0 0 0 0 0 200 
-0 1 0 1 1 0 1 0 0 1 1 0 0 1 0 1 1 100 
-0 0 1 0 0 0 0 0 0 1 1 1 0 0 0 0 1 100 
-0 1 0 1 1 0 1 0 0 0 1 1 0 0 1 1 1 130 
-1 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 200 
-0 0 0 1 0 1 0 1 1 1 0 0 0 0 0 1 1 250 
-0 1 1 1 1 0 0 0 1 0 1 0 0 0 0 1 1 120 
-0 1 0 1 1 0 1 0 1 1 1 0 0 1 0 1 1 180 
-0 1 1 1 1 0 0 0 1 0 0 0 0 0 0 1 1 80 
-0 1 0 0 1 0 0 0 1 0 1 0 0 0 0 1 0 370 
-0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 240 
-1 1 1 1 0 0 0 0 0 0 1 1 0 1 0 1 1 180 
-0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 120 
-1 1 0 1 0 1 0 1 0 0 1 1 0 0 1 0 1 125 
-1 1 1 0 1 0 0 0 0 0 1 0 0 0 0 1 0 80 
-0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 90 
-0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 90 
-0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 1 0 90 
-0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 120 
-0 0 1 1 0 0 0 0 1 0 0 0 0 0 0 1 1 20 
-0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 80 
-0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 80 
-0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 80 
-0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 90 
-0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 1 0 100 
-1 1 0 1 0 1 0 0 1 0 1 1 0 0 0 1 0 120 
-0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 180 
-1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 100 
-0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 150 
-0 0 1 0 1 0 0 0 0 0 0 1 0 0 0 1 0 100 
-0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 160 
-1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 60 
-1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 150 
-1 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 180 
-1 0 0 1 1 1 0 0 0 1 1 1 1 0 0 1 0 260 
-1 0 0 0 0 1 1 0 0 0 1 1 0 0 0 0 0 225 
-1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 290 
-1 1 1 1 0 0 0 0 0 1 1 1 0 0 0 1 0 80 
-1 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 180 
-0 0 0 0 1 0 0 0 0 0 1 1 0 0 0 1 0 60 
-0 0 1 0 1 0 0 0 0 0 1 0 0 0 0 1 1 30 
-0 1 0 0 0 1 1 0 0 0 1 0 0 1 0 1 0 290 
-1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 290 
-0 0 1 1 1 0 0 0 1 1 1 0 0 1 0 1 1 140 
-1 0 0 0 1 1 0 0 0 0 1 1 1 0 0 1 0 60 
-1 1 1 1 1 0 0 0 0 1 1 0 0 0 0 1 1 60 
-0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 70 
-1 0 1 0 1 1 0 0 1 0 1 1 0 0 0 1 1 90 
-0 0 1 1 1 0 0 0 1 1 1 0 0 0 0 1 1 40 
-0 0 1 1 1 0 0 0 1 1 1 1 0 0 0 1 1 50 
-1 0 1 0 1 0 0 0 0 1 1 1 0 0 0 1 1 85 
-0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 140 
-0 1 1 0 1 0 0 0 0 0 1 0 0 0 0 1 1 140 
-1 1 1 0 1 0 0 0 0 1 1 0 0 0 0 1 1 220 
-1 0 0 0 1 0 0 0 1 1 0 1 0 0 1 1 0 140 
-0 0 0 1 1 1 0 0 1 1 1 0 0 0 0 1 0 250 
-0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 0 160 
-1 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 310 
-0 1 1 1 1 0 0 0 1 0 1 0 0 1 0 1 1 180 
-1 0 0 0 1 1 0 1 0 0 1 1 1 0 0 0 0 300 
-0 0 0 1 1 1 0 1 1 1 1 0 1 0 0 1 0 300 
-0 0 0 1 1 1 0 0 0 0 1 1 1 0 0 0 0 260 
-1 0 0 1 1 0 0 1 1 0 1 0 0 1 0 1 0 150 
-0 0 0 1 1 1 0 1 0 0 1 0 0 1 1 1 0 260 
-0 1 1 0 1 0 0 1 1 1 1 0 0 1 0 1 1 200 
-0 1 1 1 1 1 0 1 1 0 1 0 0 0 1 1 1 280 
-0 1 1 1 1 0 0 1 0 0 1 1 0 0 0 1 1 250 
-0 1 1 1 1 0 0 0 1 0 1 0 0 1 1 1 1 250 
-1 1 0 1 1 0 0 1 1 1 1 0 0 1 1 0 0 230 
-0 1 0 1 1 0 0 1 1 1 1 0 0 0 0 1 0 320 
-1 1 0 1 1 1 0 1 1 1 1 0 0 0 1 0 0 200 
-0 1 1 1 1 0 0 1 0 1 1 0 0 1 0 1 0 200 
-0 1 0 1 1 0 0 1 1 0 1 0 0 0 0 1 0 250 
-0 0 1 1 1 0 0 1 0 1 1 0 0 0 1 1 1 240 
-1 0 0 1 0 0 0 0 0 0 1 1 0 0 0 0 0 200 
-0 0 0 1 1 1 0 1 1 0 1 0 0 0 1 1 0 300 
-0 1 1 1 1 0 1 0 1 1 1 0 0 1 0 1 1 140 
-0 0 1 0 1 0 0 0 0 0 1 0 0 0 0 1 1 90 
-0 0 1 1 0 0 0 1 0 0 1 0 0 0 0 1 1 60 
-1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 60 
-0 0 0 1 1 1 1 0 0 0 1 0 0 0 0 1 1 260 
-0 0 1 1 1 0 0 0 0 1 1 0 1 0 0 1 1 180 
-0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 260 
-0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 260 
-1 0 0 1 1 1 0 0 0 0 1 1 1 0 0 0 0 140 
-1 1 1 1 1 0 0 0 0 0 1 1 0 0 0 1 1 20 
-0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 80 
-0 0 1 0 1 0 0 0 0 0 1 0 0 0 0 1 1 100 
-0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 
-0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 
-0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 
-0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 100 
-0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 100 
-0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 100 
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 100 
-0 1 1 1 1 0 0 0 1 1 0 0 0 0 0 0 1 80 
-0 1 1 1 1 0 0 0 0 1 1 0 0 0 0 1 0 80 
-0 0 1 0 0 0 0 0 0 1 0 1 0 0 0 0 0 100 
-0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 80 
-0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 120 
-0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 200 
-0 0 1 1 1 0 0 0 1 1 1 0 0 0 0 1 0 250 
-1 0 1 1 0 0 0 0 0 0 1 0 0 0 0 1 1 110 
-0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 1 0 60 
-1 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 115 
-1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 190 
-1 0 0 0 0 1 0 0 0 0 1 1 1 0 1 0 0 120 
-1 0 0 0 1 1 0 0 0 1 1 1 1 0 1 0 0 140 
-1 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 190 
-0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 130 
-0 1 1 1 1 1 0 0 1 1 1 0 0 0 0 1 1 190 
-0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 40 
-0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 
-0 0 0 1 1 0 0 1 0 1 0 1 1 0 0 0 0 200 
-0 0 0 1 1 1 1 0 0 1 0 1 1 0 0 1 0 160 
-0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 240 
-0 1 1 1 1 1 0 0 1 1 1 0 0 0 1 1 1 200 
-1 0 0 1 1 1 0 0 1 0 1 1 0 0 0 1 1 200 
-0 1 0 1 1 0 0 0 0 0 1 0 0 0 0 0 0 220 
-0 0 0 1 1 0 0 1 1 0 1 1 0 0 1 1 0 260 
-0 1 1 1 1 0 0 1 1 1 1 0 0 0 0 1 0 160 
-0 1 0 1 1 1 0 1 0 1 1 1 1 0 1 0 0 290 
-0 1 0 1 1 1 0 0 1 1 1 0 0 0 0 1 1 140 
-0 0 0 1 1 1 1 0 1 1 1 1 0 0 0 1 1 300 
-0 0 0 0 1 1 0 0 1 0 1 1 0 0 0 0 0 320 
-0 0 0 0 0 1 0 0 0 0 1 1 1 0 0 0 0 270 
-0 1 0 1 1 0 0 1 1 1 1 1 0 0 1 0 0 260 
-0 0 1 1 1 0 0 1 1 1 1 0 0 0 1 1 0 240 
-0 0 0 0 1 1 1 0 0 0 0 1 0 0 1 0 0 310 
-0 0 0 0 0 1 1 0 0 1 0 1 0 0 0 0 0 300 
-0 0 0 0 0 1 1 1 0 0 0 0 1 0 1 0 0 300 
-0 1 0 1 1 1 0 1 1 0 0 0 0 0 1 1 0 340 
-0 0 0 0 0 1 0 0 0 0 0 1 1 0 0 0 0 320 
-0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 330 
-0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 300 
-0 1 0 0 0 0 0 0 1 0 1 0 0 0 0 1 0 370 
-0 1 0 0 0 1 0 1 0 0 1 0 0 0 0 0 0 320 
-0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 1 0 390 
-0 1 0 1 1 1 0 0 1 1 1 0 0 0 0 1 1 340 
-0 1 0 0 0 1 1 1 0 0 1 0 0 1 1 0 0 305 
-1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 220 
-1 0 0 0 1 1 1 1 0 0 1 1 0 0 0 1 0 400 
-0 0 0 0 0 1 1 0 0 0 1 0 0 1 0 0 0 230 
-0 0 0 1 0 1 0 0 1 1 1 0 0 0 0 1 0 300 
-0 0 0 0 0 1 0 0 0 0 1 1 1 0 0 0 0 340 
-0 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 50 
-0 1 1 0 1 0 0 0 1 0 0 0 0 0 0 1 1 10 
-0 1 0 1 1 0 0 0 0 0 1 0 0 0 0 0 0 250 
-0 0 0 1 0 1 1 0 0 0 1 0 0 0 0 0 0 218 
-0 0 0 0 1 0 0 0 1 0 1 1 1 0 1 0 0 245 
-1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 100 
-1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 200 
-0 0 0 1 1 0 0 0 0 0 1 1 1 0 0 0 0 160 
-0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 200 
-0 0 0 1 1 1 0 0 1 0 1 0 0 1 1 1 0 250 
-0 1 0 1 0 0 0 1 1 1 1 1 0 0 0 1 0 290 
-1 0 0 1 1 1 0 0 0 0 1 0 0 0 1 1 0 280 
-0 1 0 1 1 0 0 0 1 1 0 0 0 0 0 1 1 80 
-0 1 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 270 
-0 0 0 1 1 0 0 0 1 0 0 1 0 0 0 0 0 260 
-0 0 0 1 1 0 1 1 1 0 1 0 0 0 1 1 1 110 
-0 1 0 1 1 0 1 1 0 1 1 0 0 0 1 1 0 200 
-0 1 1 1 1 0 0 0 1 0 1 0 0 0 0 1 1 120 
-0 1 1 1 1 0 0 0 1 1 0 0 0 0 0 1 1 160 
-0 1 0 0 1 1 0 1 1 0 1 0 0 0 0 1 0 320 
-0 0 0 1 1 1 0 1 1 0 0 0 0 0 1 1 0 300 
-0 0 0 0 1 1 0 1 0 0 1 0 0 1 0 0 0 370 
-0 1 0 1 1 1 0 0 1 0 1 0 0 0 1 1 0 340 
-0 1 0 1 0 1 0 1 0 0 1 1 0 1 1 0 0 280 
-0 1 0 1 1 0 0 0 0 1 1 0 0 0 0 1 0 200 
-0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 190 
-0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 1 0 200 
-0 1 0 1 1 1 0 0 0 1 1 0 0 0 0 1 0 180 
-0 0 0 1 0 0 0 0 0 0 1 0 1 0 0 0 0 100 
-1 0 0 0 1 1 0 0 0 0 1 1 1 0 0 0 0 120 
-1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 140 
-0 1 0 1 1 1 0 0 0 0 1 0 0 1 1 0 0 110 
-0 0 0 0 1 1 1 0 0 0 1 0 0 0 0 1 1 200 
-1 1 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 220 
-0 1 0 0 0 1 1 0 0 0 1 0 0 0 0 1 0 110 
-0 1 0 0 0 1 1 1 0 0 1 0 0 0 1 1 0 100 
-0 0 0 0 1 1 1 0 0 0 1 0 0 1 0 1 0 0 
-1 0 0 0 0 1 1 0 0 0 1 0 0 0 0 0 0 100 
-0 1 0 0 1 0 1 0 0 0 1 0 0 0 0 1 0 180 
-0 1 1 0 0 1 1 0 0 0 1 0 0 0 0 1 0 180 
-0 1 0 1 1 1 0 0 0 0 1 0 0 1 0 1 0 320 
-0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 360 
-0 1 1 1 1 0 0 0 0 0 1 0 0 0 0 1 1 150 
-0 1 0 0 1 0 1 0 1 0 1 1 0 1 0 1 0 140 
-0 0 0 0 0 1 0 1 0 0 1 1 0 0 0 0 0 325 
-0 1 1 0 1 1 0 0 1 0 1 0 0 0 0 1 0 240 
-0 0 0 0 0 1 1 0 0 0 1 0 0 0 0 1 0 150 
-0 1 0 0 1 0 1 0 0 0 1 0 0 0 0 1 1 160 
-0 1 0 1 1 1 1 0 1 0 1 0 0 0 1 1 0 140 
-1 0 0 0 1 0 0 0 0 0 1 1 1 0 1 0 0 70 
-0 0 0 1 1 1 1 0 1 0 1 0 0 1 0 1 0 160 
-1 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 110 
-0 0 0 0 1 0 1 0 1 1 1 0 0 1 1 1 0 90 
-0 0 0 0 1 1 1 0 1 0 1 0 0 1 0 1 0 200 
-1 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 70 
-0 1 0 1 1 0 0 0 1 1 1 0 0 0 0 1 0 110 
-1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 280 
-1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 200 
-0 1 1 1 1 0 0 0 1 1 1 0 0 0 0 1 1 220 
-0 1 0 1 1 0 0 1 1 0 1 1 0 0 1 0 0 360 
-0 1 0 0 1 0 0 0 0 0 1 0 0 0 0 1 0 380 
-0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 260 
-0 0 0 0 0 1 0 0 0 0 1 0 0 1 0 1 0 390 
-1 0 0 1 0 1 0 0 0 0 1 1 0 0 1 0 0 280 
-1 0 1 1 1 1 0 0 1 0 1 0 0 1 1 1 1 160 
-0 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 320 
-0 0 0 0 0 0 0 1 0 0 1 1 1 0 0 0 0 220 
-1 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 300 
-0 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 345 
-1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 260 
-0 1 0 1 1 1 0 1 1 1 1 0 0 1 0 1 0 180 
-1 0 1 0 1 1 0 0 1 1 1 0 0 1 1 1 0 200 
-0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 0 0 390 
-0 1 0 1 1 1 1 0 1 1 1 0 0 1 0 1 0 180 
-0 0 0 1 0 1 0 1 0 0 1 0 0 1 1 1 0 90 
-0 0 0 1 1 1 0 1 1 0 1 0 0 1 1 1 0 270 
-0 0 0 0 1 1 0 1 0 0 1 0 0 1 0 1 0 200 
-0 0 0 1 1 1 1 1 1 0 1 0 0 1 1 1 0 340 
-0 0 0 0 0 1 0 1 0 0 1 0 0 1 0 1 0 370 
-0 0 0 1 1 1 1 1 1 0 1 0 0 1 1 1 0 260 
-1 0 0 0 0 1 0 0 0 0 1 1 0 1 1 0 0 240 
-0 0 0 1 0 0 0 0 1 1 1 0 0 0 0 1 0 240 
-0 1 0 0 1 1 0 0 1 1 0 0 0 1 1 1 0 210 
-0 0 0 0 1 1 0 1 0 0 1 1 1 0 0 0 0 300 
-0 0 0 1 1 0 0 1 1 0 1 0 0 0 0 0 0 360 
-0 1 0 0 1 1 0 1 0 0 1 1 0 1 0 0 0 340 
-0 0 0 0 1 1 0 1 0 0 1 0 0 1 0 1 0 200 
-1 0 0 0 0 0 1 1 0 0 0 1 0 1 0 0 0 200 
-0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 300 
-0 0 0 0 1 0 0 0 1 0 1 0 0 1 0 1 0 270 
-0 0 0 1 1 1 0 0 1 0 1 0 0 0 0 1 0 280 
-0 0 0 1 0 0 0 0 1 0 1 0 0 1 1 0 0 200 
-0 1 0 1 1 1 0 0 1 1 1 0 0 0 1 1 1 170 
-0 1 0 1 1 1 1 1 1 1 1 0 0 1 1 1 0 160 
-1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 190 
-0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 190 
-0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 140 
-1 0 0 1 0 0 0 0 0 0 1 1 1 0 0 0 0 140 
-0 0 1 1 1 1 0 1 1 1 1 0 0 0 0 1 0 150 
-0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 170 
-1 0 0 0 0 1 0 0 0 0 0 1 0 1 1 0 0 360 
-0 0 0 0 0 1 0 1 0 0 0 0 1 0 0 0 0 320 
-0 0 0 0 0 1 1 0 1 0 1 1 0 0 0 0 0 325 
-1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
-0 0 0 1 1 0 0 1 0 1 1 0 0 0 0 1 0 320 
-0 1 0 1 0 1 0 1 0 0 1 0 0 1 1 0 0 320 
-0 0 0 0 0 1 0 1 1 1 1 0 0 1 0 1 0 340 
-0 1 0 0 1 1 0 1 0 0 0 0 0 1 1 1 0 280 
-0 0 0 0 1 1 0 0 1 1 1 0 0 1 1 1 0 260 
-1 0 0 1 1 1 0 0 0 0 1 0 0 1 1 0 0 200 
-0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 1 0 200 
-0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 140 
-0 1 0 1 1 1 0 0 0 1 0 0 0 1 0 1 0 240 
-0 0 0 1 1 1 0 1 1 1 1 0 0 0 1 1 0 170 
-0 0 0 1 1 1 0 0 1 1 1 0 0 0 0 1 0 190 
-0 0 0 0 1 0 0 1 1 1 0 0 0 0 0 1 0 200 
-0 1 0 0 1 0 0 0 0 1 1 0 0 0 1 1 0 150 
-0 0 0 0 0 1 0 1 1 1 1 0 0 1 0 1 0 340 
-0 1 0 0 1 0 0 0 0 1 1 1 0 0 0 0 1 220 
-0 1 1 1 1 0 0 0 1 1 0 0 0 0 0 1 0 180 
-1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 240 
-0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 160 
-0 1 0 0 1 1 0 1 1 1 1 0 0 0 0 1 0 230 
-0 1 0 1 1 1 0 1 1 1 1 0 0 0 0 1 0 240 
-0 0 0 1 1 1 0 1 1 1 1 0 0 0 1 1 0 220 
-0 0 0 1 0 1 0 1 1 1 1 0 0 0 0 1 0 210 
-1 0 0 1 1 1 1 0 1 0 1 1 0 0 0 1 1 220 
-0 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 210 
-0 0 0 1 1 1 0 1 1 1 1 0 0 0 0 1 1 210 
-0 0 0 1 0 0 1 0 1 0 1 0 0 0 0 1 0 170 
-1 0 0 1 0 1 1 1 1 0 1 1 0 1 0 1 0 280 
-0 1 1 0 1 0 0 0 1 1 1 0 0 0 0 1 1 200 
-0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 300 
-1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
-0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 310 
-0 1 0 1 1 0 0 0 1 1 1 0 0 0 0 1 0 120 
-0 1 0 1 1 1 0 0 1 1 1 0 0 0 0 1 1 290 
-0 0 0 1 0 1 1 0 1 0 1 0 0 1 0 1 0 120 
-1 1 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 120 
-1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 100 
-0 0 0 1 1 1 0 0 1 1 1 0 0 1 0 1 0 140 
-0 0 0 0 1 0 0 0 0 0 0 1 1 0 0 0 1 100 
-1 0 0 0 0 1 0 0 0 0 1 1 0 1 0 0 0 140 
-0 1 0 1 1 0 1 1 0 1 1 0 0 0 1 1 0 200 
-1 0 0 0 0 1 0 0 0 0 0 1 1 0 0 0 0 200 
-0 1 0 1 1 1 1 0 0 0 1 0 0 1 0 1 0 80 
-0 0 0 1 1 0 0 0 1 0 1 0 0 0 0 1 0 120 
-0 1 0 1 1 1 0 1 0 1 0 0 0 0 0 1 0 200 
-0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 120 
-1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 200 
-0 1 0 1 1 0 1 0 1 0 1 0 0 0 0 1 0 100 
-1 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 220 
-0 0 0 0 1 1 1 0 0 0 1 0 0 1 0 1 0 200 
-0 0 0 0 0 0 1 0 0 0 1 1 1 0 0 0 0 220 
-0 1 0 1 1 0 0 0 0 1 1 0 0 0 1 1 0 210 
-0 0 0 0 0 0 1 0 0 0 1 1 0 0 0 0 0 35 
-0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 50 
-1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 140 
-0 0 0 0 0 1 1 0 0 1 1 0 0 0 0 1 0 150 
-0 0 0 1 0 1 0 0 1 1 1 0 1 0 0 1 0 210 
-0 1 0 1 1 0 0 1 1 1 1 0 0 0 0 1 0 160 
-1 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 180 
-0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 240 
-0 1 0 1 0 1 1 0 1 1 1 0 0 1 0 1 0 220 
-1 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 270 
-0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 240 
-0 0 0 1 1 1 1 1 0 1 1 1 0 0 0 0 0 240 
-0 0 0 0 1 1 1 0 0 1 1 0 0 0 0 1 0 250 
-0 1 1 0 1 0 0 0 0 1 0 0 0 0 0 1 0 280 
-0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 300 
-0 1 0 1 1 0 0 0 1 1 0 0 0 0 0 1 1 220 
-1 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 90 
-0 1 0 1 1 0 0 0 0 1 1 0 0 0 0 1 1 100 
-1 0 0 1 1 1 0 0 0 0 0 1 0 0 0 0 0 140 
-0 0 0 1 1 0 1 0 0 1 0 0 1 0 0 1 0 100 
-0 1 0 1 1 0 0 0 1 1 1 0 0 0 0 1 0 140 
-0 1 1 1 1 0 0 0 1 1 1 0 0 0 0 1 1 110 
-0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 140 
-0 1 0 0 1 0 0 0 0 0 1 0 0 0 0 1 1 10 
-0 1 0 1 0 0 0 0 0 0 1 1 0 0 0 1 1 60 
-1 1 0 0 0 1 1 0 0 0 1 1 0 0 0 1 0 30 
-0 0 0 1 1 0 1 0 1 0 1 0 0 0 0 1 1 140 
-0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 5 
-0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 50 
-0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 1 25 
-0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 50 
-0 1 1 1 1 0 0 0 0 0 1 1 0 1 1 1 1 100 
-0 1 0 1 1 0 0 0 1 0 1 0 0 0 0 1 0 100 
-0 1 1 0 1 1 0 0 0 0 1 1 0 1 0 1 1 70 
-0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 1 100 
-0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 200 
-0 0 0 1 1 0 0 0 1 0 0 0 1 0 0 1 0 180 
-0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 1 120 
-0 0 1 1 1 0 0 0 1 0 0 0 0 0 0 1 0 120 
-0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 100 
-0 0 1 0 0 0 0 0 1 0 1 1 0 0 0 1 1 120 
-0 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 1 130 
-0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 0 30 
-1 1 0 0 0 0 1 0 0 1 0 1 0 0 0 0 1 70 
-0 0 1 0 0 0 0 1 1 0 1 1 0 0 0 0 0 5 
-0 1 1 1 0 0 0 0 1 1 1 0 1 0 0 0 0 25 
-0 0 0 1 1 0 0 0 1 0 1 0 1 0 0 0 0 20 
-0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 10 
-0 0 0 1 0 0 0 0 0 0 1 0 1 0 0 1 0 45 
-0 0 1 0 0 0 0 0 0 1 1 1 0 1 1 1 1 180 
-1 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 200 
-1 0 0 0 0 1 0 0 0 0 1 1 0 1 0 0 1 200 
-0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 60 
-1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 140 
-0 0 0 0 1 0 0 0 0 1 0 0 1 0 0 1 0 170 
-0 0 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 200 
-0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 150 
-0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 180 
-0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 40 
-0 0 1 0 0 0 0 0 0 0 0 1 1 0 0 1 1 40 
-0 0 1 0 0 0 0 0 0 1 0 1 0 0 0 0 1 30 
-0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 90 
-0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 200 
-0 1 1 1 0 0 0 0 0 0 1 1 0 0 0 1 1 140 
-0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 200 
-0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 60 
-0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 1 20 
-0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 100 
-0 0 0 0 1 0 0 0 0 0 0 1 1 0 0 1 0 200 
-0 0 0 1 1 0 0 0 0 0 1 0 1 0 0 0 0 180 
-0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 50 
-0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 100 
-0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 45 
-0 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 100 
-0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 1 0 80 
-0 0 1 0 0 1 0 0 0 0 1 1 0 0 0 1 0 70 
-0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 60 
-1 0 0 1 0 0 0 0 1 1 1 1 0 0 1 1 1 130 
-0 0 1 1 0 0 0 0 0 0 1 1 0 0 1 1 1 100 
-0 0 1 0 0 0 0 0 0 0 1 1 0 0 0 1 1 85 
-0 1 1 1 1 0 0 1 1 0 1 1 0 0 0 1 1 30 
-1 1 1 1 1 0 1 0 0 0 1 1 0 0 0 1 1 100 
-0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 40 
-0 0 1 0 1 0 0 0 0 0 0 1 1 0 0 1 1 80 
-0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 100 
-0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 110 
-1 0 0 0 1 1 0 0 0 0 1 1 0 0 0 0 0 200 
-0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 270 
-1 0 0 0 1 1 1 0 0 1 1 1 1 0 0 0 0 240 
-1 0 0 1 1 1 1 0 1 1 1 1 0 0 1 1 0 210 
-1 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 200 
-1 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 140 
-1 0 0 1 1 1 0 0 1 0 1 1 0 1 0 1 1 220 
-0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 240 
-0 0 0 1 1 1 1 0 1 1 1 1 0 0 0 1 1 240 
-1 0 0 1 1 1 0 0 1 1 1 1 0 0 1 1 1 200 
-1 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 220 
-0 1 0 1 1 1 1 0 1 1 1 0 0 0 1 1 1 160 
-0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 50 
-0 1 1 1 0 0 1 0 0 0 0 1 0 0 0 1 1 80 
-0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 90 
-1 0 0 0 0 1 0 0 0 0 0 1 1 0 0 0 0 90 
-0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 90 
-0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 90 
-0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 60 
-0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 1 40 
-0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 25 
-0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 130 
-0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 0 180 
-0 0 1 0 0 0 0 0 0 0 1 1 0 0 0 1 1 25 
-0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 50 
-0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 120 
-0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 130 
-0 0 1 1 1 0 0 0 0 0 1 1 0 0 1 1 1 100 
-1 0 1 0 1 0 0 1 1 0 1 1 0 0 0 0 1 120 
-1 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 100 
-0 1 1 0 1 0 0 0 1 0 1 0 0 0 0 1 1 60 
-1 0 1 1 1 0 0 1 0 1 1 0 0 0 1 1 0 60 
-0 1 1 1 1 0 0 0 1 0 1 0 0 0 0 1 1 70 
-0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 0 10 
-0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 50 
-0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 100 
-0 0 0 0 1 0 0 0 0 0 0 1 1 0 0 0 0 150 
-1 1 0 0 1 1 1 0 0 0 1 1 0 0 0 1 0 150 
-0 1 0 1 1 0 0 0 1 1 1 0 0 0 1 1 1 120 
-1 0 0 0 0 1 1 0 0 0 1 1 0 0 0 0 0 100 
-0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 110 
-1 0 0 0 0 1 1 0 0 0 1 1 0 0 0 0 0 140 
-0 0 0 1 1 0 1 0 0 0 1 0 0 0 0 1 0 120 
-0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 70 
-1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 60 
-0 1 1 0 0 0 1 0 1 0 1 1 0 0 0 1 1 70 
-0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 5 
-0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 50 
-0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 70 
-0 1 1 0 1 0 1 1 1 0 1 0 0 0 0 1 1 90 
-1 0 0 0 0 1 1 0 0 0 1 1 0 0 0 0 0 80 
-1 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 0 10 
-1 0 0 0 0 1 0 0 0 0 0 1 0 0 1 0 0 140 
-1 1 1 0 1 0 0 0 0 0 1 0 0 0 0 1 1 90 
-1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 70 
-1 0 0 0 1 1 0 0 1 0 1 1 0 0 0 1 1 90 
-1 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 130 
-0 0 1 1 1 1 1 0 1 0 1 0 0 0 1 1 1 120 
-0 1 0 0 1 0 0 0 1 0 1 0 0 0 0 1 1 100 
-0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 40 
-1 0 0 1 0 1 0 0 1 0 1 1 0 0 1 1 0 160 
-0 1 1 1 1 0 0 0 1 0 1 0 0 0 0 1 0 120 
-1 0 0 0 1 1 0 0 0 0 1 0 0 0 1 0 0 140 
-0 0 0 0 1 1 1 0 0 0 1 0 0 0 1 1 0 180 
-0 0 0 1 1 1 1 0 1 0 1 0 0 0 1 1 0 130 
-1 0 0 0 1 1 0 0 0 0 0 1 0 0 1 0 0 100 
-1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 120 
-1 0 0 1 1 1 1 0 0 0 1 1 0 0 1 1 0 80 
-0 0 1 1 1 0 1 0 1 0 1 0 0 0 0 1 1 140 
-1 0 0 0 0 1 1 0 0 0 1 1 0 0 0 0 0 150 
-1 0 0 1 0 0 0 0 0 0 1 0 1 0 1 1 0 130 
-1 1 1 1 1 0 0 0 0 0 1 0 0 0 0 1 1 60 
-1 0 0 0 1 0 0 0 0 0 1 1 0 0 0 0 0 60 
-0 0 1 1 1 0 0 0 0 0 1 0 0 0 0 1 1 80 
-0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 80 
-0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 40 
-0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 20 
-0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 60 
-0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 280 
-0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 80 
-0 0 0 1 0 0 0 0 1 0 1 1 1 0 0 0 0 60 
-0 0 0 1 1 0 1 0 1 1 0 1 0 0 0 1 1 45 
-1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 40 
-0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 60 
-1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 40 
-0 0 0 0 0 0 0 0 1 0 1 0 1 0 0 0 0 40 
-0 1 0 0 0 0 1 0 0 0 1 1 0 0 0 1 1 60 
-0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 1 20 
-1 1 0 1 1 0 1 0 0 0 1 1 0 0 0 1 1 40 
-1 0 0 1 0 1 0 0 0 0 1 1 0 0 0 1 0 40 
-0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 50 
-0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 1 15 
-0 1 0 0 0 0 1 0 0 0 1 1 0 0 0 1 1 20 
-1 0 0 0 0 1 1 0 0 0 1 1 0 0 0 0 0 50 
-0 1 0 0 1 0 0 0 0 0 1 0 0 0 0 1 1 60 
-0 0 0 0 1 0 1 0 0 0 1 1 0 0 0 0 0 30 
-0 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 1 50 
-0 1 1 0 0 0 1 0 0 0 0 1 0 0 0 0 1 50 
-0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 20 
-1 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 80 
-0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 15 
-0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 50 
-0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 70 
-0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 40 
-0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 15 
-0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 30 
-1 0 1 0 1 0 1 0 0 0 0 1 0 1 0 1 1 10 
-0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 10 
diff --git a/data/waitakere.txt.gz b/data/waitakere.txt.gz
new file mode 100644
index 0000000..775e45a
Binary files /dev/null and b/data/waitakere.txt.gz differ
diff --git a/data/wffc.R b/data/wffc.R
deleted file mode 100644
index 36d92c2..0000000
--- a/data/wffc.R
+++ /dev/null
@@ -1,2924 +0,0 @@
-"wffc" <-
-structure(list(length = c(180, 182, 185, 189, 193, 195, 195, 
-197, 198, 209, 210, 215, 215, 218, 218, 219, 228, 228, 241, 303, 
-182, 182, 195, 206, 212, 214, 217, 224, 224, 229, 231, 234, 252, 
-255, 292, 294, 294, 335, 355, 393, 200, 205, 210, 238, 182, 182, 
-186, 201, 205, 208, 209, 216, 218, 221, 222, 223, 224, 225, 226, 
-228, 228, 229, 230, 233, 257, 260, 271, 274, 274, 316, 316, 320, 
-324, 325, 337, 350, 181, 188, 190, 194, 198, 200, 212, 212, 229, 
-231, 238, 240, 252, 180, 203, 205, 240, 260, 180, 180, 181, 181, 
-182, 190, 191, 191, 192, 194, 195, 196, 197, 200, 203, 212, 213, 
-215, 225, 248, 250, 251, 305, 181, 183, 183, 185, 193, 195, 195, 
-205, 206, 210, 210, 221, 226, 231, 248, 251, 251, 257, 267, 277, 
-280, 283, 285, 300, 320, 333, 340, 376, 223, 225, 230, 237, 249, 
-253, 264, 275, 310, 181, 181, 182, 184, 184, 185, 185, 186, 186, 
-188, 195, 195, 212, 214, 215, 235, 281, 312, 190, 201, 204, 210, 
-210, 222, 245, 251, 283, 180, 180, 180, 180, 180, 185, 190, 195, 
-195, 195, 200, 205, 210, 210, 215, 215, 220, 220, 220, 230, 230, 
-255, 280, 280, 180, 180, 181, 182, 183, 185, 189, 195, 199, 203, 
-205, 210, 211, 214, 215, 215, 220, 221, 223, 226, 229, 238, 220, 
-306, 309, 348, 180, 180, 210, 210, 220, 304, 353, 180, 183, 183, 
-185, 185, 187, 187, 201, 202, 230, 296, 194, 208, 213, 213, 219, 
-221, 222, 225, 228, 230, 232, 258, 273, 292, 305, 306, 180, 185, 
-187, 187, 189, 191, 192, 201, 203, 206, 219, 232, 252, 258, 271, 
-316, 180, 188, 190, 192, 195, 210, 223, 226, 226, 231, 247, 284, 
-319, 194, 197, 215, 217, 223, 264, 275, 333, 334, 182, 186, 197, 
-205, 207, 207, 210, 261, 271, 180, 183, 192, 194, 205, 206, 215, 
-218, 225, 225, 230, 247, 338, 180, 180, 180, 180, 185, 190, 190, 
-190, 195, 205, 210, 215, 215, 220, 220, 220, 220, 220, 225, 254, 
-260, 280, 290, 295, 295, 300, 300, 330, 187, 190, 192, 194, 218, 
-225, 269, 270, 271, 314, 183, 183, 185, 190, 190, 195, 204, 205, 
-205, 205, 205, 213, 215, 215, 220, 235, 237, 301, 325, 185, 204, 
-207, 212, 221, 181, 190, 191, 192, 192, 204, 215, 220, 227, 240, 
-240, 245, 246, 285, 302, 302, 310, 330, 390, 190, 268, 181, 181, 
-182, 183, 185, 201, 219, 221, 222, 236, 244, 295, 315, 329, 420, 
-180, 181, 182, 185, 200, 200, 210, 215, 217, 220, 220, 225, 235, 
-245, 260, 270, 375, 375, 380, 445, 180, 181, 185, 190, 195, 201, 
-208, 208, 212, 215, 215, 220, 229, 231, 255, 300, 325, 189, 191, 
-211, 222, 226, 313, 322, 181, 182, 183, 185, 185, 185, 190, 193, 
-196, 198, 200, 200, 200, 205, 205, 210, 210, 211, 215, 220, 229, 
-182, 182, 190, 190, 190, 192, 217, 218, 220, 224, 242, 264, 270, 
-290, 440, 181, 185, 196, 214, 210, 222, 240, 255, 300, 310, 415, 
-180, 184, 194, 195, 204, 215, 231, 263, 378, 185, 190, 205, 213, 
-215, 248, 255, 195, 195, 226, 250, 183, 188, 190, 196, 214, 280, 
-340, 352, 180, 183, 190, 194, 202, 205, 212, 213, 218, 220, 197, 
-198, 180, 180, 180, 190, 200, 210, 210, 250, 260, 182, 182, 186, 
-186, 186, 190, 192, 195, 196, 202, 205, 207, 211, 214, 215, 218, 
-220, 223, 234, 235, 235, 235, 236, 237, 241, 241, 243, 246, 247, 
-248, 251, 252, 253, 262, 277, 180, 185, 185, 185, 190, 190, 200, 
-205, 214, 215, 215, 235, 240, 260, 264, 266, 270, 287, 186, 186, 
-186, 186, 188, 188, 189, 189, 192, 193, 193, 194, 198, 200, 200, 
-207, 210, 213, 222, 224, 241, 246, 256, 260, 265, 266, 272, 276, 
-382, 195, 222, 252, 280, 181, 182, 183, 185, 185, 188, 190, 193, 
-194, 201, 204, 210, 229, 232, 234, 238, 254, 299, 301, 181, 191, 
-194, 196, 212, 229, 242, 245, 250, 255, 261, 261, 266, 293, 297, 
-303, 180, 181, 181, 182, 184, 185, 191, 191, 193, 201, 205, 207, 
-210, 213, 215, 221, 221, 225, 236, 261, 276, 290, 356, 180, 182, 
-190, 191, 192, 203, 207, 213, 214, 215, 220, 223, 233, 240, 241, 
-247, 255, 260, 263, 264, 265, 285, 333, 181, 181, 208, 221, 238, 
-264, 268, 275, 275, 301, 353, 180, 185, 185, 195, 195, 195, 195, 
-199, 200, 200, 200, 201, 205, 210, 210, 223, 223, 235, 240, 252, 
-262, 265, 285, 290, 295, 330, 410, 181, 181, 183, 184, 185, 185, 
-185, 207, 221, 223, 231, 234, 234, 266, 273, 277, 282, 392, 180, 
-187, 190, 195, 195, 195, 197, 200, 213, 215, 220, 222, 249, 257, 
-258, 268, 270, 282, 310, 181, 181, 182, 184, 185, 193, 194, 195, 
-198, 200, 204, 206, 208, 211, 219, 231, 234, 239, 239, 240, 246, 
-257, 258, 260, 265, 270, 280, 302, 327, 345, 455, 195, 239, 251, 
-262, 298, 307, 181, 192, 198, 198, 200, 201, 201, 203, 205, 207, 
-222, 225, 228, 228, 239, 242, 254, 255, 256, 256, 282, 283, 290, 
-185, 195, 202, 202, 245, 255, 265, 290, 295, 335, 393, 182, 200, 
-220, 227, 245, 250, 295, 185, 195, 200, 201, 201, 210, 229, 259, 
-267, 270, 273, 275, 283, 180, 180, 202, 217, 225, 251, 277, 201, 
-217, 257, 258, 276, 279, 321, 324, 329, 352, 180, 181, 183, 196, 
-198, 212, 228, 235, 235, 186, 190, 252, 180, 180, 181, 186, 188, 
-188, 188, 190, 190, 192, 195, 196, 200, 205, 207, 216, 218, 218, 
-225, 227, 230, 244, 246, 251, 255, 262, 291, 315, 180, 185, 185, 
-190, 195, 195, 195, 195, 195, 200, 200, 220, 231, 240, 244, 247, 
-257, 264, 337, 181, 181, 183, 184, 190, 194, 195, 195, 207, 212, 
-215, 231, 233, 237, 238, 245, 251, 251, 252, 262, 272, 280, 285, 
-292, 294, 295, 191, 201, 221, 233, 235, 242, 246, 248, 282, 284, 
-424, 494, 185, 195, 227, 235, 248, 257, 320, 185, 200, 203, 215, 
-235, 248, 250, 180, 180, 185, 185, 192, 194, 201, 210, 213, 221, 
-292, 180, 180, 182, 189, 180, 182, 186, 194, 195, 195, 198, 200, 
-201, 205, 217, 225, 181, 191, 206, 210, 249, 324, 190, 192, 348, 
-180, 180, 182, 192, 195, 195, 195, 202, 212, 220, 240, 246, 247, 
-250, 265, 265, 265, 270, 270, 272, 273, 313, 180, 189, 191, 192, 
-196, 208, 211, 227, 228, 229, 230, 230, 233, 241, 245, 252, 254, 
-256, 258, 262, 267, 276, 295, 362, 229, 246, 196, 212, 225, 228, 
-230, 235, 251, 260, 261, 270, 289, 310, 345, 180, 184, 185, 188, 
-195, 200, 210, 211, 235, 242, 245, 245, 246, 250, 264, 268, 180, 
-182, 183, 202, 215, 190, 200, 210, 330, 325, 356, 185, 245, 256, 
-262, 291, 342, 181, 182, 188, 191, 191, 193, 235, 248, 250, 251, 
-265, 275, 328, 180, 187, 187, 195, 195, 200, 205, 235, 250, 275, 
-286, 379, 192, 185, 188, 195, 221, 226, 236, 181, 183, 186, 187, 
-192, 194, 197, 203, 204, 205, 207, 209, 210, 257, 274, 300, 181, 
-182, 185, 202, 211, 195, 180, 180, 184, 187, 187, 189, 192, 193, 
-194, 196, 196, 197, 197, 198, 200, 204, 205, 207, 207, 208, 213, 
-220, 223, 225, 228, 230, 233, 234, 236, 237, 238, 242, 258, 265, 
-291, 292, 293, 180, 200, 205, 205, 210, 210, 210, 214, 220, 220, 
-225, 250, 270, 290, 300, 180, 181, 181, 185, 189, 190, 191, 192, 
-201, 210, 212, 218, 224, 226, 231, 262, 185, 185, 190, 196, 200, 
-205, 205, 210, 218, 226, 226, 230, 230, 230, 230, 240, 240, 240, 
-243, 245, 248, 250, 250, 250, 250, 255, 255, 260, 265, 270, 300, 
-300, 320, 320, 180, 180, 183, 185, 196, 198, 198, 201, 201, 203, 
-205, 206, 208, 208, 210, 214, 215, 215, 216, 221, 222, 234, 238, 
-238, 253, 253, 259, 261, 276, 180, 180, 180, 180, 181, 185, 185, 
-190, 198, 200, 210, 210, 212, 215, 218, 220, 220, 222, 228, 230, 
-230, 232, 239, 239, 240, 290, 290, 295, 185, 190, 195, 195, 212, 
-216, 218, 218, 222, 233, 235, 240, 242, 245, 246, 250, 251, 255, 
-255, 257, 280, 295, 328, 359, 180, 195, 210, 220, 220, 223, 230, 
-230, 240, 242, 249, 258, 263, 267, 287, 337, 181, 190, 195, 195, 
-198, 210, 212, 214, 220, 222, 223, 224, 244, 250, 275, 283, 284, 
-319, 438, 180, 180, 182, 185, 189, 192, 192, 194, 198, 202, 208, 
-210, 215, 215, 225, 228, 232, 238, 243, 256, 262, 273, 180, 180, 
-180, 180, 180, 185, 185, 185, 186, 190, 190, 192, 193, 194, 195, 
-198, 201, 208, 210, 210, 215, 216, 216, 235, 235, 240, 245, 245, 
-290, 180, 181, 182, 183, 196, 200, 208, 210, 210, 237, 243, 264, 
-180, 180, 187, 188, 202, 207, 210, 222, 225, 244, 185, 192, 193, 
-201, 205, 225, 245, 255, 255, 258, 180, 180, 180, 180, 180, 182, 
-183, 183, 186, 189, 197, 200, 200, 205, 210, 216, 219, 220, 222, 
-225, 226, 226, 236, 257, 258, 258, 280, 290, 190, 246, 185, 197, 
-198, 208, 228, 243, 243, 297, 298, 300, 315, 340, 345, 345, 183, 
-189, 305, 396, 180, 180, 182, 182, 185, 186, 188, 188, 192, 192, 
-193, 197, 201, 213, 221, 222, 224, 224, 225, 226, 231, 232, 237, 
-247, 262, 265, 315, 180, 180, 180, 180, 180, 181, 190, 190, 192, 
-192, 195, 200, 200, 210, 210, 210, 210, 212, 215, 220, 220, 230, 
-230, 231, 240, 320, 180, 183, 183, 188, 193, 200, 200, 204, 204, 
-206, 208, 209, 211, 213, 215, 218, 223, 224, 225, 227, 260, 180, 
-180, 180, 182, 187, 190, 192, 195, 197, 200, 205, 206, 209, 211, 
-211, 214, 225, 230, 230, 232, 233, 233, 233, 237, 247, 247, 252, 
-290, 180, 196, 211, 221, 222, 226, 365, 190, 192, 195, 200, 200, 
-204, 210, 212, 219, 220, 222, 225, 227, 227, 227, 228, 229, 232, 
-235, 239, 240, 244, 245, 252, 254, 257, 258, 270, 281, 281, 290, 
-190, 212, 240, 243, 252, 282, 358, 185, 194, 200, 210, 221, 223, 
-228, 230, 232, 250, 255, 257, 258, 262, 299, 314, 180, 193, 198, 
-198, 199, 205, 208, 224, 232, 232, 234, 237, 241, 245, 282, 292, 
-295, 356, 370, 180, 186, 191, 196, 196, 213, 216, 225, 240, 183, 
-188, 192, 213, 223, 252, 185, 190, 195, 198, 200, 203, 205, 212, 
-225, 264, 182, 183, 189, 192, 195, 197, 219, 224, 226, 242, 244, 
-244, 249, 270, 272, 274, 285, 308, 208, 222, 235, 281, 180, 180, 
-180, 180, 181, 183, 202, 210, 220, 224, 229, 229, 239, 248, 265, 
-286, 292, 245, 265, 180, 180, 193, 204, 207, 230, 260, 262, 274, 
-401, 180, 190, 201, 210, 218, 220, 221, 225, 225, 233, 243, 244, 
-253, 254, 345, 194, 195, 196, 214, 215, 226, 241, 248, 256, 304, 
-218, 195, 180, 180, 180, 183, 184, 185, 185, 188, 193, 199, 218, 
-221, 246, 260, 262, 290, 290, 305, 331, 332, 345, 180, 185, 191, 
-196, 200, 222, 224, 242, 242, 261, 515, 180, 181, 232, 232, 251, 
-252, 265, 185, 194, 202, 210, 235, 241, 243, 244, 250, 283, 285, 
-287, 395, 191, 213, 214, 214, 214, 258, 262, 287, 301, 425, 214, 
-218, 190, 195, 198, 210, 214, 216, 223, 224, 230, 236, 240, 284, 
-298, 300, 180, 188, 192, 195, 198, 202, 204, 218, 218, 227, 230, 
-235, 245, 254, 256, 263, 266, 275, 285, 301, 302, 392, 180, 180, 
-180, 190, 199, 204, 205, 210, 212, 214, 214, 217, 218, 220, 224, 
-225, 230, 230, 230, 239, 240, 241, 248, 250, 252, 265, 275, 279, 
-290, 293, 310, 315, 180, 208, 210, 245, 180, 195, 199, 210, 210, 
-215, 217, 220, 250, 265, 275, 275, 180, 185, 210, 215, 261, 207, 
-210, 226, 227, 236, 237, 245, 246, 263, 269, 294, 308, 329, 182, 
-184, 189, 190, 192, 194, 195, 215, 216, 220, 220, 225, 231, 232, 
-238, 246, 248, 259, 277, 279, 307, 323, 180, 183, 191, 196, 197, 
-198, 202, 202, 204, 206, 211, 226, 243, 256, 258, 260, 265, 265, 
-281, 282, 294, 295, 180, 270, 274, 280, 330, 330, 350, 180, 180, 
-180, 180, 181, 190, 190, 195, 200, 202, 203, 203, 206, 207, 208, 
-216, 218, 219, 220, 220, 230, 234, 235, 236, 258, 262, 263, 272, 
-274, 280, 280, 281, 294, 308, 323, 329, 333, 180, 182, 184, 190, 
-215, 215, 215, 227, 231, 235, 240, 242, 250, 260, 280, 288, 345, 
-180, 180, 182, 184, 195, 195, 198, 207, 212, 220, 220, 230, 246, 
-247, 248, 248, 250, 255, 255, 262, 273, 281, 284, 290, 290, 300, 
-327, 345, 181, 205, 206, 210, 219, 230, 260, 265, 290, 300, 300, 
-180, 205, 207, 227, 227, 240, 250, 279, 310, 180, 197, 198, 235, 
-240, 260, 285, 182, 182, 187, 192, 195, 200, 215, 216, 220, 228, 
-248, 254, 263, 270, 300, 301, 303, 303, 320, 394, 181, 182, 190, 
-194, 195, 220, 238, 240, 265, 280, 332, 180, 185, 185, 190, 194, 
-201, 215, 218, 231, 286, 180, 185, 190, 190, 195, 200, 220, 230, 
-240, 265, 280, 300, 302, 340, 181, 181, 187, 188, 197, 197, 198, 
-203, 205, 212, 222, 222, 230, 236, 237, 238, 263, 266, 183, 249, 
-252, 264, 302, 180, 180, 181, 182, 183, 192, 192, 199, 201, 202, 
-202, 203, 211, 212, 213, 214, 215, 221, 222, 224, 227, 230, 234, 
-259, 264, 277, 280, 281, 294, 315, 195, 230, 230, 240, 255, 265, 
-298, 180, 180, 187, 189, 189, 206, 228, 242, 245, 255, 281, 282, 
-285, 297, 304, 180, 180, 185, 190, 200, 240, 320, 186, 200, 210, 
-260, 302, 180, 195, 247, 251, 254, 263, 278, 296, 310, 318, 426, 
-180, 180, 182, 193, 201, 204, 247, 301, 317, 182, 270, 273, 285, 
-182, 200, 208, 212, 213, 216, 229, 231, 243, 260, 345, 183, 207, 
-215, 337, 180, 212, 180, 220, 265, 290, 199, 185, 263, 180, 180, 
-182, 183, 185, 185, 190, 190, 211, 214, 232, 232, 234, 247, 249, 
-251, 263, 309, 186, 196, 201, 241, 256, 290, 294, 331, 185, 180, 
-182, 203, 203, 208, 211, 223, 223, 226, 233, 234, 244, 254, 190, 
-190, 210, 210, 226, 232, 430, 182, 185, 274, 180, 180, 195, 220, 
-230, 250, 265, 300, 300, 320, 325, 350, 245, 254, 300, 303, 342, 
-560, 182, 185, 192, 195, 199, 205, 217, 223, 224, 227, 230, 240, 
-245, 246, 258, 265, 273, 285, 295, 305, 312, 330, 336, 343, 193, 
-198, 200, 225, 228, 238, 244, 284, 290, 297, 302, 182, 186, 189, 
-194, 233, 250, 251, 294, 307, 335, 180, 182, 202, 217, 470, 180, 
-187, 198, 239, 240, 274, 331, 335, 340, 359, 360, 365, 365, 367, 
-182, 216, 332, 215, 268, 365, 435, 181, 189, 208, 212, 334, 191, 
-201, 209, 211, 250, 394, 425, 457, 488, 498, 188, 189, 190, 200, 
-215, 220, 228, 314, 325, 335, 355, 378, 420, 488, 185, 185, 195, 
-204, 208, 210, 220, 220, 225, 225, 230, 245, 342, 355, 390, 432, 
-478, 481, 510, 181, 184, 195, 225, 225, 226, 235, 242, 244, 338, 
-342, 388, 540, 193, 206, 214, 215, 296, 310, 460, 181, 216, 331, 
-333, 445, 500, 580, 185, 186, 212, 222, 232, 246, 272, 340, 343, 
-348, 372, 385, 395, 402, 435, 445, 477, 518, 181, 182, 185, 185, 
-192, 195, 196, 198, 202, 213, 220, 225, 227, 230, 232, 232, 291, 
-294, 314, 325, 330, 338, 340, 360, 490, 181, 181, 181, 182, 184, 
-194, 197, 207, 215, 220, 226, 230, 230, 309, 314, 338, 395, 477, 
-180, 182, 182, 182, 185, 185, 190, 193, 196, 197, 198, 199, 206, 
-207, 221, 222, 222, 223, 225, 225, 226, 232, 246, 252, 312, 181, 
-181, 185, 185, 187, 201, 205, 210, 215, 216, 225, 181, 182, 182, 
-193, 193, 198, 201, 201, 205, 206, 208, 212, 218, 230, 275, 325, 
-335, 336, 339, 368, 432, 436, 503, 535, 195, 196, 198, 208, 210, 
-210, 212, 217, 365, 364, 376, 463, 586, 600, 613, 195, 225, 460, 
-460, 480, 555, 560, 180, 181, 184, 191, 195, 196, 197, 208, 447, 
-451, 489, 181, 181, 181, 182, 182, 193, 194, 202, 202, 203, 205, 
-210, 220, 228, 228, 243, 245, 248, 450, 181, 181, 186, 186, 188, 
-196, 196, 197, 198, 200, 202, 205, 211, 211, 212, 215, 221, 225, 
-226, 227, 230, 235, 243, 281, 336, 498, 195, 200, 214, 203, 207, 
-218, 223, 236, 190, 198, 200, 200, 205, 208, 210, 210, 215, 216, 
-225, 225, 227, 230, 237, 240, 248, 310, 315, 315, 370, 370, 390, 
-405, 420, 420, 478, 499, 212, 254, 222, 300, 522, 185, 192, 193, 
-215, 230, 332, 393, 560, 582, 582, 181, 181, 182, 189, 193, 195, 
-196, 214, 215, 362, 181, 187, 201, 210, 211, 230, 231, 239, 240, 
-246, 258, 339, 370, 388, 419, 471, 556, 570, 183, 190, 190, 190, 
-196, 210, 210, 210, 211, 268, 328, 331, 495, 181, 181, 185, 198, 
-198, 205, 210, 215, 215, 225, 227, 228, 230, 230, 235, 245, 310, 
-513, 186, 193, 194, 196, 196, 203, 205, 210, 210, 212, 214, 215, 
-221, 224, 227, 228, 248, 254, 310, 335, 347, 380, 396, 520, 202, 
-210, 212, 217, 228, 240, 247, 259, 285, 293, 312, 315, 325, 352, 
-363, 371, 382, 427, 453, 510, 192, 217, 219, 243, 369, 374, 360, 
-382, 202, 250, 335, 360, 370, 401, 402, 450, 580, 180, 180, 181, 
-182, 182, 182, 182, 183, 184, 184, 187, 188, 188, 190, 192, 196, 
-196, 198, 200, 200, 202, 203, 205, 210, 215, 220, 220, 230, 245, 
-360, 480, 185, 195, 240, 240, 245, 335, 423, 432, 443, 482, 494, 
-506, 510, 190, 198, 200, 215, 228, 230, 232, 390, 181, 182, 185, 
-185, 186, 187, 188, 190, 190, 190, 191, 192, 195, 196, 205, 217, 
-218, 222, 222, 225, 227, 228, 229, 235, 239, 250, 395, 409, 410, 
-190, 193, 217, 225, 378, 410, 181, 185, 185, 189, 192, 194, 195, 
-201, 210, 210, 212, 219, 220, 222, 230, 340, 180, 186, 193, 199, 
-225, 260, 181, 182, 183, 183, 186, 188, 189, 196, 197, 198, 207, 
-214, 216, 260, 350, 370, 370, 404, 437, 503, 195, 195, 195, 195, 
-200, 200, 210, 210, 215, 230, 230, 235, 245, 323, 325, 330, 335, 
-345, 395, 495, 500, 560, 182, 200, 220, 223, 186, 187, 193, 193, 
-203, 206, 208, 210, 214, 216, 226, 255, 195, 181, 185, 186, 186, 
-188, 192, 193, 193, 194, 197, 202, 212, 214, 214, 216, 218, 219, 
-220, 222, 223, 225, 227, 229, 309, 313, 334, 343, 419, 181, 181, 
-193, 194, 198, 190, 200, 200, 220, 240, 250, 320, 330, 380, 470, 
-500, 181, 189, 190, 199, 200, 202, 215, 216, 219, 239, 325, 332, 
-333, 356, 369, 376, 379, 440, 452, 525, 200, 202, 204, 204, 205, 
-219, 220, 304, 316, 320, 324, 333, 340, 340, 342, 342, 344, 365, 
-453, 466, 506, 181, 182, 185, 196, 197, 198, 199, 212, 242, 327, 
-335, 342, 402, 403, 431, 185, 195, 195, 195, 195, 200, 200, 205, 
-215, 220, 225, 225, 235, 290, 308, 330, 355, 400, 420, 430, 450, 
-180, 182, 191, 191, 193, 194, 195, 195, 195, 210, 212, 213, 225, 
-227, 230, 298, 311, 314, 332, 335, 350, 375, 396, 413, 417, 460, 
-475, 510, 180, 185, 186, 186, 190, 195, 203, 207, 210, 210, 218, 
-219, 225, 226, 326, 344, 345, 410, 420, 465, 190, 210, 220, 272, 
-272, 272, 272, 272, 350, 430, 435, 465, 486, 195, 345, 402, 414, 
-445, 182, 208, 213, 214, 221, 226, 415, 180, 182, 182, 183, 185, 
-190, 195, 205, 215, 220, 225, 225, 235, 250, 290, 310, 331, 335, 
-375, 485, 189, 200, 210, 216, 222, 226, 321, 490, 180, 183, 186, 
-200, 202, 206, 214, 222, 255, 316, 385, 474, 181, 181, 183, 183, 
-184, 185, 186, 187, 188, 189, 191, 192, 195, 199, 209, 210, 210, 
-210, 213, 215, 419, 185, 185, 190, 195, 198, 200, 204, 205, 205, 
-208, 208, 215, 222, 314, 445, 180, 181, 185, 185, 186, 186, 190, 
-194, 194, 196, 201, 207, 218, 220, 222, 233, 235, 305, 325, 325, 
-360, 390, 180, 187, 191, 208, 214, 218, 223, 227, 243, 268, 302, 
-337, 365, 377, 380, 386, 415, 420, 420, 422, 475, 480, 518, 540, 
-185, 190, 200, 207, 208, 212, 215, 222, 225, 230, 235, 344, 360, 
-370, 380, 390, 392, 485, 188, 189, 195, 196, 215, 217, 223, 227, 
-352, 424, 180, 181, 182, 185, 186, 186, 191, 192, 193, 194, 195, 
-200, 200, 200, 208, 210, 210, 218, 220, 222, 233, 245, 181, 202, 
-325, 380, 181, 181, 186, 189, 189, 189, 191, 194, 195, 195, 197, 
-197, 199, 204, 206, 206, 208, 209, 209, 210, 210, 214, 215, 216, 
-235, 347, 389, 420, 437, 491, 181, 182, 183, 184, 185, 186, 186, 
-191, 192, 193, 194, 198, 200, 202, 203, 205, 208, 212, 228, 235, 
-294, 180, 215, 293, 190, 214, 245, 305, 309, 343, 358, 363, 433, 
-437, 181, 181, 183, 185, 185, 190, 195, 197, 202, 203, 215, 215, 
-232, 315, 185, 465, 475, 190, 190, 190, 195, 205, 210, 210, 210, 
-215, 225, 245, 245, 250, 350, 390, 501, 182, 183, 188, 188, 189, 
-192, 193, 195, 200, 202, 202, 205, 207, 207, 217, 217, 221, 222, 
-223, 235, 318, 332, 335, 340, 370, 413, 446, 450, 475, 515, 185, 
-192, 193, 195, 195, 195, 195, 205, 205, 210, 210, 210, 210, 212, 
-213, 214, 218, 218, 228, 259, 458, 180, 195, 205, 205, 230, 305, 
-320, 325, 330, 390, 425, 490, 186, 189, 194, 202, 205, 224, 228, 
-180, 181, 181, 182, 185, 185, 195, 197, 203, 221, 223, 305, 181, 
-181, 185, 186, 188, 192, 192, 193, 195, 202, 205, 208, 212, 223, 
-244, 324, 335, 335, 356, 375, 381, 388, 413, 424, 180, 181, 184, 
-188, 190, 210, 215, 226, 323, 180, 183, 200, 204, 209, 215, 311, 
-326, 391, 428, 180, 180, 180, 183, 185, 185, 189, 192, 193, 195, 
-197, 200, 201, 202, 202, 203, 205, 208, 210, 214, 218, 220, 221, 
-225, 229, 251, 350, 440, 198, 215, 227, 246, 307, 334, 427, 430, 
-432, 445, 465, 492, 181, 181, 182, 184, 185, 186, 190, 190, 192, 
-193, 198, 199, 200, 201, 209, 218, 221, 224, 224, 227, 232, 236, 
-321, 338, 339, 345, 351, 353, 430, 180, 181, 184, 185, 190, 194, 
-195, 211, 213, 222, 230, 230, 372, 460, 475, 180, 181, 185, 200, 
-205, 215, 370, 234, 532, 624, 528, 312, 202, 195, 253, 615, 235, 
-210, 572, 215, 194, 203, 203, 200, 198, 495, 520, 205, 220, 220, 
-486, 190, 225, 219, 391, 376, 425, 220, 580, 510, 225, 210, 193, 
-395, 580, 420, 560, 425, 440, 284, 429, 530, 688, 197, 224, 225, 
-510, 487, 379, 568, 462, 572, 206, 186, 216, 208, 200, 396, 194, 
-503, 237, 231, 201, 183, 388, 438, 417, 413, 450, 592, 185, 228, 
-478, 205, 205, 437, 480, 184, 225, 203, 485, 574, 496, 424, 544, 
-335, 405, 514, 207, 408, 230, 186, 216, 202, 467, 193, 187, 435, 
-508, 187, 590, 198, 222, 571, 285, 568, 228, 285, 435, 499, 399, 
-508, 390, 209, 225, 450, 541, 362, 415, 238, 610, 214, 500, 388, 
-215, 356, 432, 518, 412, 689, 212, 205, 202, 485, 610, 195, 220, 
-627, 549, 525, 273, 190, 197, 242, 193, 215, 484, 436, 442, 431, 
-211, 267, 365, 250, 186, 211, 430, 365, 186, 208, 189, 208, 389, 
-211, 241, 196, 504, 421, 242, 320, 402, 501, 211, 195, 652, 550, 
-198, 202, 215, 198, 568, 210, 585, 225, 570, 230, 575, 200, 191, 
-615, 223, 418, 210, 521, 380, 560, 224, 620, 232, 236, 180, 230, 
-220, 238, 194, 183, 222, 181, 182, 552, 191, 208, 430, 225, 226, 
-206, 212, 197, 212, 205, 195, 400, 375, 235, 186, 535, 391, 385, 
-375, 213, 212, 410, 211, 404, 227, 213, 194, 221, 400, 575, 180, 
-200, 205, 585, 391, 486, 250, 222, 213, 365, 206, 221, 206, 207, 
-180, 458, 216, 457, 211, 226, 211, 197, 443, 188, 215, 211, 185, 
-203, 590, 229, 439, 423, 291, 565, 470, 312, 455, 441, 441, 254, 
-406, 340, 498, 498, 475, 574, 435, 205, 425, 425, 486, 443, 482, 
-505, 495, 470, 545, 385, 444, 477, 265, 391, 457, 429, 430, 450, 
-480, 450, 441, 270, 545, 505, 450, 481, 524, 480, 293, 439, 252, 
-471, 467, 476, 511, 473, 535, 462, 604, 426, 443, 421, 470, 515, 
-501, 476, 487, 493, 580, 490, 410, 383, 510, 470, 510, 455, 234, 
-492, 490, 572, 400, 490, 435, 490, 466, 195, 184, 431, 235, 415, 
-444, 405, 430, 500, 465, 548, 461, 475, 427, 400, 510, 328, 231, 
-461, 430, 505, 263, 411, 450, 490, 455, 242, 395, 530, 444, 550, 
-440, 565, 490, 565, 490, 525, 475, 517, 510, 480, 470, 510, 470, 
-474, 399, 292, 533, 406, 455, 512, 287, 530, 411, 450, 395, 477, 
-493, 396, 414, 518, 520, 590, 594, 439, 407, 417, 361, 528, 498, 
-390, 470, 432, 505, 475, 445, 510, 410, 375, 435, 190, 480, 475, 
-204, 414, 442, 441, 276, 347, 450, 340, 260, 431, 467, 457, 414, 
-412, 535, 563, 454, 393, 447, 189, 461, 428, 425, 439, 314, 420, 
-290, 455, 400, 405, 372, 430, 538, 530, 274), water = structure(c(1, 
-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-1, 1, 1, 1, 1, 1, 1, 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, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
-3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
-3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
-3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
-3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
-3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
-3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
-3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
-3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
-3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
-3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
-3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
-3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
-3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
-3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
-3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
-3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
-3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
-3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
-3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
-3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
-3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
-3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
-3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
-3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
-3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
-3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
-3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
-3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
-3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
-3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
-3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
-3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
-3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
-3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
-3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
-3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
-3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
-3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
-3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
-3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
-3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
-3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
-3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
-3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
-3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
-3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
-3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
-3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
-3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
-3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
-3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
-3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
-3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
-3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
-3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
-3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
-3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
-3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
-3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
-3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
-3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
-3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 
-4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 
-4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 
-4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 
-4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 
-4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 
-4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 
-4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 
-4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 
-4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 
-4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 
-4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 
-4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 
-4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 
-5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 
-5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 
-5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 
-5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 
-5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 
-5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 
-5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 
-5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 
-5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 
-5, 5, 5), .Label = c("Waihou", "Waimakariri", "Whanganui", "Otamangakau", 
-"Rotoaira"), class = "factor"), session = c(1, 1, 1, 1, 1, 1, 
-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 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, 2, 2, 2, 2, 
-2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-2, 2, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 
-4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 
-4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 
-4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 
-4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 
-4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 
-4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 
-5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 
-5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 
-5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 
-5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 
-6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 
-6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 
-6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-1, 1, 1, 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, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-2, 2, 2, 2, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 
-4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 
-4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 
-4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 
-4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 
-4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 
-4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 
-5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 
-5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 
-5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 
-5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 
-5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 
-6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 
-6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 
-6, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 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, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 
-3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
-3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
-3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
-3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
-3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
-3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
-3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
-3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
-3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 
-5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 
-5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 
-5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 
-5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 
-6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 
-6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 
-6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 
-6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 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, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
-3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
-3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
-3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
-3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
-3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 5, 5, 5, 
-5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 
-5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 
-5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 
-6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 
-6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 
-6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 
-6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 1, 
-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 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, 2, 2, 2, 2, 2, 2, 2, 2, 
-2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
-3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
-3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
-3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
-3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
-3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 
-4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 
-4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 
-4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 
-4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 
-4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 
-5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 
-5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 
-5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 
-5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 
-5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 1, 
-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 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, 2, 2, 2, 2, 2, 2, 2, 
-2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
-3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
-3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
-3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
-3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
-3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
-3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
-3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 
-4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 
-4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 
-4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 
-4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 
-4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 
-4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 
-4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 
-4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 
-5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 
-5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 
-5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 
-5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 
-5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 
-5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 
-5, 5, 5, 5, 5, 5, 5, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-1, 1, 1, 1, 1, 1, 1, 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, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
-3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
-3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
-3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 
-4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 
-4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 
-5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 
-5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 
-6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 
-6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 
-6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 
-6, 6, 6, 6, 6, 6, 6, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 
-3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
-3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
-3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 
-4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 
-4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 
-5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 
-5, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 
-6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6), sector = c(4, 
-4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 
-4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 
-4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 
-4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 
-4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 
-4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 
-4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 
-4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 
-4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 
-4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 
-4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 
-4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 
-4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 
-4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 
-4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 
-4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 
-4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 
-4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 
-4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 
-4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 
-4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 
-4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 
-4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 
-4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 
-4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 
-4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 
-4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 
-4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 
-4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 
-4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 
-4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 
-4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 
-4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 
-4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 
-4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 
-4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 
-4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 
-4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 
-4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 
-4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 
-4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 
-4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 
-4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 
-4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 
-4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 
-4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 
-4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 
-4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 
-4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 
-4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 
-4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 
-4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 
-4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 
-4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 
-4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 
-4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 
-4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 
-4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 
-5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 
-5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 
-5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 
-5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 
-5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 
-5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 
-5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 
-5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 
-5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 
-5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 
-5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 
-5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 
-5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 
-5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 
-5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 
-5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 
-5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 
-5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 
-5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 
-5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 
-5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 
-5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 
-5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 
-5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 
-5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 
-5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 
-5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 
-5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 
-5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 
-5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 
-5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 
-5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 
-5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 
-5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 
-5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 
-5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 
-5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 
-5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 
-5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 
-5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 
-5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 
-5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 
-5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 
-5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 
-5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 
-5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 
-5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 
-5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 
-5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 
-5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 
-5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 
-5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 
-5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 
-5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 
-5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 
-5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 
-5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 
-5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 
-5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 
-5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 
-5, 5, 5, 5, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-1, 1, 1, 1, 1, 1, 1, 1, 1, 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, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
-3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
-3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
-3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
-3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
-3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
-3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
-3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
-3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
-3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
-3, 3, 3), beatboat = c(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, 
-2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 
-4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 
-5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 
-7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 
-8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 
-8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 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, 3, 3, 
-3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
-3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 
-4, 4, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 
-7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 
-9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 1, 1, 1, 1, 1, 1, 1, 
-1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 
-3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 
-5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 
-5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 
-9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 1, 2, 3, 3, 3, 3, 3, 3, 
-3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 
-4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 
-5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 
-8, 8, 8, 8, 8, 9, 9, 1, 1, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 
-3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 
-6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 9, 9, 9, 9, 9, 9, 9, 
-9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 
-10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 
-10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 
-11, 11, 11, 11, 11, 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 
-12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 
-12, 12, 12, 12, 13, 13, 13, 13, 14, 14, 14, 14, 14, 14, 14, 14, 
-14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 15, 15, 15, 15, 
-15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 16, 16, 16, 16, 16, 
-16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 
-16, 16, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-17, 17, 17, 17, 17, 17, 17, 17, 17, 18, 18, 18, 18, 18, 18, 18, 
-18, 18, 18, 18, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 
-19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 10, 
-10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 
-10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 
-11, 11, 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 
-12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 
-12, 12, 12, 13, 13, 13, 13, 13, 13, 14, 14, 14, 14, 14, 14, 14, 
-14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 
-15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 16, 16, 16, 16, 16, 
-16, 16, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 18, 
-18, 18, 18, 18, 18, 18, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 
-10, 10, 10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 12, 12, 12, 12, 
-12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 
-12, 12, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 
-13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 14, 14, 14, 14, 14, 
-14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 
-14, 14, 14, 14, 14, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 
-15, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 17, 17, 17, 18, 
-18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 19, 19, 19, 19, 10, 10, 
-10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 
-12, 12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 
-13, 13, 13, 13, 13, 13, 13, 13, 13, 14, 14, 14, 14, 14, 14, 14, 
-14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 
-14, 15, 15, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 
-17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-18, 18, 18, 18, 18, 19, 19, 19, 19, 10, 10, 11, 11, 11, 11, 11, 
-11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 13, 13, 
-13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 15, 16, 16, 16, 16, 16, 
-16, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-17, 18, 18, 18, 18, 18, 19, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-1, 1, 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, 3, 
-3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 
-4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 
-4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 
-5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 
-6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 
-6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 9, 
-9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 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, 2, 2, 2, 2, 2, 2, 2, 
-2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 
-4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 
-6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 
-6, 6, 6, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 
-9, 9, 1, 1, 1, 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, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 
-3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 
-4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 
-5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 
-6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 
-7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 
-9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 1, 1, 1, 1, 1, 
-1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 
-4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 
-6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 7, 8, 8, 
-8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 
-9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, 4, 4, 4, 4, 4, 4, 4, 
-4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 
-5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 10, 10, 10, 10, 
-10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 
-11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 
-12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 
-12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 
-13, 13, 13, 13, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 
-15, 15, 15, 15, 15, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 
-16, 16, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-17, 17, 17, 17, 17, 17, 17, 17, 18, 18, 18, 18, 18, 18, 18, 18, 
-18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 19, 19, 
-19, 19, 19, 19, 19, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 
-10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 
-10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 
-11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 12, 12, 12, 12, 12, 
-12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 
-12, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 
-13, 13, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 15, 15, 15, 15, 
-15, 15, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 
-16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-17, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 19, 19, 19, 19, 19, 
-19, 19, 19, 19, 19, 19, 19, 19, 19, 10, 10, 10, 10, 10, 10, 10, 
-10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 
-12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 
-12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 13, 13, 
-13, 13, 13, 13, 13, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 
-14, 14, 14, 14, 15, 15, 15, 15, 15, 15, 15, 16, 16, 16, 16, 16, 
-17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 18, 18, 18, 18, 18, 
-18, 18, 18, 18, 19, 19, 19, 19, 10, 10, 10, 10, 10, 10, 10, 10, 
-10, 10, 10, 11, 11, 11, 11, 12, 12, 13, 13, 13, 13, 14, 15, 15, 
-16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 
-16, 16, 17, 17, 17, 17, 17, 17, 17, 17, 18, 10, 10, 10, 10, 10, 
-10, 10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 11, 12, 
-12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 14, 14, 
-14, 14, 14, 14, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 
-15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 16, 16, 16, 16, 
-16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-17, 18, 18, 18, 18, 18, 19, 19, 19, 19, 19, 19, 19, 1, 1, 1, 
-1, 1, 1, 1, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 
-5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 7, 
-7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 
-8, 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 1, 2, 2, 2, 2, 
-2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 
-4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 
-4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 
-6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 
-6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 
-8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 
-9, 9, 9, 9, 9, 9, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 4, 4, 
-4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 
-5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 
-6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 7, 7, 8, 8, 8, 8, 8, 9, 
-9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 
-9, 9, 9, 9, 9, 9, 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
-4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 
-5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 
-7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 
-8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 9, 
-9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 1, 1, 
-1, 1, 1, 1, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 
-4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 
-5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 
-7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 
-8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 10, 10, 
-10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 11, 11, 
-11, 11, 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 
-12, 12, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 
-13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 14, 14, 
-14, 14, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 16, 17, 
-17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 18, 18, 18, 18, 18, 
-19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 10, 10, 10, 10, 10, 
-10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 11, 
-11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 
-11, 11, 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 
-12, 12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 
-13, 13, 13, 13, 13, 13, 13, 13, 14, 14, 14, 14, 14, 14, 14, 14, 
-14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 
-14, 14, 14, 14, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 
-15, 15, 15, 15, 15, 15, 15, 15, 16, 16, 16, 16, 16, 16, 16, 16, 
-16, 16, 16, 16, 16, 17, 17, 17, 17, 17, 18, 18, 18, 18, 18, 18, 
-18, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 
-19, 19, 19, 19, 19, 10, 10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 
-11, 11, 11, 11, 11, 11, 11, 11, 11, 12, 12, 12, 12, 12, 12, 12, 
-12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 13, 13, 
-13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 14, 14, 14, 
-14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 
-14, 14, 14, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 
-15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 16, 16, 16, 16, 16, 
-16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 
-17, 17, 17, 17, 17, 17, 17, 18, 18, 18, 18, 18, 18, 18, 18, 18, 
-18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 19, 19, 19, 
-19, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 
-10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 11, 
-11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 
-11, 11, 11, 11, 12, 12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 
-13, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 
-15, 15, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 
-16, 16, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 
-18, 18, 18, 18, 18, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 
-19, 10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 11, 11, 
-11, 11, 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 
-12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13, 
-13, 13, 13, 13, 13, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 
-15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 
-15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 16, 16, 16, 16, 16, 
-16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-17, 17, 17, 17, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 
-18, 18, 18, 19, 19, 19, 19, 19, 19, 19, 1, 1, 3, 3, 5, 5, 6, 
-6, 7, 8, 8, 8, 8, 9, 10, 11, 11, 12, 12, 12, 12, 12, 13, 13, 
-13, 13, 13, 14, 14, 14, 14, 15, 15, 15, 15, 15, 15, 16, 16, 16, 
-17, 17, 19, 19, 19, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 
-3, 3, 3, 3, 3, 4, 4, 4, 5, 5, 5, 5, 5, 6, 6, 7, 7, 9, 9, 10, 
-10, 11, 11, 12, 12, 13, 13, 13, 13, 14, 14, 14, 15, 15, 15, 15, 
-15, 15, 15, 15, 16, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 1, 
-2, 3, 3, 3, 3, 3, 3, 4, 4, 5, 5, 5, 5, 5, 5, 6, 7, 8, 8, 9, 9, 
-9, 9, 11, 11, 11, 11, 11, 12, 13, 13, 15, 15, 16, 16, 16, 16, 
-16, 17, 18, 18, 18, 18, 18, 18, 1, 1, 1, 2, 2, 3, 3, 3, 3, 3, 
-4, 4, 4, 4, 5, 5, 5, 5, 7, 8, 8, 8, 8, 9, 9, 9, 9, 10, 10, 11, 
-11, 11, 12, 13, 13, 13, 13, 14, 14, 14, 15, 15, 15, 16, 16, 17, 
-17, 1, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
-4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 7, 7, 7, 7, 7, 7, 8, 9, 10, 10, 
-11, 11, 11, 12, 13, 13, 13, 13, 13, 13, 13, 14, 14, 14, 14, 14, 
-14, 15, 15, 15, 16, 16, 17, 17, 17, 17, 18, 19, 19, 19, 19, 1, 
-1, 2, 3, 3, 5, 5, 8, 8, 8, 9, 10, 11, 11, 12, 12, 12, 13, 13, 
-14, 14, 14, 15, 15, 15, 15, 15, 16, 17, 17, 1, 1, 1, 2, 3, 3, 
-4, 5, 5, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 8, 9, 10, 10, 
-10, 11, 11, 12, 12, 13, 14, 14, 14, 14, 14, 14, 15, 15, 17, 17, 
-17, 17, 17, 17, 18, 18, 19, 19, 19, 19, 1, 2, 2, 2, 3, 3, 3, 
-3, 4, 4, 5, 5, 5, 8, 8, 9, 9, 9, 10, 11, 11, 11, 12, 12, 13, 
-13, 14, 14, 15, 16, 16, 16, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-17, 18, 18, 18, 19, 19, 1, 1, 1, 3, 3, 3, 4, 4, 5, 6, 7, 7, 9, 
-9, 9, 9, 9, 9, 10, 11, 12, 12, 13, 14, 15, 15, 16, 17, 17, 17, 
-17, 17, 17, 17, 18, 18, 18, 19, 19, 19, 19, 2, 2, 4, 5, 5, 7, 
-7, 8, 8, 8, 8, 9, 9, 9, 9, 10, 13, 14, 14, 14, 14, 15, 15, 15, 
-15, 17, 18, 18, 19, 19, 19), comid = c(42, 42, 42, 42, 42, 42, 
-42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 26, 26, 
-26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 
-26, 26, 74, 74, 74, 74, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
-3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 79, 
-79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 90, 90, 90, 90, 
-90, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 
-24, 24, 24, 24, 24, 24, 24, 24, 55, 55, 55, 55, 55, 55, 55, 55, 
-55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 
-55, 55, 55, 55, 88, 88, 88, 88, 88, 88, 88, 88, 88, 61, 61, 61, 
-61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 30, 
-30, 30, 30, 30, 30, 30, 30, 30, 29, 29, 29, 29, 29, 29, 29, 29, 
-29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 
-35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 
-35, 35, 35, 35, 35, 35, 92, 92, 92, 92, 73, 73, 73, 73, 73, 73, 
-73, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 31, 31, 31, 31, 
-31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 50, 50, 50, 50, 
-50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 69, 69, 69, 69, 
-69, 69, 69, 69, 69, 69, 69, 69, 69, 54, 54, 54, 54, 54, 54, 54, 
-54, 54, 51, 51, 51, 51, 51, 51, 51, 51, 51, 82, 82, 82, 82, 82, 
-82, 82, 82, 82, 82, 82, 82, 82, 10, 10, 10, 10, 10, 10, 10, 10, 
-10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 
-10, 10, 10, 10, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 40, 40, 
-40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 
-40, 89, 89, 89, 89, 89, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-2, 2, 2, 2, 2, 2, 95, 94, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 
-5, 5, 5, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 
-33, 33, 33, 33, 33, 33, 33, 20, 20, 20, 20, 20, 20, 20, 20, 20, 
-20, 20, 20, 20, 20, 20, 20, 20, 65, 65, 65, 65, 65, 65, 65, 56, 
-56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 
-56, 56, 56, 56, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 
-52, 52, 52, 77, 77, 91, 91, 17, 17, 17, 17, 17, 17, 17, 28, 28, 
-28, 28, 28, 28, 28, 28, 28, 4, 4, 4, 4, 4, 4, 4, 85, 85, 85, 
-85, 8, 8, 8, 8, 8, 8, 8, 8, 22, 22, 22, 22, 22, 22, 22, 22, 22, 
-22, 62, 62, 39, 39, 39, 39, 39, 39, 39, 39, 39, 19, 19, 19, 19, 
-19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 
-19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 63, 
-63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 
-63, 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, 25, 25, 25, 25, 98, 98, 
-98, 98, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 
-53, 53, 53, 53, 53, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 
-13, 13, 13, 13, 13, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 
-27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 46, 46, 46, 46, 
-46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 
-46, 46, 46, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 45, 45, 
-45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 
-45, 45, 45, 45, 45, 45, 45, 45, 45, 47, 47, 47, 47, 47, 47, 47, 
-47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 38, 38, 38, 38, 38, 
-38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 9, 9, 
-9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 
-9, 9, 9, 9, 9, 9, 9, 9, 81, 81, 81, 81, 81, 81, 32, 32, 32, 32, 
-32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 
-32, 32, 32, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 68, 68, 
-68, 68, 68, 68, 68, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 
-58, 58, 60, 60, 60, 60, 60, 60, 60, 21, 21, 21, 21, 21, 21, 21, 
-21, 21, 21, 64, 64, 64, 64, 64, 64, 64, 64, 64, 96, 96, 96, 7, 
-7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-7, 7, 7, 7, 7, 7, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 
-36, 36, 36, 36, 36, 36, 36, 36, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 
-6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 18, 18, 18, 18, 
-18, 18, 18, 18, 18, 18, 18, 18, 59, 59, 59, 59, 59, 59, 59, 84, 
-84, 84, 84, 84, 84, 84, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 
-11, 67, 67, 67, 67, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 
-16, 66, 66, 66, 66, 66, 66, 78, 78, 78, 14, 14, 14, 14, 14, 14, 
-14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 
-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-1, 1, 1, 43, 43, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 
-15, 15, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 
-44, 44, 48, 48, 48, 48, 48, 86, 86, 86, 86, 76, 76, 83, 83, 83, 
-83, 83, 83, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 
-34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 97, 71, 71, 71, 
-71, 71, 71, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 
-37, 37, 37, 87, 87, 87, 87, 87, 49, 50, 50, 50, 50, 50, 50, 50, 
-50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 
-50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 92, 92, 
-92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 68, 68, 68, 
-68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 21, 21, 21, 
-21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 
-21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 31, 
-31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 
-31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 29, 29, 29, 29, 
-29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 
-29, 29, 29, 29, 29, 29, 29, 29, 23, 23, 23, 23, 23, 23, 23, 23, 
-23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 
-30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 
-58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 
-58, 58, 58, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 
-53, 53, 53, 53, 53, 53, 53, 53, 53, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
-3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 90, 
-90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 42, 42, 42, 42, 42, 
-42, 42, 42, 42, 42, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 63, 
-63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 
-63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 98, 98, 70, 70, 70, 
-70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 74, 74, 74, 74, 51, 
-51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 
-51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 18, 18, 18, 18, 18, 18, 
-18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 
-18, 18, 18, 18, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 
-59, 59, 59, 59, 59, 59, 59, 59, 59, 10, 10, 10, 10, 10, 10, 10, 
-10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 
-10, 10, 10, 10, 10, 89, 89, 89, 89, 89, 89, 89, 11, 11, 11, 11, 
-11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 
-11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 69, 69, 69, 69, 69, 
-69, 69, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 
-84, 84, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 
-54, 54, 54, 54, 54, 71, 71, 71, 71, 71, 71, 71, 71, 71, 17, 17, 
-17, 17, 17, 17, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 22, 22, 
-22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 
-91, 91, 91, 91, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 
-12, 12, 12, 12, 12, 75, 75, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 39, 
-39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 56, 56, 
-56, 56, 56, 56, 56, 56, 56, 56, 99, 65, 14, 14, 14, 14, 14, 14, 
-14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 52, 
-52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 95, 95, 95, 95, 95, 95, 
-95, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 15, 15, 
-15, 15, 15, 15, 15, 15, 15, 15, 77, 77, 60, 60, 60, 60, 60, 60, 
-60, 60, 60, 60, 60, 60, 60, 60, 32, 32, 32, 32, 32, 32, 32, 32, 
-32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 38, 38, 
-38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 
-38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 35, 35, 
-35, 35, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 73, 73, 
-73, 73, 73, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 
-41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 
-41, 41, 41, 41, 41, 41, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 
-9, 9, 9, 9, 9, 9, 9, 9, 9, 47, 47, 47, 47, 47, 47, 47, 45, 45, 
-45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 
-45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 
-45, 45, 45, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 
-27, 27, 27, 27, 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, 25, 25, 25, 
-88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 55, 55, 55, 55, 55, 
-55, 55, 55, 55, 46, 46, 46, 46, 46, 46, 46, 13, 13, 13, 13, 13, 
-13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 26, 
-26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 24, 24, 24, 24, 24, 24, 
-24, 24, 24, 24, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 
-19, 19, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-96, 96, 96, 96, 96, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 
-6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 67, 67, 67, 67, 
-67, 67, 67, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 64, 
-64, 64, 64, 64, 64, 64, 82, 82, 82, 82, 82, 36, 36, 36, 36, 36, 
-36, 36, 36, 36, 36, 36, 40, 40, 40, 40, 40, 40, 40, 40, 40, 57, 
-57, 57, 57, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 85, 85, 
-85, 85, 76, 76, 37, 37, 37, 37, 62, 97, 97, 28, 28, 28, 28, 28, 
-28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 8, 8, 8, 
-8, 8, 8, 8, 8, 49, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 
-16, 16, 94, 94, 94, 94, 94, 94, 94, 66, 66, 66, 33, 33, 33, 33, 
-33, 33, 33, 33, 33, 33, 33, 33, 86, 86, 86, 86, 86, 86, 1, 1, 
-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-1, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 43, 43, 43, 43, 43, 43, 43, 
-43, 43, 43, 48, 48, 48, 48, 48, 44, 44, 44, 44, 44, 44, 44, 75, 
-75, 75, 75, 75, 75, 75, 97, 97, 97, 85, 85, 85, 85, 83, 83, 83, 
-83, 83, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 8, 8, 8, 8, 8, 
-8, 8, 8, 8, 8, 8, 8, 8, 8, 22, 22, 22, 22, 22, 22, 22, 22, 22, 
-22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 39, 39, 39, 39, 39, 39, 
-39, 39, 39, 39, 39, 39, 39, 76, 76, 76, 76, 76, 76, 76, 96, 59, 
-59, 59, 59, 59, 59, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 
-11, 11, 11, 11, 11, 11, 11, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 10, 10, 10, 10, 10, 
-10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 67, 67, 67, 
-67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 
-67, 67, 67, 67, 67, 67, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 
-82, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 
-6, 6, 6, 6, 6, 64, 64, 64, 64, 64, 64, 64, 64, 64, 33, 33, 33, 
-33, 33, 33, 20, 20, 20, 20, 20, 20, 20, 52, 52, 52, 52, 52, 52, 
-52, 52, 52, 52, 52, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 
-65, 65, 65, 65, 65, 65, 65, 65, 15, 15, 15, 15, 15, 15, 15, 15, 
-15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 
-15, 15, 66, 66, 66, 77, 77, 77, 77, 77, 44, 44, 44, 44, 44, 44, 
-44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 
-44, 44, 44, 44, 44, 44, 79, 79, 63, 63, 63, 19, 19, 19, 19, 19, 
-19, 19, 19, 19, 19, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 55, 
-55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 
-55, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 53, 53, 
-53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 
-26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 
-26, 26, 26, 26, 26, 26, 26, 26, 42, 42, 42, 42, 42, 42, 42, 42, 
-42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 61, 61, 61, 61, 
-61, 61, 81, 81, 29, 29, 29, 29, 29, 29, 29, 29, 29, 38, 38, 38, 
-38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 
-38, 38, 38, 38, 38, 38, 41, 41, 41, 41, 41, 41, 23, 23, 23, 23, 
-23, 23, 23, 23, 23, 23, 23, 23, 23, 30, 30, 30, 30, 30, 30, 30, 
-30, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 
-35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 92, 92, 
-92, 92, 92, 92, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 
-71, 71, 71, 71, 62, 62, 62, 62, 62, 62, 17, 17, 17, 17, 17, 17, 
-17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 12, 12, 
-12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 
-12, 12, 12, 12, 91, 91, 91, 91, 49, 49, 49, 49, 49, 49, 49, 49, 
-49, 49, 49, 49, 87, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 
-4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 34, 34, 34, 34, 34, 
-28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 18, 18, 18, 18, 18, 
-18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 40, 
-40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 
-40, 40, 40, 40, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 
-54, 54, 54, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 
-51, 51, 51, 51, 51, 51, 51, 51, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 57, 57, 
-57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 
-57, 57, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 89, 
-89, 89, 89, 89, 69, 69, 69, 69, 69, 69, 69, 36, 36, 36, 36, 36, 
-36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 94, 
-94, 94, 94, 94, 94, 94, 94, 14, 14, 14, 14, 14, 14, 14, 14, 14, 
-14, 14, 14, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 
-56, 56, 56, 56, 56, 56, 56, 56, 43, 43, 43, 43, 43, 43, 43, 43, 
-43, 43, 43, 43, 43, 43, 43, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 
-5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 48, 48, 48, 48, 48, 
-48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 86, 86, 86, 
-86, 86, 86, 86, 86, 86, 86, 16, 16, 16, 16, 16, 16, 16, 16, 16, 
-16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 95, 95, 95, 
-95, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 
-24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 27, 
-27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 
-27, 27, 27, 27, 98, 98, 98, 70, 70, 70, 70, 70, 70, 70, 70, 70, 
-70, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 74, 
-74, 74, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 
-45, 45, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
-3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 13, 13, 13, 13, 13, 13, 13, 
-13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 25, 25, 
-25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 73, 73, 73, 73, 73, 73, 
-73, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 9, 9, 9, 
-9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 
-58, 58, 58, 58, 58, 58, 58, 58, 58, 50, 50, 50, 50, 50, 50, 50, 
-50, 50, 50, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 
-31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 60, 
-60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 21, 21, 21, 21, 21, 
-21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 
-21, 21, 21, 21, 21, 21, 21, 21, 32, 32, 32, 32, 32, 32, 32, 32, 
-32, 32, 32, 32, 32, 32, 32, 68, 68, 68, 68, 68, 68, 68, 66, 66, 
-16, 16, 78, 78, 77, 77, 33, 48, 48, 48, 48, 56, 65, 86, 86, 20, 
-20, 20, 20, 20, 1, 1, 1, 1, 1, 15, 15, 15, 15, 5, 5, 5, 5, 5, 
-5, 14, 14, 14, 52, 52, 43, 43, 43, 58, 58, 58, 58, 30, 30, 30, 
-30, 30, 30, 35, 35, 35, 35, 35, 35, 35, 35, 35, 31, 31, 31, 60, 
-60, 60, 60, 60, 38, 38, 81, 81, 32, 32, 68, 68, 21, 21, 29, 29, 
-47, 47, 47, 47, 61, 61, 61, 9, 9, 9, 9, 9, 9, 9, 9, 41, 41, 41, 
-41, 41, 73, 73, 73, 73, 23, 23, 75, 22, 62, 62, 62, 62, 62, 62, 
-39, 39, 8, 8, 8, 8, 8, 8, 93, 76, 87, 87, 4, 4, 4, 4, 80, 80, 
-80, 80, 80, 85, 17, 17, 12, 12, 37, 37, 37, 37, 37, 34, 49, 49, 
-49, 49, 49, 49, 3, 3, 3, 26, 26, 74, 74, 74, 74, 74, 42, 42, 
-42, 42, 13, 13, 13, 13, 88, 25, 25, 25, 25, 63, 63, 63, 63, 79, 
-79, 19, 19, 19, 27, 24, 24, 24, 24, 46, 46, 46, 72, 72, 72, 70, 
-70, 55, 55, 54, 84, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-7, 7, 7, 36, 36, 36, 36, 36, 36, 36, 10, 10, 10, 6, 6, 6, 6, 
-6, 6, 82, 69, 57, 57, 59, 59, 59, 96, 2, 2, 2, 2, 2, 2, 2, 18, 
-18, 18, 18, 18, 18, 67, 67, 67, 64, 64, 11, 11, 11, 11, 51, 89, 
-89, 89, 89, 43, 43, 48, 5, 5, 20, 20, 66, 66, 66, 1, 14, 15, 
-15, 78, 78, 78, 44, 44, 77, 77, 77, 16, 16, 16, 16, 16, 33, 65, 
-65, 34, 34, 34, 39, 12, 12, 85, 93, 93, 80, 80, 80, 4, 4, 4, 
-4, 4, 4, 4, 4, 4, 4, 91, 37, 49, 49, 49, 62, 62, 76, 76, 22, 
-17, 17, 17, 17, 17, 17, 87, 87, 28, 28, 28, 28, 28, 28, 75, 75, 
-8, 8, 8, 8, 50, 61, 61, 61, 30, 30, 30, 30, 32, 32, 81, 81, 81, 
-9, 9, 73, 73, 73, 60, 68, 68, 68, 47, 47, 29, 29, 92, 92, 35, 
-21, 21, 21, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 41, 41, 41, 
-31, 31, 10, 10, 10, 40, 40, 40, 57, 57, 6, 96, 69, 69, 64, 64, 
-64, 64, 64, 64, 36, 51, 7, 7, 67, 59, 18, 18, 82, 11, 11, 11, 
-11, 11, 11, 11, 54, 54, 54, 2, 2, 2, 2, 24, 24, 53, 46, 46, 19, 
-19, 13, 13, 13, 13, 27, 27, 27, 27, 90, 79, 3, 3, 3, 3, 26, 26, 
-26, 26, 42, 74, 74, 72, 72, 72), iname = c("BorisDzurek", "BorisDzurek", 
-"BorisDzurek", "BorisDzurek", "BorisDzurek", "BorisDzurek", "BorisDzurek", 
-"BorisDzurek", "BorisDzurek", "BorisDzurek", "BorisDzurek", "BorisDzurek", 
-"BorisDzurek", "BorisDzurek", "BorisDzurek", "BorisDzurek", "BorisDzurek", 
-"BorisDzurek", "BorisDzurek", "BorisDzurek", "JohnNishi", "JohnNishi", 
-"JohnNishi", "JohnNishi", "JohnNishi", "JohnNishi", "JohnNishi", 
-"JohnNishi", "JohnNishi", "JohnNishi", "JohnNishi", "JohnNishi", 
-"JohnNishi", "JohnNishi", "JohnNishi", "JohnNishi", "JohnNishi", 
-"JohnNishi", "JohnNishi", "JohnNishi", "MichaelHeckler", "MichaelHeckler", 
-"MichaelHeckler", "MichaelHeckler", "TomasStarychfojtu", "TomasStarychfojtu", 
-"TomasStarychfojtu", "TomasStarychfojtu", "TomasStarychfojtu", 
-"TomasStarychfojtu", "TomasStarychfojtu", "TomasStarychfojtu", 
-"TomasStarychfojtu", "TomasStarychfojtu", "TomasStarychfojtu", 
-"TomasStarychfojtu", "TomasStarychfojtu", "TomasStarychfojtu", 
-"TomasStarychfojtu", "TomasStarychfojtu", "TomasStarychfojtu", 
-"TomasStarychfojtu", "TomasStarychfojtu", "TomasStarychfojtu", 
-"TomasStarychfojtu", "TomasStarychfojtu", "TomasStarychfojtu", 
-"TomasStarychfojtu", "TomasStarychfojtu", "TomasStarychfojtu", 
-"TomasStarychfojtu", "TomasStarychfojtu", "TomasStarychfojtu", 
-"TomasStarychfojtu", "TomasStarychfojtu", "TomasStarychfojtu", 
-"BoskoBarisic", "BoskoBarisic", "BoskoBarisic", "BoskoBarisic", 
-"BoskoBarisic", "BoskoBarisic", "BoskoBarisic", "BoskoBarisic", 
-"BoskoBarisic", "BoskoBarisic", "BoskoBarisic", "BoskoBarisic", 
-"BoskoBarisic", "AndreSteenkamp", "AndreSteenkamp", "AndreSteenkamp", 
-"AndreSteenkamp", "AndreSteenkamp", "LanceEgan", "LanceEgan", 
-"LanceEgan", "LanceEgan", "LanceEgan", "LanceEgan", "LanceEgan", 
-"LanceEgan", "LanceEgan", "LanceEgan", "LanceEgan", "LanceEgan", 
-"LanceEgan", "LanceEgan", "LanceEgan", "LanceEgan", "LanceEgan", 
-"LanceEgan", "LanceEgan", "LanceEgan", "LanceEgan", "LanceEgan", 
-"LanceEgan", "CraigColtman", "CraigColtman", "CraigColtman", 
-"CraigColtman", "CraigColtman", "CraigColtman", "CraigColtman", 
-"CraigColtman", "CraigColtman", "CraigColtman", "CraigColtman", 
-"CraigColtman", "CraigColtman", "CraigColtman", "CraigColtman", 
-"CraigColtman", "CraigColtman", "CraigColtman", "CraigColtman", 
-"CraigColtman", "CraigColtman", "CraigColtman", "CraigColtman", 
-"CraigColtman", "CraigColtman", "CraigColtman", "CraigColtman", 
-"CraigColtman", "HansBock", "HansBock", "HansBock", "HansBock", 
-"HansBock", "HansBock", "HansBock", "HansBock", "HansBock", "ArturTrzaskos", 
-"ArturTrzaskos", "ArturTrzaskos", "ArturTrzaskos", "ArturTrzaskos", 
-"ArturTrzaskos", "ArturTrzaskos", "ArturTrzaskos", "ArturTrzaskos", 
-"ArturTrzaskos", "ArturTrzaskos", "ArturTrzaskos", "ArturTrzaskos", 
-"ArturTrzaskos", "ArturTrzaskos", "ArturTrzaskos", "ArturTrzaskos", 
-"ArturTrzaskos", "VernBarby", "VernBarby", "VernBarby", "VernBarby", 
-"VernBarby", "VernBarby", "VernBarby", "VernBarby", "VernBarby", 
-"GianlucaMazzocco", "GianlucaMazzocco", "GianlucaMazzocco", "GianlucaMazzocco", 
-"GianlucaMazzocco", "GianlucaMazzocco", "GianlucaMazzocco", "GianlucaMazzocco", 
-"GianlucaMazzocco", "GianlucaMazzocco", "GianlucaMazzocco", "GianlucaMazzocco", 
-"GianlucaMazzocco", "GianlucaMazzocco", "GianlucaMazzocco", "GianlucaMazzocco", 
-"GianlucaMazzocco", "GianlucaMazzocco", "GianlucaMazzocco", "GianlucaMazzocco", 
-"GianlucaMazzocco", "GianlucaMazzocco", "GianlucaMazzocco", "GianlucaMazzocco", 
-"WilliamKavenagh", "WilliamKavenagh", "WilliamKavenagh", "WilliamKavenagh", 
-"WilliamKavenagh", "WilliamKavenagh", "WilliamKavenagh", "WilliamKavenagh", 
-"WilliamKavenagh", "WilliamKavenagh", "WilliamKavenagh", "WilliamKavenagh", 
-"WilliamKavenagh", "WilliamKavenagh", "WilliamKavenagh", "WilliamKavenagh", 
-"WilliamKavenagh", "WilliamKavenagh", "WilliamKavenagh", "WilliamKavenagh", 
-"WilliamKavenagh", "WilliamKavenagh", "StefanFlorea", "StefanFlorea", 
-"StefanFlorea", "StefanFlorea", "JamieHarries", "JamieHarries", 
-"JamieHarries", "JamieHarries", "JamieHarries", "JamieHarries", 
-"JamieHarries", "JoseDias", "JoseDias", "JoseDias", "JoseDias", 
-"JoseDias", "JoseDias", "JoseDias", "JoseDias", "JoseDias", "JoseDias", 
-"JoseDias", "TerenceCourtoreille", "TerenceCourtoreille", "TerenceCourtoreille", 
-"TerenceCourtoreille", "TerenceCourtoreille", "TerenceCourtoreille", 
-"TerenceCourtoreille", "TerenceCourtoreille", "TerenceCourtoreille", 
-"TerenceCourtoreille", "TerenceCourtoreille", "TerenceCourtoreille", 
-"TerenceCourtoreille", "TerenceCourtoreille", "TerenceCourtoreille", 
-"TerenceCourtoreille", "IvicaMagdic", "IvicaMagdic", "IvicaMagdic", 
-"IvicaMagdic", "IvicaMagdic", "IvicaMagdic", "IvicaMagdic", "IvicaMagdic", 
-"IvicaMagdic", "IvicaMagdic", "IvicaMagdic", "IvicaMagdic", "IvicaMagdic", 
-"IvicaMagdic", "IvicaMagdic", "IvicaMagdic", "TimRolston", "TimRolston", 
-"TimRolston", "TimRolston", "TimRolston", "TimRolston", "TimRolston", 
-"TimRolston", "TimRolston", "TimRolston", "TimRolston", "TimRolston", 
-"TimRolston", "NunoDuarte", "NunoDuarte", "NunoDuarte", "NunoDuarte", 
-"NunoDuarte", "NunoDuarte", "NunoDuarte", "NunoDuarte", "NunoDuarte", 
-"BretBishop", "BretBishop", "BretBishop", "BretBishop", "BretBishop", 
-"BretBishop", "BretBishop", "BretBishop", "BretBishop", "SimonGrootemaat", 
-"SimonGrootemaat", "SimonGrootemaat", "SimonGrootemaat", "SimonGrootemaat", 
-"SimonGrootemaat", "SimonGrootemaat", "SimonGrootemaat", "SimonGrootemaat", 
-"SimonGrootemaat", "SimonGrootemaat", "SimonGrootemaat", "SimonGrootemaat", 
-"PiotrKonieczny", "PiotrKonieczny", "PiotrKonieczny", "PiotrKonieczny", 
-"PiotrKonieczny", "PiotrKonieczny", "PiotrKonieczny", "PiotrKonieczny", 
-"PiotrKonieczny", "PiotrKonieczny", "PiotrKonieczny", "PiotrKonieczny", 
-"PiotrKonieczny", "PiotrKonieczny", "PiotrKonieczny", "PiotrKonieczny", 
-"PiotrKonieczny", "PiotrKonieczny", "PiotrKonieczny", "PiotrKonieczny", 
-"PiotrKonieczny", "PiotrKonieczny", "PiotrKonieczny", "PiotrKonieczny", 
-"PiotrKonieczny", "PiotrKonieczny", "PiotrKonieczny", "PiotrKonieczny", 
-"AlessandroSgrani", "AlessandroSgrani", "AlessandroSgrani", "AlessandroSgrani", 
-"AlessandroSgrani", "AlessandroSgrani", "AlessandroSgrani", "AlessandroSgrani", 
-"AlessandroSgrani", "AlessandroSgrani", "PeterBienek", "PeterBienek", 
-"PeterBienek", "PeterBienek", "PeterBienek", "PeterBienek", "PeterBienek", 
-"PeterBienek", "PeterBienek", "PeterBienek", "PeterBienek", "PeterBienek", 
-"PeterBienek", "PeterBienek", "PeterBienek", "PeterBienek", "PeterBienek", 
-"PeterBienek", "PeterBienek", "KimTribe", "KimTribe", "KimTribe", 
-"KimTribe", "KimTribe", "JulienDaguillanes", "JulienDaguillanes", 
-"JulienDaguillanes", "JulienDaguillanes", "JulienDaguillanes", 
-"JulienDaguillanes", "JulienDaguillanes", "JulienDaguillanes", 
-"JulienDaguillanes", "JulienDaguillanes", "JulienDaguillanes", 
-"JulienDaguillanes", "JulienDaguillanes", "JulienDaguillanes", 
-"JulienDaguillanes", "JulienDaguillanes", "JulienDaguillanes", 
-"JulienDaguillanes", "JulienDaguillanes", "SabahudinPehadzicBIHI", 
-"MarinkoPuskaric", "LucjanBurda", "LucjanBurda", "LucjanBurda", 
-"LucjanBurda", "LucjanBurda", "LucjanBurda", "LucjanBurda", "LucjanBurda", 
-"LucjanBurda", "LucjanBurda", "LucjanBurda", "LucjanBurda", "LucjanBurda", 
-"LucjanBurda", "LucjanBurda", "MichalBenatinsky", "MichalBenatinsky", 
-"MichalBenatinsky", "MichalBenatinsky", "MichalBenatinsky", "MichalBenatinsky", 
-"MichalBenatinsky", "MichalBenatinsky", "MichalBenatinsky", "MichalBenatinsky", 
-"MichalBenatinsky", "MichalBenatinsky", "MichalBenatinsky", "MichalBenatinsky", 
-"MichalBenatinsky", "MichalBenatinsky", "MichalBenatinsky", "MichalBenatinsky", 
-"MichalBenatinsky", "MichalBenatinsky", "JoshStephens", "JoshStephens", 
-"JoshStephens", "JoshStephens", "JoshStephens", "JoshStephens", 
-"JoshStephens", "JoshStephens", "JoshStephens", "JoshStephens", 
-"JoshStephens", "JoshStephens", "JoshStephens", "JoshStephens", 
-"JoshStephens", "JoshStephens", "JoshStephens", "JohnTrench", 
-"JohnTrench", "JohnTrench", "JohnTrench", "JohnTrench", "JohnTrench", 
-"JohnTrench", "PeterElberse", "PeterElberse", "PeterElberse", 
-"PeterElberse", "PeterElberse", "PeterElberse", "PeterElberse", 
-"PeterElberse", "PeterElberse", "PeterElberse", "PeterElberse", 
-"PeterElberse", "PeterElberse", "PeterElberse", "PeterElberse", 
-"PeterElberse", "PeterElberse", "PeterElberse", "PeterElberse", 
-"PeterElberse", "PeterElberse", "JarkkoSuominen", "JarkkoSuominen", 
-"JarkkoSuominen", "JarkkoSuominen", "JarkkoSuominen", "JarkkoSuominen", 
-"JarkkoSuominen", "JarkkoSuominen", "JarkkoSuominen", "JarkkoSuominen", 
-"JarkkoSuominen", "JarkkoSuominen", "JarkkoSuominen", "JarkkoSuominen", 
-"JarkkoSuominen", "RobertVanRensburg", "RobertVanRensburg", "MisakoIshimura", 
-"MisakoIshimura", "JohnBell", "JohnBell", "JohnBell", "JohnBell", 
-"JohnBell", "JohnBell", "JohnBell", "BertrandJacquemin", "BertrandJacquemin", 
-"BertrandJacquemin", "BertrandJacquemin", "BertrandJacquemin", 
-"BertrandJacquemin", "BertrandJacquemin", "BertrandJacquemin", 
-"BertrandJacquemin", "JohnHorsey", "JohnHorsey", "JohnHorsey", 
-"JohnHorsey", "JohnHorsey", "JohnHorsey", "JohnHorsey", "AntonioRodrigues", 
-"AntonioRodrigues", "AntonioRodrigues", "AntonioRodrigues", "JannePirkkalainen", 
-"JannePirkkalainen", "JannePirkkalainen", "JannePirkkalainen", 
-"JannePirkkalainen", "JannePirkkalainen", "JannePirkkalainen", 
-"JannePirkkalainen", "PavelMachan", "PavelMachan", "PavelMachan", 
-"PavelMachan", "PavelMachan", "PavelMachan", "PavelMachan", "PavelMachan", 
-"PavelMachan", "PavelMachan", "TorbjornEriksson", "TorbjornEriksson", 
-"StanislawGuzdek", "StanislawGuzdek", "StanislawGuzdek", "StanislawGuzdek", 
-"StanislawGuzdek", "StanislawGuzdek", "StanislawGuzdek", "StanislawGuzdek", 
-"StanislawGuzdek", "LloydStruther", "LloydStruther", "LloydStruther", 
-"LloydStruther", "LloydStruther", "LloydStruther", "LloydStruther", 
-"LloydStruther", "LloydStruther", "LloydStruther", "LloydStruther", 
-"LloydStruther", "LloydStruther", "LloydStruther", "LloydStruther", 
-"LloydStruther", "LloydStruther", "LloydStruther", "LloydStruther", 
-"LloydStruther", "LloydStruther", "LloydStruther", "LloydStruther", 
-"LloydStruther", "LloydStruther", "LloydStruther", "LloydStruther", 
-"LloydStruther", "LloydStruther", "LloydStruther", "LloydStruther", 
-"LloydStruther", "LloydStruther", "LloydStruther", "LloydStruther", 
-"JohnBuckley", "JohnBuckley", "JohnBuckley", "JohnBuckley", "JohnBuckley", 
-"JohnBuckley", "JohnBuckley", "JohnBuckley", "JohnBuckley", "JohnBuckley", 
-"JohnBuckley", "JohnBuckley", "JohnBuckley", "JohnBuckley", "JohnBuckley", 
-"JohnBuckley", "JohnBuckley", "JohnBuckley", "OlliToivonen", 
-"OlliToivonen", "OlliToivonen", "OlliToivonen", "OlliToivonen", 
-"OlliToivonen", "OlliToivonen", "OlliToivonen", "OlliToivonen", 
-"OlliToivonen", "OlliToivonen", "OlliToivonen", "OlliToivonen", 
-"OlliToivonen", "OlliToivonen", "OlliToivonen", "OlliToivonen", 
-"OlliToivonen", "OlliToivonen", "OlliToivonen", "OlliToivonen", 
-"OlliToivonen", "OlliToivonen", "OlliToivonen", "OlliToivonen", 
-"OlliToivonen", "OlliToivonen", "OlliToivonen", "OlliToivonen", 
-"YoshikoIzumiya", "YoshikoIzumiya", "YoshikoIzumiya", "YoshikoIzumiya", 
-"PauloMorais", "PauloMorais", "PauloMorais", "PauloMorais", "PauloMorais", 
-"PauloMorais", "PauloMorais", "PauloMorais", "PauloMorais", "PauloMorais", 
-"PauloMorais", "PauloMorais", "PauloMorais", "PauloMorais", "PauloMorais", 
-"PauloMorais", "PauloMorais", "PauloMorais", "PauloMorais", "SandroSoldarini", 
-"SandroSoldarini", "SandroSoldarini", "SandroSoldarini", "SandroSoldarini", 
-"SandroSoldarini", "SandroSoldarini", "SandroSoldarini", "SandroSoldarini", 
-"SandroSoldarini", "SandroSoldarini", "SandroSoldarini", "SandroSoldarini", 
-"SandroSoldarini", "SandroSoldarini", "SandroSoldarini", "MarekWalczyk", 
-"MarekWalczyk", "MarekWalczyk", "MarekWalczyk", "MarekWalczyk", 
-"MarekWalczyk", "MarekWalczyk", "MarekWalczyk", "MarekWalczyk", 
-"MarekWalczyk", "MarekWalczyk", "MarekWalczyk", "MarekWalczyk", 
-"MarekWalczyk", "MarekWalczyk", "MarekWalczyk", "MarekWalczyk", 
-"MarekWalczyk", "MarekWalczyk", "MarekWalczyk", "MarekWalczyk", 
-"MarekWalczyk", "MarekWalczyk", "AndrewDixon", "AndrewDixon", 
-"AndrewDixon", "AndrewDixon", "AndrewDixon", "AndrewDixon", "AndrewDixon", 
-"AndrewDixon", "AndrewDixon", "AndrewDixon", "AndrewDixon", "AndrewDixon", 
-"AndrewDixon", "AndrewDixon", "AndrewDixon", "AndrewDixon", "AndrewDixon", 
-"AndrewDixon", "AndrewDixon", "AndrewDixon", "AndrewDixon", "AndrewDixon", 
-"AndrewDixon", "StanislawMankou", "StanislawMankou", "StanislawMankou", 
-"StanislawMankou", "StanislawMankou", "StanislawMankou", "StanislawMankou", 
-"StanislawMankou", "StanislawMankou", "StanislawMankou", "StanislawMankou", 
-"YannCaleri", "YannCaleri", "YannCaleri", "YannCaleri", "YannCaleri", 
-"YannCaleri", "YannCaleri", "YannCaleri", "YannCaleri", "YannCaleri", 
-"YannCaleri", "YannCaleri", "YannCaleri", "YannCaleri", "YannCaleri", 
-"YannCaleri", "YannCaleri", "YannCaleri", "YannCaleri", "YannCaleri", 
-"YannCaleri", "YannCaleri", "YannCaleri", "YannCaleri", "YannCaleri", 
-"YannCaleri", "YannCaleri", "MikeTinnion", "MikeTinnion", "MikeTinnion", 
-"MikeTinnion", "MikeTinnion", "MikeTinnion", "MikeTinnion", "MikeTinnion", 
-"MikeTinnion", "MikeTinnion", "MikeTinnion", "MikeTinnion", "MikeTinnion", 
-"MikeTinnion", "MikeTinnion", "MikeTinnion", "MikeTinnion", "MikeTinnion", 
-"GeorgeDaniel", "GeorgeDaniel", "GeorgeDaniel", "GeorgeDaniel", 
-"GeorgeDaniel", "GeorgeDaniel", "GeorgeDaniel", "GeorgeDaniel", 
-"GeorgeDaniel", "GeorgeDaniel", "GeorgeDaniel", "GeorgeDaniel", 
-"GeorgeDaniel", "GeorgeDaniel", "GeorgeDaniel", "GeorgeDaniel", 
-"GeorgeDaniel", "GeorgeDaniel", "GeorgeDaniel", "TomasAdam", 
-"TomasAdam", "TomasAdam", "TomasAdam", "TomasAdam", "TomasAdam", 
-"TomasAdam", "TomasAdam", "TomasAdam", "TomasAdam", "TomasAdam", 
-"TomasAdam", "TomasAdam", "TomasAdam", "TomasAdam", "TomasAdam", 
-"TomasAdam", "TomasAdam", "TomasAdam", "TomasAdam", "TomasAdam", 
-"TomasAdam", "TomasAdam", "TomasAdam", "TomasAdam", "TomasAdam", 
-"TomasAdam", "TomasAdam", "TomasAdam", "TomasAdam", "TomasAdam", 
-"MarkYelland", "MarkYelland", "MarkYelland", "MarkYelland", "MarkYelland", 
-"MarkYelland", "MiroslavAntal", "MiroslavAntal", "MiroslavAntal", 
-"MiroslavAntal", "MiroslavAntal", "MiroslavAntal", "MiroslavAntal", 
-"MiroslavAntal", "MiroslavAntal", "MiroslavAntal", "MiroslavAntal", 
-"MiroslavAntal", "MiroslavAntal", "MiroslavAntal", "MiroslavAntal", 
-"MiroslavAntal", "MiroslavAntal", "MiroslavAntal", "MiroslavAntal", 
-"MiroslavAntal", "MiroslavAntal", "MiroslavAntal", "MiroslavAntal", 
-"ChristopheIdre", "ChristopheIdre", "ChristopheIdre", "ChristopheIdre", 
-"ChristopheIdre", "ChristopheIdre", "ChristopheIdre", "ChristopheIdre", 
-"ChristopheIdre", "ChristopheIdre", "ChristopheIdre", "ReneKoops", 
-"ReneKoops", "ReneKoops", "ReneKoops", "ReneKoops", "ReneKoops", 
-"ReneKoops", "VilleAnttiJaakkola", "VilleAnttiJaakkola", "VilleAnttiJaakkola", 
-"VilleAnttiJaakkola", "VilleAnttiJaakkola", "VilleAnttiJaakkola", 
-"VilleAnttiJaakkola", "VilleAnttiJaakkola", "VilleAnttiJaakkola", 
-"VilleAnttiJaakkola", "VilleAnttiJaakkola", "VilleAnttiJaakkola", 
-"VilleAnttiJaakkola", "SeiichiKomatsuzawa", "SeiichiKomatsuzawa", 
-"SeiichiKomatsuzawa", "SeiichiKomatsuzawa", "SeiichiKomatsuzawa", 
-"SeiichiKomatsuzawa", "SeiichiKomatsuzawa", "CraigFarrar", "CraigFarrar", 
-"CraigFarrar", "CraigFarrar", "CraigFarrar", "CraigFarrar", "CraigFarrar", 
-"CraigFarrar", "CraigFarrar", "CraigFarrar", "JouniNeste", "JouniNeste", 
-"JouniNeste", "JouniNeste", "JouniNeste", "JouniNeste", "JouniNeste", 
-"JouniNeste", "JouniNeste", "StephenVarga", "StephenVarga", "StephenVarga", 
-"SimonRobinson", "SimonRobinson", "SimonRobinson", "SimonRobinson", 
-"SimonRobinson", "SimonRobinson", "SimonRobinson", "SimonRobinson", 
-"SimonRobinson", "SimonRobinson", "SimonRobinson", "SimonRobinson", 
-"SimonRobinson", "SimonRobinson", "SimonRobinson", "SimonRobinson", 
-"SimonRobinson", "SimonRobinson", "SimonRobinson", "SimonRobinson", 
-"SimonRobinson", "SimonRobinson", "SimonRobinson", "SimonRobinson", 
-"SimonRobinson", "SimonRobinson", "SimonRobinson", "SimonRobinson", 
-"DamienWalsh", "DamienWalsh", "DamienWalsh", "DamienWalsh", "DamienWalsh", 
-"DamienWalsh", "DamienWalsh", "DamienWalsh", "DamienWalsh", "DamienWalsh", 
-"DamienWalsh", "DamienWalsh", "DamienWalsh", "DamienWalsh", "DamienWalsh", 
-"DamienWalsh", "DamienWalsh", "DamienWalsh", "DamienWalsh", "DesArmstrong", 
-"DesArmstrong", "DesArmstrong", "DesArmstrong", "DesArmstrong", 
-"DesArmstrong", "DesArmstrong", "DesArmstrong", "DesArmstrong", 
-"DesArmstrong", "DesArmstrong", "DesArmstrong", "DesArmstrong", 
-"DesArmstrong", "DesArmstrong", "DesArmstrong", "DesArmstrong", 
-"DesArmstrong", "DesArmstrong", "DesArmstrong", "DesArmstrong", 
-"DesArmstrong", "DesArmstrong", "DesArmstrong", "DesArmstrong", 
-"DesArmstrong", "KiyoshiNakagawa", "KiyoshiNakagawa", "KiyoshiNakagawa", 
-"KiyoshiNakagawa", "KiyoshiNakagawa", "KiyoshiNakagawa", "KiyoshiNakagawa", 
-"KiyoshiNakagawa", "KiyoshiNakagawa", "KiyoshiNakagawa", "KiyoshiNakagawa", 
-"KiyoshiNakagawa", "ScottTucker", "ScottTucker", "ScottTucker", 
-"ScottTucker", "ScottTucker", "ScottTucker", "ScottTucker", "MiroslavKaticic", 
-"MiroslavKaticic", "MiroslavKaticic", "MiroslavKaticic", "MiroslavKaticic", 
-"MiroslavKaticic", "MiroslavKaticic", "AntoninPesek", "AntoninPesek", 
-"AntoninPesek", "AntoninPesek", "AntoninPesek", "AntoninPesek", 
-"AntoninPesek", "AntoninPesek", "AntoninPesek", "AntoninPesek", 
-"AntoninPesek", "ToddOishi", "ToddOishi", "ToddOishi", "ToddOishi", 
-"DonaldThom", "DonaldThom", "DonaldThom", "DonaldThom", "DonaldThom", 
-"DonaldThom", "DonaldThom", "DonaldThom", "DonaldThom", "DonaldThom", 
-"DonaldThom", "DonaldThom", "TakashiKawahara", "TakashiKawahara", 
-"TakashiKawahara", "TakashiKawahara", "TakashiKawahara", "TakashiKawahara", 
-"DavidEricDavies", "DavidEricDavies", "DavidEricDavies", "LucaPapandrea", 
-"LucaPapandrea", "LucaPapandrea", "LucaPapandrea", "LucaPapandrea", 
-"LucaPapandrea", "LucaPapandrea", "LucaPapandrea", "LucaPapandrea", 
-"LucaPapandrea", "LucaPapandrea", "LucaPapandrea", "LucaPapandrea", 
-"LucaPapandrea", "LucaPapandrea", "LucaPapandrea", "LucaPapandrea", 
-"LucaPapandrea", "LucaPapandrea", "LucaPapandrea", "LucaPapandrea", 
-"LucaPapandrea", "MartinDroz", "MartinDroz", "MartinDroz", "MartinDroz", 
-"MartinDroz", "MartinDroz", "MartinDroz", "MartinDroz", "MartinDroz", 
-"MartinDroz", "MartinDroz", "MartinDroz", "MartinDroz", "MartinDroz", 
-"MartinDroz", "MartinDroz", "MartinDroz", "MartinDroz", "MartinDroz", 
-"MartinDroz", "MartinDroz", "MartinDroz", "MartinDroz", "MartinDroz", 
-"HowardCroston", "HowardCroston", "AaronWest", "AaronWest", "AaronWest", 
-"AaronWest", "AaronWest", "AaronWest", "AaronWest", "AaronWest", 
-"AaronWest", "AaronWest", "AaronWest", "AaronWest", "AaronWest", 
-"EricLelouvrier", "EricLelouvrier", "EricLelouvrier", "EricLelouvrier", 
-"EricLelouvrier", "EricLelouvrier", "EricLelouvrier", "EricLelouvrier", 
-"EricLelouvrier", "EricLelouvrier", "EricLelouvrier", "EricLelouvrier", 
-"EricLelouvrier", "EricLelouvrier", "EricLelouvrier", "EricLelouvrier", 
-"JoeRiley", "JoeRiley", "JoeRiley", "JoeRiley", "JoeRiley", "HelderRodrigues", 
-"HelderRodrigues", "HelderRodrigues", "HelderRodrigues", "RickyLehman", 
-"RickyLehman", "PeterDindic", "PeterDindic", "PeterDindic", "PeterDindic", 
-"PeterDindic", "PeterDindic", "JanBartko", "JanBartko", "JanBartko", 
-"JanBartko", "JanBartko", "JanBartko", "JanBartko", "JanBartko", 
-"JanBartko", "JanBartko", "JanBartko", "JanBartko", "JanBartko", 
-"AnthonyNaranja", "AnthonyNaranja", "AnthonyNaranja", "AnthonyNaranja", 
-"AnthonyNaranja", "AnthonyNaranja", "AnthonyNaranja", "AnthonyNaranja", 
-"AnthonyNaranja", "AnthonyNaranja", "AnthonyNaranja", "AnthonyNaranja", 
-"JohnBeaven", "JohnFoxton", "JohnFoxton", "JohnFoxton", "JohnFoxton", 
-"JohnFoxton", "JohnFoxton", "ValerioSantiAmantini", "ValerioSantiAmantini", 
-"ValerioSantiAmantini", "ValerioSantiAmantini", "ValerioSantiAmantini", 
-"ValerioSantiAmantini", "ValerioSantiAmantini", "ValerioSantiAmantini", 
-"ValerioSantiAmantini", "ValerioSantiAmantini", "ValerioSantiAmantini", 
-"ValerioSantiAmantini", "ValerioSantiAmantini", "ValerioSantiAmantini", 
-"ValerioSantiAmantini", "ValerioSantiAmantini", "JanKwisthout", 
-"JanKwisthout", "JanKwisthout", "JanKwisthout", "JanKwisthout", 
-"GaryGlenYoung", "IvicaMagdic", "IvicaMagdic", "IvicaMagdic", 
-"IvicaMagdic", "IvicaMagdic", "IvicaMagdic", "IvicaMagdic", "IvicaMagdic", 
-"IvicaMagdic", "IvicaMagdic", "IvicaMagdic", "IvicaMagdic", "IvicaMagdic", 
-"IvicaMagdic", "IvicaMagdic", "IvicaMagdic", "IvicaMagdic", "IvicaMagdic", 
-"IvicaMagdic", "IvicaMagdic", "IvicaMagdic", "IvicaMagdic", "IvicaMagdic", 
-"IvicaMagdic", "IvicaMagdic", "IvicaMagdic", "IvicaMagdic", "IvicaMagdic", 
-"IvicaMagdic", "IvicaMagdic", "IvicaMagdic", "IvicaMagdic", "IvicaMagdic", 
-"IvicaMagdic", "IvicaMagdic", "IvicaMagdic", "IvicaMagdic", "StefanFlorea", 
-"StefanFlorea", "StefanFlorea", "StefanFlorea", "StefanFlorea", 
-"StefanFlorea", "StefanFlorea", "StefanFlorea", "StefanFlorea", 
-"StefanFlorea", "StefanFlorea", "StefanFlorea", "StefanFlorea", 
-"StefanFlorea", "StefanFlorea", "ReneKoops", "ReneKoops", "ReneKoops", 
-"ReneKoops", "ReneKoops", "ReneKoops", "ReneKoops", "ReneKoops", 
-"ReneKoops", "ReneKoops", "ReneKoops", "ReneKoops", "ReneKoops", 
-"ReneKoops", "ReneKoops", "ReneKoops", "CraigFarrar", "CraigFarrar", 
-"CraigFarrar", "CraigFarrar", "CraigFarrar", "CraigFarrar", "CraigFarrar", 
-"CraigFarrar", "CraigFarrar", "CraigFarrar", "CraigFarrar", "CraigFarrar", 
-"CraigFarrar", "CraigFarrar", "CraigFarrar", "CraigFarrar", "CraigFarrar", 
-"CraigFarrar", "CraigFarrar", "CraigFarrar", "CraigFarrar", "CraigFarrar", 
-"CraigFarrar", "CraigFarrar", "CraigFarrar", "CraigFarrar", "CraigFarrar", 
-"CraigFarrar", "CraigFarrar", "CraigFarrar", "CraigFarrar", "CraigFarrar", 
-"CraigFarrar", "CraigFarrar", "TerenceCourtoreille", "TerenceCourtoreille", 
-"TerenceCourtoreille", "TerenceCourtoreille", "TerenceCourtoreille", 
-"TerenceCourtoreille", "TerenceCourtoreille", "TerenceCourtoreille", 
-"TerenceCourtoreille", "TerenceCourtoreille", "TerenceCourtoreille", 
-"TerenceCourtoreille", "TerenceCourtoreille", "TerenceCourtoreille", 
-"TerenceCourtoreille", "TerenceCourtoreille", "TerenceCourtoreille", 
-"TerenceCourtoreille", "TerenceCourtoreille", "TerenceCourtoreille", 
-"TerenceCourtoreille", "TerenceCourtoreille", "TerenceCourtoreille", 
-"TerenceCourtoreille", "TerenceCourtoreille", "TerenceCourtoreille", 
-"TerenceCourtoreille", "TerenceCourtoreille", "TerenceCourtoreille", 
-"GianlucaMazzocco", "GianlucaMazzocco", "GianlucaMazzocco", "GianlucaMazzocco", 
-"GianlucaMazzocco", "GianlucaMazzocco", "GianlucaMazzocco", "GianlucaMazzocco", 
-"GianlucaMazzocco", "GianlucaMazzocco", "GianlucaMazzocco", "GianlucaMazzocco", 
-"GianlucaMazzocco", "GianlucaMazzocco", "GianlucaMazzocco", "GianlucaMazzocco", 
-"GianlucaMazzocco", "GianlucaMazzocco", "GianlucaMazzocco", "GianlucaMazzocco", 
-"GianlucaMazzocco", "GianlucaMazzocco", "GianlucaMazzocco", "GianlucaMazzocco", 
-"GianlucaMazzocco", "GianlucaMazzocco", "GianlucaMazzocco", "GianlucaMazzocco", 
-"ChristopheIdre", "ChristopheIdre", "ChristopheIdre", "ChristopheIdre", 
-"ChristopheIdre", "ChristopheIdre", "ChristopheIdre", "ChristopheIdre", 
-"ChristopheIdre", "ChristopheIdre", "ChristopheIdre", "ChristopheIdre", 
-"ChristopheIdre", "ChristopheIdre", "ChristopheIdre", "ChristopheIdre", 
-"ChristopheIdre", "ChristopheIdre", "ChristopheIdre", "ChristopheIdre", 
-"ChristopheIdre", "ChristopheIdre", "ChristopheIdre", "ChristopheIdre", 
-"VernBarby", "VernBarby", "VernBarby", "VernBarby", "VernBarby", 
-"VernBarby", "VernBarby", "VernBarby", "VernBarby", "VernBarby", 
-"VernBarby", "VernBarby", "VernBarby", "VernBarby", "VernBarby", 
-"VernBarby", "VilleAnttiJaakkola", "VilleAnttiJaakkola", "VilleAnttiJaakkola", 
-"VilleAnttiJaakkola", "VilleAnttiJaakkola", "VilleAnttiJaakkola", 
-"VilleAnttiJaakkola", "VilleAnttiJaakkola", "VilleAnttiJaakkola", 
-"VilleAnttiJaakkola", "VilleAnttiJaakkola", "VilleAnttiJaakkola", 
-"VilleAnttiJaakkola", "VilleAnttiJaakkola", "VilleAnttiJaakkola", 
-"VilleAnttiJaakkola", "VilleAnttiJaakkola", "VilleAnttiJaakkola", 
-"VilleAnttiJaakkola", "PauloMorais", "PauloMorais", "PauloMorais", 
-"PauloMorais", "PauloMorais", "PauloMorais", "PauloMorais", "PauloMorais", 
-"PauloMorais", "PauloMorais", "PauloMorais", "PauloMorais", "PauloMorais", 
-"PauloMorais", "PauloMorais", "PauloMorais", "PauloMorais", "PauloMorais", 
-"PauloMorais", "PauloMorais", "PauloMorais", "PauloMorais", "TomasStarychfojtu", 
-"TomasStarychfojtu", "TomasStarychfojtu", "TomasStarychfojtu", 
-"TomasStarychfojtu", "TomasStarychfojtu", "TomasStarychfojtu", 
-"TomasStarychfojtu", "TomasStarychfojtu", "TomasStarychfojtu", 
-"TomasStarychfojtu", "TomasStarychfojtu", "TomasStarychfojtu", 
-"TomasStarychfojtu", "TomasStarychfojtu", "TomasStarychfojtu", 
-"TomasStarychfojtu", "TomasStarychfojtu", "TomasStarychfojtu", 
-"TomasStarychfojtu", "TomasStarychfojtu", "TomasStarychfojtu", 
-"TomasStarychfojtu", "TomasStarychfojtu", "TomasStarychfojtu", 
-"TomasStarychfojtu", "TomasStarychfojtu", "TomasStarychfojtu", 
-"TomasStarychfojtu", "AndreSteenkamp", "AndreSteenkamp", "AndreSteenkamp", 
-"AndreSteenkamp", "AndreSteenkamp", "AndreSteenkamp", "AndreSteenkamp", 
-"AndreSteenkamp", "AndreSteenkamp", "AndreSteenkamp", "AndreSteenkamp", 
-"AndreSteenkamp", "BorisDzurek", "BorisDzurek", "BorisDzurek", 
-"BorisDzurek", "BorisDzurek", "BorisDzurek", "BorisDzurek", "BorisDzurek", 
-"BorisDzurek", "BorisDzurek", "BoskoBarisic", "BoskoBarisic", 
-"BoskoBarisic", "BoskoBarisic", "BoskoBarisic", "BoskoBarisic", 
-"BoskoBarisic", "BoskoBarisic", "BoskoBarisic", "BoskoBarisic", 
-"JohnBuckley", "JohnBuckley", "JohnBuckley", "JohnBuckley", "JohnBuckley", 
-"JohnBuckley", "JohnBuckley", "JohnBuckley", "JohnBuckley", "JohnBuckley", 
-"JohnBuckley", "JohnBuckley", "JohnBuckley", "JohnBuckley", "JohnBuckley", 
-"JohnBuckley", "JohnBuckley", "JohnBuckley", "JohnBuckley", "JohnBuckley", 
-"JohnBuckley", "JohnBuckley", "JohnBuckley", "JohnBuckley", "JohnBuckley", 
-"JohnBuckley", "JohnBuckley", "JohnBuckley", "YoshikoIzumiya", 
-"YoshikoIzumiya", "StanislawMankou", "StanislawMankou", "StanislawMankou", 
-"StanislawMankou", "StanislawMankou", "StanislawMankou", "StanislawMankou", 
-"StanislawMankou", "StanislawMankou", "StanislawMankou", "StanislawMankou", 
-"StanislawMankou", "StanislawMankou", "StanislawMankou", "MichaelHeckler", 
-"MichaelHeckler", "MichaelHeckler", "MichaelHeckler", "BretBishop", 
-"BretBishop", "BretBishop", "BretBishop", "BretBishop", "BretBishop", 
-"BretBishop", "BretBishop", "BretBishop", "BretBishop", "BretBishop", 
-"BretBishop", "BretBishop", "BretBishop", "BretBishop", "BretBishop", 
-"BretBishop", "BretBishop", "BretBishop", "BretBishop", "BretBishop", 
-"BretBishop", "BretBishop", "BretBishop", "BretBishop", "BretBishop", 
-"BretBishop", "KiyoshiNakagawa", "KiyoshiNakagawa", "KiyoshiNakagawa", 
-"KiyoshiNakagawa", "KiyoshiNakagawa", "KiyoshiNakagawa", "KiyoshiNakagawa", 
-"KiyoshiNakagawa", "KiyoshiNakagawa", "KiyoshiNakagawa", "KiyoshiNakagawa", 
-"KiyoshiNakagawa", "KiyoshiNakagawa", "KiyoshiNakagawa", "KiyoshiNakagawa", 
-"KiyoshiNakagawa", "KiyoshiNakagawa", "KiyoshiNakagawa", "KiyoshiNakagawa", 
-"KiyoshiNakagawa", "KiyoshiNakagawa", "KiyoshiNakagawa", "KiyoshiNakagawa", 
-"KiyoshiNakagawa", "KiyoshiNakagawa", "KiyoshiNakagawa", "ScottTucker", 
-"ScottTucker", "ScottTucker", "ScottTucker", "ScottTucker", "ScottTucker", 
-"ScottTucker", "ScottTucker", "ScottTucker", "ScottTucker", "ScottTucker", 
-"ScottTucker", "ScottTucker", "ScottTucker", "ScottTucker", "ScottTucker", 
-"ScottTucker", "ScottTucker", "ScottTucker", "ScottTucker", "ScottTucker", 
-"PiotrKonieczny", "PiotrKonieczny", "PiotrKonieczny", "PiotrKonieczny", 
-"PiotrKonieczny", "PiotrKonieczny", "PiotrKonieczny", "PiotrKonieczny", 
-"PiotrKonieczny", "PiotrKonieczny", "PiotrKonieczny", "PiotrKonieczny", 
-"PiotrKonieczny", "PiotrKonieczny", "PiotrKonieczny", "PiotrKonieczny", 
-"PiotrKonieczny", "PiotrKonieczny", "PiotrKonieczny", "PiotrKonieczny", 
-"PiotrKonieczny", "PiotrKonieczny", "PiotrKonieczny", "PiotrKonieczny", 
-"PiotrKonieczny", "PiotrKonieczny", "PiotrKonieczny", "PiotrKonieczny", 
-"KimTribe", "KimTribe", "KimTribe", "KimTribe", "KimTribe", "KimTribe", 
-"KimTribe", "AntoninPesek", "AntoninPesek", "AntoninPesek", "AntoninPesek", 
-"AntoninPesek", "AntoninPesek", "AntoninPesek", "AntoninPesek", 
-"AntoninPesek", "AntoninPesek", "AntoninPesek", "AntoninPesek", 
-"AntoninPesek", "AntoninPesek", "AntoninPesek", "AntoninPesek", 
-"AntoninPesek", "AntoninPesek", "AntoninPesek", "AntoninPesek", 
-"AntoninPesek", "AntoninPesek", "AntoninPesek", "AntoninPesek", 
-"AntoninPesek", "AntoninPesek", "AntoninPesek", "AntoninPesek", 
-"AntoninPesek", "AntoninPesek", "AntoninPesek", "TimRolston", 
-"TimRolston", "TimRolston", "TimRolston", "TimRolston", "TimRolston", 
-"TimRolston", "MiroslavKaticic", "MiroslavKaticic", "MiroslavKaticic", 
-"MiroslavKaticic", "MiroslavKaticic", "MiroslavKaticic", "MiroslavKaticic", 
-"MiroslavKaticic", "MiroslavKaticic", "MiroslavKaticic", "MiroslavKaticic", 
-"MiroslavKaticic", "MiroslavKaticic", "MiroslavKaticic", "MiroslavKaticic", 
-"MiroslavKaticic", "NunoDuarte", "NunoDuarte", "NunoDuarte", 
-"NunoDuarte", "NunoDuarte", "NunoDuarte", "NunoDuarte", "NunoDuarte", 
-"NunoDuarte", "NunoDuarte", "NunoDuarte", "NunoDuarte", "NunoDuarte", 
-"NunoDuarte", "NunoDuarte", "NunoDuarte", "NunoDuarte", "NunoDuarte", 
-"NunoDuarte", "JohnFoxton", "JohnFoxton", "JohnFoxton", "JohnFoxton", 
-"JohnFoxton", "JohnFoxton", "JohnFoxton", "JohnFoxton", "JohnFoxton", 
-"JohnBell", "JohnBell", "JohnBell", "JohnBell", "JohnBell", "JohnBell", 
-"PeterDindic", "PeterDindic", "PeterDindic", "PeterDindic", "PeterDindic", 
-"PeterDindic", "PeterDindic", "PeterDindic", "PeterDindic", "PeterDindic", 
-"PavelMachan", "PavelMachan", "PavelMachan", "PavelMachan", "PavelMachan", 
-"PavelMachan", "PavelMachan", "PavelMachan", "PavelMachan", "PavelMachan", 
-"PavelMachan", "PavelMachan", "PavelMachan", "PavelMachan", "PavelMachan", 
-"PavelMachan", "PavelMachan", "PavelMachan", "MisakoIshimura", 
-"MisakoIshimura", "MisakoIshimura", "MisakoIshimura", "JanBartko", 
-"JanBartko", "JanBartko", "JanBartko", "JanBartko", "JanBartko", 
-"JanBartko", "JanBartko", "JanBartko", "JanBartko", "JanBartko", 
-"JanBartko", "JanBartko", "JanBartko", "JanBartko", "JanBartko", 
-"JanBartko", "BrianJeremiah", "BrianJeremiah", "JohnHorsey", 
-"JohnHorsey", "JohnHorsey", "JohnHorsey", "JohnHorsey", "JohnHorsey", 
-"JohnHorsey", "JohnHorsey", "JohnHorsey", "JohnHorsey", "StanislawGuzdek", 
-"StanislawGuzdek", "StanislawGuzdek", "StanislawGuzdek", "StanislawGuzdek", 
-"StanislawGuzdek", "StanislawGuzdek", "StanislawGuzdek", "StanislawGuzdek", 
-"StanislawGuzdek", "StanislawGuzdek", "StanislawGuzdek", "StanislawGuzdek", 
-"StanislawGuzdek", "StanislawGuzdek", "PeterElberse", "PeterElberse", 
-"PeterElberse", "PeterElberse", "PeterElberse", "PeterElberse", 
-"PeterElberse", "PeterElberse", "PeterElberse", "PeterElberse", 
-"DionDavies", "JohnTrench", "LucaPapandrea", "LucaPapandrea", 
-"LucaPapandrea", "LucaPapandrea", "LucaPapandrea", "LucaPapandrea", 
-"LucaPapandrea", "LucaPapandrea", "LucaPapandrea", "LucaPapandrea", 
-"LucaPapandrea", "LucaPapandrea", "LucaPapandrea", "LucaPapandrea", 
-"LucaPapandrea", "LucaPapandrea", "LucaPapandrea", "LucaPapandrea", 
-"LucaPapandrea", "LucaPapandrea", "LucaPapandrea", "JarkkoSuominen", 
-"JarkkoSuominen", "JarkkoSuominen", "JarkkoSuominen", "JarkkoSuominen", 
-"JarkkoSuominen", "JarkkoSuominen", "JarkkoSuominen", "JarkkoSuominen", 
-"JarkkoSuominen", "JarkkoSuominen", "SabahudinPehadzicBIHI", 
-"SabahudinPehadzicBIHI", "SabahudinPehadzicBIHI", "SabahudinPehadzicBIHI", 
-"SabahudinPehadzicBIHI", "SabahudinPehadzicBIHI", "SabahudinPehadzicBIHI", 
-"JoshStephens", "JoshStephens", "JoshStephens", "JoshStephens", 
-"JoshStephens", "JoshStephens", "JoshStephens", "JoshStephens", 
-"JoshStephens", "JoshStephens", "JoshStephens", "JoshStephens", 
-"JoshStephens", "AaronWest", "AaronWest", "AaronWest", "AaronWest", 
-"AaronWest", "AaronWest", "AaronWest", "AaronWest", "AaronWest", 
-"AaronWest", "RobertVanRensburg", "RobertVanRensburg", "SeiichiKomatsuzawa", 
-"SeiichiKomatsuzawa", "SeiichiKomatsuzawa", "SeiichiKomatsuzawa", 
-"SeiichiKomatsuzawa", "SeiichiKomatsuzawa", "SeiichiKomatsuzawa", 
-"SeiichiKomatsuzawa", "SeiichiKomatsuzawa", "SeiichiKomatsuzawa", 
-"SeiichiKomatsuzawa", "SeiichiKomatsuzawa", "SeiichiKomatsuzawa", 
-"SeiichiKomatsuzawa", "MiroslavAntal", "MiroslavAntal", "MiroslavAntal", 
-"MiroslavAntal", "MiroslavAntal", "MiroslavAntal", "MiroslavAntal", 
-"MiroslavAntal", "MiroslavAntal", "MiroslavAntal", "MiroslavAntal", 
-"MiroslavAntal", "MiroslavAntal", "MiroslavAntal", "MiroslavAntal", 
-"MiroslavAntal", "MiroslavAntal", "MiroslavAntal", "MiroslavAntal", 
-"MiroslavAntal", "MiroslavAntal", "MiroslavAntal", "GeorgeDaniel", 
-"GeorgeDaniel", "GeorgeDaniel", "GeorgeDaniel", "GeorgeDaniel", 
-"GeorgeDaniel", "GeorgeDaniel", "GeorgeDaniel", "GeorgeDaniel", 
-"GeorgeDaniel", "GeorgeDaniel", "GeorgeDaniel", "GeorgeDaniel", 
-"GeorgeDaniel", "GeorgeDaniel", "GeorgeDaniel", "GeorgeDaniel", 
-"GeorgeDaniel", "GeorgeDaniel", "GeorgeDaniel", "GeorgeDaniel", 
-"GeorgeDaniel", "GeorgeDaniel", "GeorgeDaniel", "GeorgeDaniel", 
-"GeorgeDaniel", "GeorgeDaniel", "GeorgeDaniel", "GeorgeDaniel", 
-"GeorgeDaniel", "GeorgeDaniel", "GeorgeDaniel", "WilliamKavenagh", 
-"WilliamKavenagh", "WilliamKavenagh", "WilliamKavenagh", "ArturTrzaskos", 
-"ArturTrzaskos", "ArturTrzaskos", "ArturTrzaskos", "ArturTrzaskos", 
-"ArturTrzaskos", "ArturTrzaskos", "ArturTrzaskos", "ArturTrzaskos", 
-"ArturTrzaskos", "ArturTrzaskos", "ArturTrzaskos", "JamieHarries", 
-"JamieHarries", "JamieHarries", "JamieHarries", "JamieHarries", 
-"MarkYelland", "MarkYelland", "MarkYelland", "MarkYelland", "MarkYelland", 
-"MarkYelland", "MarkYelland", "MarkYelland", "MarkYelland", "MarkYelland", 
-"MarkYelland", "MarkYelland", "MarkYelland", "JoseDias", "JoseDias", 
-"JoseDias", "JoseDias", "JoseDias", "JoseDias", "JoseDias", "JoseDias", 
-"JoseDias", "JoseDias", "JoseDias", "JoseDias", "JoseDias", "JoseDias", 
-"JoseDias", "JoseDias", "JoseDias", "JoseDias", "JoseDias", "JoseDias", 
-"JoseDias", "JoseDias", "TomasAdam", "TomasAdam", "TomasAdam", 
-"TomasAdam", "TomasAdam", "TomasAdam", "TomasAdam", "TomasAdam", 
-"TomasAdam", "TomasAdam", "TomasAdam", "TomasAdam", "TomasAdam", 
-"TomasAdam", "TomasAdam", "TomasAdam", "TomasAdam", "TomasAdam", 
-"TomasAdam", "TomasAdam", "TomasAdam", "TomasAdam", "MikeTinnion", 
-"MikeTinnion", "MikeTinnion", "MikeTinnion", "MikeTinnion", "MikeTinnion", 
-"MikeTinnion", "YannCaleri", "YannCaleri", "YannCaleri", "YannCaleri", 
-"YannCaleri", "YannCaleri", "YannCaleri", "YannCaleri", "YannCaleri", 
-"YannCaleri", "YannCaleri", "YannCaleri", "YannCaleri", "YannCaleri", 
-"YannCaleri", "YannCaleri", "YannCaleri", "YannCaleri", "YannCaleri", 
-"YannCaleri", "YannCaleri", "YannCaleri", "YannCaleri", "YannCaleri", 
-"YannCaleri", "YannCaleri", "YannCaleri", "YannCaleri", "YannCaleri", 
-"YannCaleri", "YannCaleri", "YannCaleri", "YannCaleri", "YannCaleri", 
-"YannCaleri", "YannCaleri", "YannCaleri", "MarekWalczyk", "MarekWalczyk", 
-"MarekWalczyk", "MarekWalczyk", "MarekWalczyk", "MarekWalczyk", 
-"MarekWalczyk", "MarekWalczyk", "MarekWalczyk", "MarekWalczyk", 
-"MarekWalczyk", "MarekWalczyk", "MarekWalczyk", "MarekWalczyk", 
-"MarekWalczyk", "MarekWalczyk", "MarekWalczyk", "OlliToivonen", 
-"OlliToivonen", "OlliToivonen", "OlliToivonen", "OlliToivonen", 
-"OlliToivonen", "OlliToivonen", "OlliToivonen", "OlliToivonen", 
-"OlliToivonen", "OlliToivonen", "OlliToivonen", "OlliToivonen", 
-"OlliToivonen", "OlliToivonen", "OlliToivonen", "OlliToivonen", 
-"OlliToivonen", "OlliToivonen", "OlliToivonen", "OlliToivonen", 
-"OlliToivonen", "OlliToivonen", "OlliToivonen", "OlliToivonen", 
-"OlliToivonen", "OlliToivonen", "OlliToivonen", "HansBock", "HansBock", 
-"HansBock", "HansBock", "HansBock", "HansBock", "HansBock", "HansBock", 
-"HansBock", "HansBock", "HansBock", "CraigColtman", "CraigColtman", 
-"CraigColtman", "CraigColtman", "CraigColtman", "CraigColtman", 
-"CraigColtman", "CraigColtman", "CraigColtman", "AndrewDixon", 
-"AndrewDixon", "AndrewDixon", "AndrewDixon", "AndrewDixon", "AndrewDixon", 
-"AndrewDixon", "SandroSoldarini", "SandroSoldarini", "SandroSoldarini", 
-"SandroSoldarini", "SandroSoldarini", "SandroSoldarini", "SandroSoldarini", 
-"SandroSoldarini", "SandroSoldarini", "SandroSoldarini", "SandroSoldarini", 
-"SandroSoldarini", "SandroSoldarini", "SandroSoldarini", "SandroSoldarini", 
-"SandroSoldarini", "SandroSoldarini", "SandroSoldarini", "SandroSoldarini", 
-"SandroSoldarini", "JohnNishi", "JohnNishi", "JohnNishi", "JohnNishi", 
-"JohnNishi", "JohnNishi", "JohnNishi", "JohnNishi", "JohnNishi", 
-"JohnNishi", "JohnNishi", "LanceEgan", "LanceEgan", "LanceEgan", 
-"LanceEgan", "LanceEgan", "LanceEgan", "LanceEgan", "LanceEgan", 
-"LanceEgan", "LanceEgan", "LloydStruther", "LloydStruther", "LloydStruther", 
-"LloydStruther", "LloydStruther", "LloydStruther", "LloydStruther", 
-"LloydStruther", "LloydStruther", "LloydStruther", "LloydStruther", 
-"LloydStruther", "LloydStruther", "LloydStruther", "SimonRobinson", 
-"SimonRobinson", "SimonRobinson", "SimonRobinson", "SimonRobinson", 
-"SimonRobinson", "SimonRobinson", "SimonRobinson", "SimonRobinson", 
-"SimonRobinson", "SimonRobinson", "SimonRobinson", "SimonRobinson", 
-"SimonRobinson", "SimonRobinson", "SimonRobinson", "SimonRobinson", 
-"SimonRobinson", "StephenVarga", "StephenVarga", "StephenVarga", 
-"StephenVarga", "StephenVarga", "DesArmstrong", "DesArmstrong", 
-"DesArmstrong", "DesArmstrong", "DesArmstrong", "DesArmstrong", 
-"DesArmstrong", "DesArmstrong", "DesArmstrong", "DesArmstrong", 
-"DesArmstrong", "DesArmstrong", "DesArmstrong", "DesArmstrong", 
-"DesArmstrong", "DesArmstrong", "DesArmstrong", "DesArmstrong", 
-"DesArmstrong", "DesArmstrong", "DesArmstrong", "DesArmstrong", 
-"DesArmstrong", "DesArmstrong", "DesArmstrong", "DesArmstrong", 
-"DesArmstrong", "DesArmstrong", "DesArmstrong", "DesArmstrong", 
-"ToddOishi", "ToddOishi", "ToddOishi", "ToddOishi", "ToddOishi", 
-"ToddOishi", "ToddOishi", "JulienDaguillanes", "JulienDaguillanes", 
-"JulienDaguillanes", "JulienDaguillanes", "JulienDaguillanes", 
-"JulienDaguillanes", "JulienDaguillanes", "JulienDaguillanes", 
-"JulienDaguillanes", "JulienDaguillanes", "JulienDaguillanes", 
-"JulienDaguillanes", "JulienDaguillanes", "JulienDaguillanes", 
-"JulienDaguillanes", "JouniNeste", "JouniNeste", "JouniNeste", 
-"JouniNeste", "JouniNeste", "JouniNeste", "JouniNeste", "SimonGrootemaat", 
-"SimonGrootemaat", "SimonGrootemaat", "SimonGrootemaat", "SimonGrootemaat", 
-"DamienWalsh", "DamienWalsh", "DamienWalsh", "DamienWalsh", "DamienWalsh", 
-"DamienWalsh", "DamienWalsh", "DamienWalsh", "DamienWalsh", "DamienWalsh", 
-"DamienWalsh", "PeterBienek", "PeterBienek", "PeterBienek", "PeterBienek", 
-"PeterBienek", "PeterBienek", "PeterBienek", "PeterBienek", "PeterBienek", 
-"AlessandroSgrani", "AlessandroSgrani", "AlessandroSgrani", "AlessandroSgrani", 
-"AnthonyNaranja", "AnthonyNaranja", "AnthonyNaranja", "AnthonyNaranja", 
-"AnthonyNaranja", "AnthonyNaranja", "AnthonyNaranja", "AnthonyNaranja", 
-"AnthonyNaranja", "AnthonyNaranja", "AnthonyNaranja", "AntonioRodrigues", 
-"AntonioRodrigues", "AntonioRodrigues", "AntonioRodrigues", "RickyLehman", 
-"RickyLehman", "ValerioSantiAmantini", "ValerioSantiAmantini", 
-"ValerioSantiAmantini", "ValerioSantiAmantini", "TorbjornEriksson", 
-"JohnBeaven", "JohnBeaven", "BertrandJacquemin", "BertrandJacquemin", 
-"BertrandJacquemin", "BertrandJacquemin", "BertrandJacquemin", 
-"BertrandJacquemin", "BertrandJacquemin", "BertrandJacquemin", 
-"BertrandJacquemin", "BertrandJacquemin", "BertrandJacquemin", 
-"BertrandJacquemin", "BertrandJacquemin", "BertrandJacquemin", 
-"BertrandJacquemin", "BertrandJacquemin", "BertrandJacquemin", 
-"BertrandJacquemin", "JannePirkkalainen", "JannePirkkalainen", 
-"JannePirkkalainen", "JannePirkkalainen", "JannePirkkalainen", 
-"JannePirkkalainen", "JannePirkkalainen", "JannePirkkalainen", 
-"GaryGlenYoung", "DonaldThom", "DonaldThom", "DonaldThom", "DonaldThom", 
-"DonaldThom", "DonaldThom", "DonaldThom", "DonaldThom", "DonaldThom", 
-"DonaldThom", "DonaldThom", "DonaldThom", "DonaldThom", "MarinkoPuskaric", 
-"MarinkoPuskaric", "MarinkoPuskaric", "MarinkoPuskaric", "MarinkoPuskaric", 
-"MarinkoPuskaric", "MarinkoPuskaric", "TakashiKawahara", "TakashiKawahara", 
-"TakashiKawahara", "MichalBenatinsky", "MichalBenatinsky", "MichalBenatinsky", 
-"MichalBenatinsky", "MichalBenatinsky", "MichalBenatinsky", "MichalBenatinsky", 
-"MichalBenatinsky", "MichalBenatinsky", "MichalBenatinsky", "MichalBenatinsky", 
-"MichalBenatinsky", "HelderRodrigues", "HelderRodrigues", "HelderRodrigues", 
-"HelderRodrigues", "HelderRodrigues", "HelderRodrigues", "MartinDroz", 
-"MartinDroz", "MartinDroz", "MartinDroz", "MartinDroz", "MartinDroz", 
-"MartinDroz", "MartinDroz", "MartinDroz", "MartinDroz", "MartinDroz", 
-"MartinDroz", "MartinDroz", "MartinDroz", "MartinDroz", "MartinDroz", 
-"MartinDroz", "MartinDroz", "MartinDroz", "MartinDroz", "MartinDroz", 
-"MartinDroz", "MartinDroz", "MartinDroz", "LucjanBurda", "LucjanBurda", 
-"LucjanBurda", "LucjanBurda", "LucjanBurda", "LucjanBurda", "LucjanBurda", 
-"LucjanBurda", "LucjanBurda", "LucjanBurda", "LucjanBurda", "HowardCroston", 
-"HowardCroston", "HowardCroston", "HowardCroston", "HowardCroston", 
-"HowardCroston", "HowardCroston", "HowardCroston", "HowardCroston", 
-"HowardCroston", "JoeRiley", "JoeRiley", "JoeRiley", "JoeRiley", 
-"JoeRiley", "EricLelouvrier", "EricLelouvrier", "EricLelouvrier", 
-"EricLelouvrier", "EricLelouvrier", "EricLelouvrier", "EricLelouvrier", 
-"BrianJeremiah", "BrianJeremiah", "BrianJeremiah", "BrianJeremiah", 
-"BrianJeremiah", "BrianJeremiah", "BrianJeremiah", "JohnBeaven", 
-"JohnBeaven", "JohnBeaven", "AntonioRodrigues", "AntonioRodrigues", 
-"AntonioRodrigues", "AntonioRodrigues", "PeterDindic", "PeterDindic", 
-"PeterDindic", "PeterDindic", "PeterDindic", "ValerioSantiAmantini", 
-"ValerioSantiAmantini", "ValerioSantiAmantini", "ValerioSantiAmantini", 
-"ValerioSantiAmantini", "ValerioSantiAmantini", "ValerioSantiAmantini", 
-"ValerioSantiAmantini", "ValerioSantiAmantini", "ValerioSantiAmantini", 
-"JannePirkkalainen", "JannePirkkalainen", "JannePirkkalainen", 
-"JannePirkkalainen", "JannePirkkalainen", "JannePirkkalainen", 
-"JannePirkkalainen", "JannePirkkalainen", "JannePirkkalainen", 
-"JannePirkkalainen", "JannePirkkalainen", "JannePirkkalainen", 
-"JannePirkkalainen", "JannePirkkalainen", "PavelMachan", "PavelMachan", 
-"PavelMachan", "PavelMachan", "PavelMachan", "PavelMachan", "PavelMachan", 
-"PavelMachan", "PavelMachan", "PavelMachan", "PavelMachan", "PavelMachan", 
-"PavelMachan", "PavelMachan", "PavelMachan", "PavelMachan", "PavelMachan", 
-"PavelMachan", "PavelMachan", "StanislawGuzdek", "StanislawGuzdek", 
-"StanislawGuzdek", "StanislawGuzdek", "StanislawGuzdek", "StanislawGuzdek", 
-"StanislawGuzdek", "StanislawGuzdek", "StanislawGuzdek", "StanislawGuzdek", 
-"StanislawGuzdek", "StanislawGuzdek", "StanislawGuzdek", "RickyLehman", 
-"RickyLehman", "RickyLehman", "RickyLehman", "RickyLehman", "RickyLehman", 
-"RickyLehman", "StephenVarga", "ScottTucker", "ScottTucker", 
-"ScottTucker", "ScottTucker", "ScottTucker", "ScottTucker", "AntoninPesek", 
-"AntoninPesek", "AntoninPesek", "AntoninPesek", "AntoninPesek", 
-"AntoninPesek", "AntoninPesek", "AntoninPesek", "AntoninPesek", 
-"AntoninPesek", "AntoninPesek", "AntoninPesek", "AntoninPesek", 
-"AntoninPesek", "AntoninPesek", "AntoninPesek", "AntoninPesek", 
-"AntoninPesek", "SimonRobinson", "SimonRobinson", "SimonRobinson", 
-"SimonRobinson", "SimonRobinson", "SimonRobinson", "SimonRobinson", 
-"SimonRobinson", "SimonRobinson", "SimonRobinson", "SimonRobinson", 
-"SimonRobinson", "SimonRobinson", "SimonRobinson", "SimonRobinson", 
-"SimonRobinson", "SimonRobinson", "SimonRobinson", "SimonRobinson", 
-"SimonRobinson", "SimonRobinson", "SimonRobinson", "SimonRobinson", 
-"SimonRobinson", "SimonRobinson", "PiotrKonieczny", "PiotrKonieczny", 
-"PiotrKonieczny", "PiotrKonieczny", "PiotrKonieczny", "PiotrKonieczny", 
-"PiotrKonieczny", "PiotrKonieczny", "PiotrKonieczny", "PiotrKonieczny", 
-"PiotrKonieczny", "PiotrKonieczny", "PiotrKonieczny", "PiotrKonieczny", 
-"PiotrKonieczny", "PiotrKonieczny", "PiotrKonieczny", "PiotrKonieczny", 
-"ToddOishi", "ToddOishi", "ToddOishi", "ToddOishi", "ToddOishi", 
-"ToddOishi", "ToddOishi", "ToddOishi", "ToddOishi", "ToddOishi", 
-"ToddOishi", "ToddOishi", "ToddOishi", "ToddOishi", "ToddOishi", 
-"ToddOishi", "ToddOishi", "ToddOishi", "ToddOishi", "ToddOishi", 
-"ToddOishi", "ToddOishi", "ToddOishi", "ToddOishi", "ToddOishi", 
-"SimonGrootemaat", "SimonGrootemaat", "SimonGrootemaat", "SimonGrootemaat", 
-"SimonGrootemaat", "SimonGrootemaat", "SimonGrootemaat", "SimonGrootemaat", 
-"SimonGrootemaat", "SimonGrootemaat", "SimonGrootemaat", "DesArmstrong", 
-"DesArmstrong", "DesArmstrong", "DesArmstrong", "DesArmstrong", 
-"DesArmstrong", "DesArmstrong", "DesArmstrong", "DesArmstrong", 
-"DesArmstrong", "DesArmstrong", "DesArmstrong", "DesArmstrong", 
-"DesArmstrong", "DesArmstrong", "DesArmstrong", "DesArmstrong", 
-"DesArmstrong", "DesArmstrong", "DesArmstrong", "DesArmstrong", 
-"DesArmstrong", "DesArmstrong", "DesArmstrong", "JouniNeste", 
-"JouniNeste", "JouniNeste", "JouniNeste", "JouniNeste", "JouniNeste", 
-"JouniNeste", "JouniNeste", "JouniNeste", "MichalBenatinsky", 
-"MichalBenatinsky", "MichalBenatinsky", "MichalBenatinsky", "MichalBenatinsky", 
-"MichalBenatinsky", "JoshStephens", "JoshStephens", "JoshStephens", 
-"JoshStephens", "JoshStephens", "JoshStephens", "JoshStephens", 
-"JarkkoSuominen", "JarkkoSuominen", "JarkkoSuominen", "JarkkoSuominen", 
-"JarkkoSuominen", "JarkkoSuominen", "JarkkoSuominen", "JarkkoSuominen", 
-"JarkkoSuominen", "JarkkoSuominen", "JarkkoSuominen", "JohnTrench", 
-"JohnTrench", "JohnTrench", "JohnTrench", "JohnTrench", "JohnTrench", 
-"JohnTrench", "JohnTrench", "JohnTrench", "JohnTrench", "JohnTrench", 
-"JohnTrench", "JohnTrench", "JohnTrench", "JohnTrench", "JohnTrench", 
-"JohnTrench", "JohnTrench", "JohnTrench", "AaronWest", "AaronWest", 
-"AaronWest", "AaronWest", "AaronWest", "AaronWest", "AaronWest", 
-"AaronWest", "AaronWest", "AaronWest", "AaronWest", "AaronWest", 
-"AaronWest", "AaronWest", "AaronWest", "AaronWest", "AaronWest", 
-"AaronWest", "AaronWest", "AaronWest", "AaronWest", "AaronWest", 
-"AaronWest", "AaronWest", "AaronWest", "AaronWest", "TakashiKawahara", 
-"TakashiKawahara", "TakashiKawahara", "RobertVanRensburg", "RobertVanRensburg", 
-"RobertVanRensburg", "RobertVanRensburg", "RobertVanRensburg", 
-"EricLelouvrier", "EricLelouvrier", "EricLelouvrier", "EricLelouvrier", 
-"EricLelouvrier", "EricLelouvrier", "EricLelouvrier", "EricLelouvrier", 
-"EricLelouvrier", "EricLelouvrier", "EricLelouvrier", "EricLelouvrier", 
-"EricLelouvrier", "EricLelouvrier", "EricLelouvrier", "EricLelouvrier", 
-"EricLelouvrier", "EricLelouvrier", "EricLelouvrier", "EricLelouvrier", 
-"EricLelouvrier", "EricLelouvrier", "EricLelouvrier", "EricLelouvrier", 
-"EricLelouvrier", "EricLelouvrier", "EricLelouvrier", "EricLelouvrier", 
-"BoskoBarisic", "BoskoBarisic", "JohnBuckley", "JohnBuckley", 
-"JohnBuckley", "LloydStruther", "LloydStruther", "LloydStruther", 
-"LloydStruther", "LloydStruther", "LloydStruther", "LloydStruther", 
-"LloydStruther", "LloydStruther", "LloydStruther", "AndreSteenkamp", 
-"AndreSteenkamp", "AndreSteenkamp", "AndreSteenkamp", "AndreSteenkamp", 
-"AndreSteenkamp", "AndreSteenkamp", "AndreSteenkamp", "AndreSteenkamp", 
-"AndreSteenkamp", "CraigColtman", "CraigColtman", "CraigColtman", 
-"CraigColtman", "CraigColtman", "CraigColtman", "CraigColtman", 
-"CraigColtman", "CraigColtman", "CraigColtman", "CraigColtman", 
-"CraigColtman", "CraigColtman", "CraigColtman", "CraigColtman", 
-"CraigColtman", "CraigColtman", "CraigColtman", "AndrewDixon", 
-"AndrewDixon", "AndrewDixon", "AndrewDixon", "AndrewDixon", "AndrewDixon", 
-"AndrewDixon", "AndrewDixon", "AndrewDixon", "AndrewDixon", "AndrewDixon", 
-"AndrewDixon", "AndrewDixon", "PauloMorais", "PauloMorais", "PauloMorais", 
-"PauloMorais", "PauloMorais", "PauloMorais", "PauloMorais", "PauloMorais", 
-"PauloMorais", "PauloMorais", "PauloMorais", "PauloMorais", "PauloMorais", 
-"PauloMorais", "PauloMorais", "PauloMorais", "PauloMorais", "PauloMorais", 
-"JohnNishi", "JohnNishi", "JohnNishi", "JohnNishi", "JohnNishi", 
-"JohnNishi", "JohnNishi", "JohnNishi", "JohnNishi", "JohnNishi", 
-"JohnNishi", "JohnNishi", "JohnNishi", "JohnNishi", "JohnNishi", 
-"JohnNishi", "JohnNishi", "JohnNishi", "JohnNishi", "JohnNishi", 
-"JohnNishi", "JohnNishi", "JohnNishi", "JohnNishi", "BorisDzurek", 
-"BorisDzurek", "BorisDzurek", "BorisDzurek", "BorisDzurek", "BorisDzurek", 
-"BorisDzurek", "BorisDzurek", "BorisDzurek", "BorisDzurek", "BorisDzurek", 
-"BorisDzurek", "BorisDzurek", "BorisDzurek", "BorisDzurek", "BorisDzurek", 
-"BorisDzurek", "BorisDzurek", "BorisDzurek", "BorisDzurek", "ArturTrzaskos", 
-"ArturTrzaskos", "ArturTrzaskos", "ArturTrzaskos", "ArturTrzaskos", 
-"ArturTrzaskos", "MarkYelland", "MarkYelland", "GianlucaMazzocco", 
-"GianlucaMazzocco", "GianlucaMazzocco", "GianlucaMazzocco", "GianlucaMazzocco", 
-"GianlucaMazzocco", "GianlucaMazzocco", "GianlucaMazzocco", "GianlucaMazzocco", 
-"GeorgeDaniel", "GeorgeDaniel", "GeorgeDaniel", "GeorgeDaniel", 
-"GeorgeDaniel", "GeorgeDaniel", "GeorgeDaniel", "GeorgeDaniel", 
-"GeorgeDaniel", "GeorgeDaniel", "GeorgeDaniel", "GeorgeDaniel", 
-"GeorgeDaniel", "GeorgeDaniel", "GeorgeDaniel", "GeorgeDaniel", 
-"GeorgeDaniel", "GeorgeDaniel", "GeorgeDaniel", "GeorgeDaniel", 
-"GeorgeDaniel", "GeorgeDaniel", "GeorgeDaniel", "GeorgeDaniel", 
-"GeorgeDaniel", "JoseDias", "JoseDias", "JoseDias", "JoseDias", 
-"JoseDias", "JoseDias", "ChristopheIdre", "ChristopheIdre", "ChristopheIdre", 
-"ChristopheIdre", "ChristopheIdre", "ChristopheIdre", "ChristopheIdre", 
-"ChristopheIdre", "ChristopheIdre", "ChristopheIdre", "ChristopheIdre", 
-"ChristopheIdre", "ChristopheIdre", "VernBarby", "VernBarby", 
-"VernBarby", "VernBarby", "VernBarby", "VernBarby", "VernBarby", 
-"VernBarby", "WilliamKavenagh", "WilliamKavenagh", "WilliamKavenagh", 
-"WilliamKavenagh", "WilliamKavenagh", "WilliamKavenagh", "WilliamKavenagh", 
-"WilliamKavenagh", "WilliamKavenagh", "WilliamKavenagh", "WilliamKavenagh", 
-"WilliamKavenagh", "WilliamKavenagh", "WilliamKavenagh", "WilliamKavenagh", 
-"WilliamKavenagh", "WilliamKavenagh", "WilliamKavenagh", "WilliamKavenagh", 
-"WilliamKavenagh", "WilliamKavenagh", "WilliamKavenagh", "WilliamKavenagh", 
-"WilliamKavenagh", "WilliamKavenagh", "WilliamKavenagh", "WilliamKavenagh", 
-"WilliamKavenagh", "WilliamKavenagh", "StefanFlorea", "StefanFlorea", 
-"StefanFlorea", "StefanFlorea", "StefanFlorea", "StefanFlorea", 
-"JohnFoxton", "JohnFoxton", "JohnFoxton", "JohnFoxton", "JohnFoxton", 
-"JohnFoxton", "JohnFoxton", "JohnFoxton", "JohnFoxton", "JohnFoxton", 
-"JohnFoxton", "JohnFoxton", "JohnFoxton", "JohnFoxton", "JohnFoxton", 
-"JohnFoxton", "TorbjornEriksson", "TorbjornEriksson", "TorbjornEriksson", 
-"TorbjornEriksson", "TorbjornEriksson", "TorbjornEriksson", "JohnBell", 
-"JohnBell", "JohnBell", "JohnBell", "JohnBell", "JohnBell", "JohnBell", 
-"JohnBell", "JohnBell", "JohnBell", "JohnBell", "JohnBell", "JohnBell", 
-"JohnBell", "JohnBell", "JohnBell", "JohnBell", "JohnBell", "JohnBell", 
-"JohnBell", "JanBartko", "JanBartko", "JanBartko", "JanBartko", 
-"JanBartko", "JanBartko", "JanBartko", "JanBartko", "JanBartko", 
-"JanBartko", "JanBartko", "JanBartko", "JanBartko", "JanBartko", 
-"JanBartko", "JanBartko", "JanBartko", "JanBartko", "JanBartko", 
-"JanBartko", "JanBartko", "JanBartko", "MisakoIshimura", "MisakoIshimura", 
-"MisakoIshimura", "MisakoIshimura", "GaryGlenYoung", "GaryGlenYoung", 
-"GaryGlenYoung", "GaryGlenYoung", "GaryGlenYoung", "GaryGlenYoung", 
-"GaryGlenYoung", "GaryGlenYoung", "GaryGlenYoung", "GaryGlenYoung", 
-"GaryGlenYoung", "GaryGlenYoung", "JanKwisthout", "JohnHorsey", 
-"JohnHorsey", "JohnHorsey", "JohnHorsey", "JohnHorsey", "JohnHorsey", 
-"JohnHorsey", "JohnHorsey", "JohnHorsey", "JohnHorsey", "JohnHorsey", 
-"JohnHorsey", "JohnHorsey", "JohnHorsey", "JohnHorsey", "JohnHorsey", 
-"JohnHorsey", "JohnHorsey", "JohnHorsey", "JohnHorsey", "JohnHorsey", 
-"JohnHorsey", "JohnHorsey", "JohnHorsey", "JohnHorsey", "JohnHorsey", 
-"JohnHorsey", "JohnHorsey", "AnthonyNaranja", "AnthonyNaranja", 
-"AnthonyNaranja", "AnthonyNaranja", "AnthonyNaranja", "BertrandJacquemin", 
-"BertrandJacquemin", "BertrandJacquemin", "BertrandJacquemin", 
-"BertrandJacquemin", "BertrandJacquemin", "BertrandJacquemin", 
-"BertrandJacquemin", "BertrandJacquemin", "BertrandJacquemin", 
-"BertrandJacquemin", "KiyoshiNakagawa", "KiyoshiNakagawa", "KiyoshiNakagawa", 
-"KiyoshiNakagawa", "KiyoshiNakagawa", "KiyoshiNakagawa", "KiyoshiNakagawa", 
-"KiyoshiNakagawa", "KiyoshiNakagawa", "KiyoshiNakagawa", "KiyoshiNakagawa", 
-"KiyoshiNakagawa", "KiyoshiNakagawa", "KiyoshiNakagawa", "KiyoshiNakagawa", 
-"KiyoshiNakagawa", "KiyoshiNakagawa", "KiyoshiNakagawa", "KiyoshiNakagawa", 
-"KiyoshiNakagawa", "PeterBienek", "PeterBienek", "PeterBienek", 
-"PeterBienek", "PeterBienek", "PeterBienek", "PeterBienek", "PeterBienek", 
-"PeterBienek", "PeterBienek", "PeterBienek", "PeterBienek", "PeterBienek", 
-"PeterBienek", "PeterBienek", "PeterBienek", "PeterBienek", "PeterBienek", 
-"PeterBienek", "PeterBienek", "PeterBienek", "NunoDuarte", "NunoDuarte", 
-"NunoDuarte", "NunoDuarte", "NunoDuarte", "NunoDuarte", "NunoDuarte", 
-"NunoDuarte", "NunoDuarte", "NunoDuarte", "NunoDuarte", "NunoDuarte", 
-"NunoDuarte", "NunoDuarte", "NunoDuarte", "BretBishop", "BretBishop", 
-"BretBishop", "BretBishop", "BretBishop", "BretBishop", "BretBishop", 
-"BretBishop", "BretBishop", "BretBishop", "BretBishop", "BretBishop", 
-"BretBishop", "BretBishop", "BretBishop", "BretBishop", "BretBishop", 
-"BretBishop", "BretBishop", "BretBishop", "BretBishop", "JulienDaguillanes", 
-"JulienDaguillanes", "JulienDaguillanes", "JulienDaguillanes", 
-"JulienDaguillanes", "JulienDaguillanes", "JulienDaguillanes", 
-"JulienDaguillanes", "JulienDaguillanes", "JulienDaguillanes", 
-"JulienDaguillanes", "JulienDaguillanes", "JulienDaguillanes", 
-"JulienDaguillanes", "JulienDaguillanes", "JulienDaguillanes", 
-"JulienDaguillanes", "JulienDaguillanes", "JulienDaguillanes", 
-"JulienDaguillanes", "JulienDaguillanes", "JulienDaguillanes", 
-"JulienDaguillanes", "JulienDaguillanes", "JulienDaguillanes", 
-"JulienDaguillanes", "JulienDaguillanes", "JulienDaguillanes", 
-"AlessandroSgrani", "AlessandroSgrani", "AlessandroSgrani", "AlessandroSgrani", 
-"AlessandroSgrani", "AlessandroSgrani", "AlessandroSgrani", "AlessandroSgrani", 
-"AlessandroSgrani", "AlessandroSgrani", "AlessandroSgrani", "AlessandroSgrani", 
-"AlessandroSgrani", "AlessandroSgrani", "AlessandroSgrani", "AlessandroSgrani", 
-"AlessandroSgrani", "AlessandroSgrani", "AlessandroSgrani", "AlessandroSgrani", 
-"MiroslavKaticic", "MiroslavKaticic", "MiroslavKaticic", "MiroslavKaticic", 
-"MiroslavKaticic", "MiroslavKaticic", "MiroslavKaticic", "MiroslavKaticic", 
-"MiroslavKaticic", "MiroslavKaticic", "MiroslavKaticic", "MiroslavKaticic", 
-"MiroslavKaticic", "KimTribe", "KimTribe", "KimTribe", "KimTribe", 
-"KimTribe", "TimRolston", "TimRolston", "TimRolston", "TimRolston", 
-"TimRolston", "TimRolston", "TimRolston", "DamienWalsh", "DamienWalsh", 
-"DamienWalsh", "DamienWalsh", "DamienWalsh", "DamienWalsh", "DamienWalsh", 
-"DamienWalsh", "DamienWalsh", "DamienWalsh", "DamienWalsh", "DamienWalsh", 
-"DamienWalsh", "DamienWalsh", "DamienWalsh", "DamienWalsh", "DamienWalsh", 
-"DamienWalsh", "DamienWalsh", "DamienWalsh", "MarinkoPuskaric", 
-"MarinkoPuskaric", "MarinkoPuskaric", "MarinkoPuskaric", "MarinkoPuskaric", 
-"MarinkoPuskaric", "MarinkoPuskaric", "MarinkoPuskaric", "LucaPapandrea", 
-"LucaPapandrea", "LucaPapandrea", "LucaPapandrea", "LucaPapandrea", 
-"LucaPapandrea", "LucaPapandrea", "LucaPapandrea", "LucaPapandrea", 
-"LucaPapandrea", "LucaPapandrea", "LucaPapandrea", "PeterElberse", 
-"PeterElberse", "PeterElberse", "PeterElberse", "PeterElberse", 
-"PeterElberse", "PeterElberse", "PeterElberse", "PeterElberse", 
-"PeterElberse", "PeterElberse", "PeterElberse", "PeterElberse", 
-"PeterElberse", "PeterElberse", "PeterElberse", "PeterElberse", 
-"PeterElberse", "PeterElberse", "PeterElberse", "PeterElberse", 
-"HowardCroston", "HowardCroston", "HowardCroston", "HowardCroston", 
-"HowardCroston", "HowardCroston", "HowardCroston", "HowardCroston", 
-"HowardCroston", "HowardCroston", "HowardCroston", "HowardCroston", 
-"HowardCroston", "HowardCroston", "HowardCroston", "LucjanBurda", 
-"LucjanBurda", "LucjanBurda", "LucjanBurda", "LucjanBurda", "LucjanBurda", 
-"LucjanBurda", "LucjanBurda", "LucjanBurda", "LucjanBurda", "LucjanBurda", 
-"LucjanBurda", "LucjanBurda", "LucjanBurda", "LucjanBurda", "LucjanBurda", 
-"LucjanBurda", "LucjanBurda", "LucjanBurda", "LucjanBurda", "LucjanBurda", 
-"LucjanBurda", "MartinDroz", "MartinDroz", "MartinDroz", "MartinDroz", 
-"MartinDroz", "MartinDroz", "MartinDroz", "MartinDroz", "MartinDroz", 
-"MartinDroz", "MartinDroz", "MartinDroz", "MartinDroz", "MartinDroz", 
-"MartinDroz", "MartinDroz", "MartinDroz", "MartinDroz", "MartinDroz", 
-"MartinDroz", "MartinDroz", "MartinDroz", "MartinDroz", "MartinDroz", 
-"JoeRiley", "JoeRiley", "JoeRiley", "JoeRiley", "JoeRiley", "JoeRiley", 
-"JoeRiley", "JoeRiley", "JoeRiley", "JoeRiley", "JoeRiley", "JoeRiley", 
-"JoeRiley", "JoeRiley", "JoeRiley", "JoeRiley", "JoeRiley", "JoeRiley", 
-"HelderRodrigues", "HelderRodrigues", "HelderRodrigues", "HelderRodrigues", 
-"HelderRodrigues", "HelderRodrigues", "HelderRodrigues", "HelderRodrigues", 
-"HelderRodrigues", "HelderRodrigues", "DonaldThom", "DonaldThom", 
-"DonaldThom", "DonaldThom", "DonaldThom", "DonaldThom", "DonaldThom", 
-"DonaldThom", "DonaldThom", "DonaldThom", "DonaldThom", "DonaldThom", 
-"DonaldThom", "DonaldThom", "DonaldThom", "DonaldThom", "DonaldThom", 
-"DonaldThom", "DonaldThom", "DonaldThom", "DonaldThom", "DonaldThom", 
-"SabahudinPehadzicBIHI", "SabahudinPehadzicBIHI", "SabahudinPehadzicBIHI", 
-"SabahudinPehadzicBIHI", "LanceEgan", "LanceEgan", "LanceEgan", 
-"LanceEgan", "LanceEgan", "LanceEgan", "LanceEgan", "LanceEgan", 
-"LanceEgan", "LanceEgan", "LanceEgan", "LanceEgan", "LanceEgan", 
-"LanceEgan", "LanceEgan", "LanceEgan", "LanceEgan", "LanceEgan", 
-"LanceEgan", "LanceEgan", "LanceEgan", "LanceEgan", "LanceEgan", 
-"LanceEgan", "LanceEgan", "LanceEgan", "LanceEgan", "LanceEgan", 
-"LanceEgan", "LanceEgan", "MarekWalczyk", "MarekWalczyk", "MarekWalczyk", 
-"MarekWalczyk", "MarekWalczyk", "MarekWalczyk", "MarekWalczyk", 
-"MarekWalczyk", "MarekWalczyk", "MarekWalczyk", "MarekWalczyk", 
-"MarekWalczyk", "MarekWalczyk", "MarekWalczyk", "MarekWalczyk", 
-"MarekWalczyk", "MarekWalczyk", "MarekWalczyk", "MarekWalczyk", 
-"MarekWalczyk", "MarekWalczyk", "YoshikoIzumiya", "YoshikoIzumiya", 
-"YoshikoIzumiya", "StanislawMankou", "StanislawMankou", "StanislawMankou", 
-"StanislawMankou", "StanislawMankou", "StanislawMankou", "StanislawMankou", 
-"StanislawMankou", "StanislawMankou", "StanislawMankou", "HansBock", 
-"HansBock", "HansBock", "HansBock", "HansBock", "HansBock", "HansBock", 
-"HansBock", "HansBock", "HansBock", "HansBock", "HansBock", "HansBock", 
-"HansBock", "MichaelHeckler", "MichaelHeckler", "MichaelHeckler", 
-"YannCaleri", "YannCaleri", "YannCaleri", "YannCaleri", "YannCaleri", 
-"YannCaleri", "YannCaleri", "YannCaleri", "YannCaleri", "YannCaleri", 
-"YannCaleri", "YannCaleri", "YannCaleri", "YannCaleri", "YannCaleri", 
-"YannCaleri", "TomasStarychfojtu", "TomasStarychfojtu", "TomasStarychfojtu", 
-"TomasStarychfojtu", "TomasStarychfojtu", "TomasStarychfojtu", 
-"TomasStarychfojtu", "TomasStarychfojtu", "TomasStarychfojtu", 
-"TomasStarychfojtu", "TomasStarychfojtu", "TomasStarychfojtu", 
-"TomasStarychfojtu", "TomasStarychfojtu", "TomasStarychfojtu", 
-"TomasStarychfojtu", "TomasStarychfojtu", "TomasStarychfojtu", 
-"TomasStarychfojtu", "TomasStarychfojtu", "TomasStarychfojtu", 
-"TomasStarychfojtu", "TomasStarychfojtu", "TomasStarychfojtu", 
-"TomasStarychfojtu", "TomasStarychfojtu", "TomasStarychfojtu", 
-"TomasStarychfojtu", "TomasStarychfojtu", "TomasStarychfojtu", 
-"SandroSoldarini", "SandroSoldarini", "SandroSoldarini", "SandroSoldarini", 
-"SandroSoldarini", "SandroSoldarini", "SandroSoldarini", "SandroSoldarini", 
-"SandroSoldarini", "SandroSoldarini", "SandroSoldarini", "SandroSoldarini", 
-"SandroSoldarini", "SandroSoldarini", "SandroSoldarini", "SandroSoldarini", 
-"SandroSoldarini", "SandroSoldarini", "SandroSoldarini", "SandroSoldarini", 
-"SandroSoldarini", "OlliToivonen", "OlliToivonen", "OlliToivonen", 
-"OlliToivonen", "OlliToivonen", "OlliToivonen", "OlliToivonen", 
-"OlliToivonen", "OlliToivonen", "OlliToivonen", "OlliToivonen", 
-"OlliToivonen", "JamieHarries", "JamieHarries", "JamieHarries", 
-"JamieHarries", "JamieHarries", "JamieHarries", "JamieHarries", 
-"MikeTinnion", "MikeTinnion", "MikeTinnion", "MikeTinnion", "MikeTinnion", 
-"MikeTinnion", "MikeTinnion", "MikeTinnion", "MikeTinnion", "MikeTinnion", 
-"MikeTinnion", "MikeTinnion", "TomasAdam", "TomasAdam", "TomasAdam", 
-"TomasAdam", "TomasAdam", "TomasAdam", "TomasAdam", "TomasAdam", 
-"TomasAdam", "TomasAdam", "TomasAdam", "TomasAdam", "TomasAdam", 
-"TomasAdam", "TomasAdam", "TomasAdam", "TomasAdam", "TomasAdam", 
-"TomasAdam", "TomasAdam", "TomasAdam", "TomasAdam", "TomasAdam", 
-"TomasAdam", "VilleAnttiJaakkola", "VilleAnttiJaakkola", "VilleAnttiJaakkola", 
-"VilleAnttiJaakkola", "VilleAnttiJaakkola", "VilleAnttiJaakkola", 
-"VilleAnttiJaakkola", "VilleAnttiJaakkola", "VilleAnttiJaakkola", 
-"IvicaMagdic", "IvicaMagdic", "IvicaMagdic", "IvicaMagdic", "IvicaMagdic", 
-"IvicaMagdic", "IvicaMagdic", "IvicaMagdic", "IvicaMagdic", "IvicaMagdic", 
-"TerenceCourtoreille", "TerenceCourtoreille", "TerenceCourtoreille", 
-"TerenceCourtoreille", "TerenceCourtoreille", "TerenceCourtoreille", 
-"TerenceCourtoreille", "TerenceCourtoreille", "TerenceCourtoreille", 
-"TerenceCourtoreille", "TerenceCourtoreille", "TerenceCourtoreille", 
-"TerenceCourtoreille", "TerenceCourtoreille", "TerenceCourtoreille", 
-"TerenceCourtoreille", "TerenceCourtoreille", "TerenceCourtoreille", 
-"TerenceCourtoreille", "TerenceCourtoreille", "TerenceCourtoreille", 
-"TerenceCourtoreille", "TerenceCourtoreille", "TerenceCourtoreille", 
-"TerenceCourtoreille", "TerenceCourtoreille", "TerenceCourtoreille", 
-"TerenceCourtoreille", "SeiichiKomatsuzawa", "SeiichiKomatsuzawa", 
-"SeiichiKomatsuzawa", "SeiichiKomatsuzawa", "SeiichiKomatsuzawa", 
-"SeiichiKomatsuzawa", "SeiichiKomatsuzawa", "SeiichiKomatsuzawa", 
-"SeiichiKomatsuzawa", "SeiichiKomatsuzawa", "SeiichiKomatsuzawa", 
-"SeiichiKomatsuzawa", "CraigFarrar", "CraigFarrar", "CraigFarrar", 
-"CraigFarrar", "CraigFarrar", "CraigFarrar", "CraigFarrar", "CraigFarrar", 
-"CraigFarrar", "CraigFarrar", "CraigFarrar", "CraigFarrar", "CraigFarrar", 
-"CraigFarrar", "CraigFarrar", "CraigFarrar", "CraigFarrar", "CraigFarrar", 
-"CraigFarrar", "CraigFarrar", "CraigFarrar", "CraigFarrar", "CraigFarrar", 
-"CraigFarrar", "CraigFarrar", "CraigFarrar", "CraigFarrar", "CraigFarrar", 
-"CraigFarrar", "MiroslavAntal", "MiroslavAntal", "MiroslavAntal", 
-"MiroslavAntal", "MiroslavAntal", "MiroslavAntal", "MiroslavAntal", 
-"MiroslavAntal", "MiroslavAntal", "MiroslavAntal", "MiroslavAntal", 
-"MiroslavAntal", "MiroslavAntal", "MiroslavAntal", "MiroslavAntal", 
-"ReneKoops", "ReneKoops", "ReneKoops", "ReneKoops", "ReneKoops", 
-"ReneKoops", "ReneKoops", "TakashiKawahara", "TakashiKawahara", 
-"DonaldThom", "DonaldThom", "DavidEricDavies", "DavidEricDavies", 
-"RobertVanRensburg", "RobertVanRensburg", "MichalBenatinsky", 
-"JoeRiley", "JoeRiley", "JoeRiley", "JoeRiley", "PeterElberse", 
-"JohnTrench", "HelderRodrigues", "HelderRodrigues", "JoshStephens", 
-"JoshStephens", "JoshStephens", "JoshStephens", "JoshStephens", 
-"MartinDroz", "MartinDroz", "MartinDroz", "MartinDroz", "MartinDroz", 
-"AaronWest", "AaronWest", "AaronWest", "AaronWest", "LucjanBurda", 
-"LucjanBurda", "LucjanBurda", "LucjanBurda", "LucjanBurda", "LucjanBurda", 
-"LucaPapandrea", "LucaPapandrea", "LucaPapandrea", "JarkkoSuominen", 
-"JarkkoSuominen", "HowardCroston", "HowardCroston", "HowardCroston", 
-"VilleAnttiJaakkola", "VilleAnttiJaakkola", "VilleAnttiJaakkola", 
-"VilleAnttiJaakkola", "VernBarby", "VernBarby", "VernBarby", 
-"VernBarby", "VernBarby", "VernBarby", "WilliamKavenagh", "WilliamKavenagh", 
-"WilliamKavenagh", "WilliamKavenagh", "WilliamKavenagh", "WilliamKavenagh", 
-"WilliamKavenagh", "WilliamKavenagh", "WilliamKavenagh", "TerenceCourtoreille", 
-"TerenceCourtoreille", "TerenceCourtoreille", "SeiichiKomatsuzawa", 
-"SeiichiKomatsuzawa", "SeiichiKomatsuzawa", "SeiichiKomatsuzawa", 
-"SeiichiKomatsuzawa", "GeorgeDaniel", "GeorgeDaniel", "MarkYelland", 
-"MarkYelland", "MiroslavAntal", "MiroslavAntal", "ReneKoops", 
-"ReneKoops", "CraigFarrar", "CraigFarrar", "GianlucaMazzocco", 
-"GianlucaMazzocco", "MikeTinnion", "MikeTinnion", "MikeTinnion", 
-"MikeTinnion", "ArturTrzaskos", "ArturTrzaskos", "ArturTrzaskos", 
-"TomasAdam", "TomasAdam", "TomasAdam", "TomasAdam", "TomasAdam", 
-"TomasAdam", "TomasAdam", "TomasAdam", "JoseDias", "JoseDias", 
-"JoseDias", "JoseDias", "JoseDias", "JamieHarries", "JamieHarries", 
-"JamieHarries", "JamieHarries", "ChristopheIdre", "ChristopheIdre", 
-"BrianJeremiah", "PavelMachan", "TorbjornEriksson", "TorbjornEriksson", 
-"TorbjornEriksson", "TorbjornEriksson", "TorbjornEriksson", "TorbjornEriksson", 
-"StanislawGuzdek", "StanislawGuzdek", "JannePirkkalainen", "JannePirkkalainen", 
-"JannePirkkalainen", "JannePirkkalainen", "JannePirkkalainen", 
-"JannePirkkalainen", "AidenHodgins", "RickyLehman", "JanKwisthout", 
-"JanKwisthout", "JohnHorsey", "JohnHorsey", "JohnHorsey", "JohnHorsey", 
-"RandyTaylor", "RandyTaylor", "RandyTaylor", "RandyTaylor", "RandyTaylor", 
-"AntonioRodrigues", "JohnBell", "JohnBell", "JanBartko", "JanBartko", 
-"ValerioSantiAmantini", "ValerioSantiAmantini", "ValerioSantiAmantini", 
-"ValerioSantiAmantini", "ValerioSantiAmantini", "AnthonyNaranja", 
-"GaryGlenYoung", "GaryGlenYoung", "GaryGlenYoung", "GaryGlenYoung", 
-"GaryGlenYoung", "GaryGlenYoung", "TomasStarychfojtu", "TomasStarychfojtu", 
-"TomasStarychfojtu", "JohnNishi", "JohnNishi", "MichaelHeckler", 
-"MichaelHeckler", "MichaelHeckler", "MichaelHeckler", "MichaelHeckler", 
-"BorisDzurek", "BorisDzurek", "BorisDzurek", "BorisDzurek", "SandroSoldarini", 
-"SandroSoldarini", "SandroSoldarini", "SandroSoldarini", "HansBock", 
-"OlliToivonen", "OlliToivonen", "OlliToivonen", "OlliToivonen", 
-"JohnBuckley", "JohnBuckley", "JohnBuckley", "JohnBuckley", "BoskoBarisic", 
-"BoskoBarisic", "LloydStruther", "LloydStruther", "LloydStruther", 
-"MarekWalczyk", "LanceEgan", "LanceEgan", "LanceEgan", "LanceEgan", 
-"AndrewDixon", "AndrewDixon", "AndrewDixon", "ThibaultGuilpain", 
-"ThibaultGuilpain", "ThibaultGuilpain", "StanislawMankou", "StanislawMankou", 
-"CraigColtman", "CraigColtman", "NunoDuarte", "MiroslavKaticic", 
-"SimonRobinson", "SimonRobinson", "SimonRobinson", "SimonRobinson", 
-"SimonRobinson", "SimonRobinson", "SimonRobinson", "SimonRobinson", 
-"SimonRobinson", "SimonRobinson", "SimonRobinson", "SimonRobinson", 
-"SimonRobinson", "SimonRobinson", "SimonRobinson", "SimonRobinson", 
-"SimonRobinson", "DamienWalsh", "DamienWalsh", "DamienWalsh", 
-"DamienWalsh", "DamienWalsh", "DamienWalsh", "DamienWalsh", "PiotrKonieczny", 
-"PiotrKonieczny", "PiotrKonieczny", "DesArmstrong", "DesArmstrong", 
-"DesArmstrong", "DesArmstrong", "DesArmstrong", "DesArmstrong", 
-"SimonGrootemaat", "TimRolston", "AlessandroSgrani", "AlessandroSgrani", 
-"ScottTucker", "ScottTucker", "ScottTucker", "StephenVarga", 
-"JulienDaguillanes", "JulienDaguillanes", "JulienDaguillanes", 
-"JulienDaguillanes", "JulienDaguillanes", "JulienDaguillanes", 
-"JulienDaguillanes", "KiyoshiNakagawa", "KiyoshiNakagawa", "KiyoshiNakagawa", 
-"KiyoshiNakagawa", "KiyoshiNakagawa", "KiyoshiNakagawa", "ToddOishi", 
-"ToddOishi", "ToddOishi", "JouniNeste", "JouniNeste", "AntoninPesek", 
-"AntoninPesek", "AntoninPesek", "AntoninPesek", "BretBishop", 
-"KimTribe", "KimTribe", "KimTribe", "KimTribe", "HowardCroston", 
-"HowardCroston", "JoeRiley", "LucjanBurda", "LucjanBurda", "JoshStephens", 
-"JoshStephens", "TakashiKawahara", "TakashiKawahara", "TakashiKawahara", 
-"MartinDroz", "LucaPapandrea", "AaronWest", "AaronWest", "DavidEricDavies", 
-"DavidEricDavies", "DavidEricDavies", "EricLelouvrier", "EricLelouvrier", 
-"RobertVanRensburg", "RobertVanRensburg", "RobertVanRensburg", 
-"DonaldThom", "DonaldThom", "DonaldThom", "DonaldThom", "DonaldThom", 
-"MichalBenatinsky", "JohnTrench", "JohnTrench", "AnthonyNaranja", 
-"AnthonyNaranja", "AnthonyNaranja", "StanislawGuzdek", "JanBartko", 
-"JanBartko", "AntonioRodrigues", "AidenHodgins", "AidenHodgins", 
-"RandyTaylor", "RandyTaylor", "RandyTaylor", "JohnHorsey", "JohnHorsey", 
-"JohnHorsey", "JohnHorsey", "JohnHorsey", "JohnHorsey", "JohnHorsey", 
-"JohnHorsey", "JohnHorsey", "JohnHorsey", "MisakoIshimura", "ValerioSantiAmantini", 
-"GaryGlenYoung", "GaryGlenYoung", "GaryGlenYoung", "TorbjornEriksson", 
-"TorbjornEriksson", "RickyLehman", "RickyLehman", "PavelMachan", 
-"JohnBell", "JohnBell", "JohnBell", "JohnBell", "JohnBell", "JohnBell", 
-"JanKwisthout", "JanKwisthout", "BertrandJacquemin", "BertrandJacquemin", 
-"BertrandJacquemin", "BertrandJacquemin", "BertrandJacquemin", 
-"BertrandJacquemin", "BrianJeremiah", "BrianJeremiah", "JannePirkkalainen", 
-"JannePirkkalainen", "JannePirkkalainen", "JannePirkkalainen", 
-"IvicaMagdic", "ArturTrzaskos", "ArturTrzaskos", "ArturTrzaskos", 
-"VernBarby", "VernBarby", "VernBarby", "VernBarby", "MiroslavAntal", 
-"MiroslavAntal", "MarkYelland", "MarkYelland", "MarkYelland", 
-"TomasAdam", "TomasAdam", "JamieHarries", "JamieHarries", "JamieHarries", 
-"SeiichiKomatsuzawa", "ReneKoops", "ReneKoops", "ReneKoops", 
-"MikeTinnion", "MikeTinnion", "GianlucaMazzocco", "GianlucaMazzocco", 
-"StefanFlorea", "StefanFlorea", "WilliamKavenagh", "CraigFarrar", 
-"CraigFarrar", "CraigFarrar", "ChristopheIdre", "ChristopheIdre", 
-"ChristopheIdre", "ChristopheIdre", "ChristopheIdre", "ChristopheIdre", 
-"ChristopheIdre", "ChristopheIdre", "ChristopheIdre", "ChristopheIdre", 
-"JoseDias", "JoseDias", "JoseDias", "TerenceCourtoreille", "TerenceCourtoreille", 
-"PiotrKonieczny", "PiotrKonieczny", "PiotrKonieczny", "PeterBienek", 
-"PeterBienek", "PeterBienek", "AlessandroSgrani", "AlessandroSgrani", 
-"DesArmstrong", "StephenVarga", "TimRolston", "TimRolston", "JouniNeste", 
-"JouniNeste", "JouniNeste", "JouniNeste", "JouniNeste", "JouniNeste", 
-"DamienWalsh", "BretBishop", "SimonRobinson", "SimonRobinson", 
-"ToddOishi", "ScottTucker", "KiyoshiNakagawa", "KiyoshiNakagawa", 
-"SimonGrootemaat", "AntoninPesek", "AntoninPesek", "AntoninPesek", 
-"AntoninPesek", "AntoninPesek", "AntoninPesek", "AntoninPesek", 
-"NunoDuarte", "NunoDuarte", "NunoDuarte", "JulienDaguillanes", 
-"JulienDaguillanes", "JulienDaguillanes", "JulienDaguillanes", 
-"LanceEgan", "LanceEgan", "PauloMorais", "AndrewDixon", "AndrewDixon", 
-"LloydStruther", "LloydStruther", "SandroSoldarini", "SandroSoldarini", 
-"SandroSoldarini", "SandroSoldarini", "MarekWalczyk", "MarekWalczyk", 
-"MarekWalczyk", "MarekWalczyk", "AndreSteenkamp", "BoskoBarisic", 
-"TomasStarychfojtu", "TomasStarychfojtu", "TomasStarychfojtu", 
-"TomasStarychfojtu", "JohnNishi", "JohnNishi", "JohnNishi", "JohnNishi", 
-"BorisDzurek", "MichaelHeckler", "MichaelHeckler", "ThibaultGuilpain", 
-"ThibaultGuilpain", "ThibaultGuilpain"), country = c("SVK", "SVK", 
-"SVK", "SVK", "SVK", "SVK", "SVK", "SVK", "SVK", "SVK", "SVK", 
-"SVK", "SVK", "SVK", "SVK", "SVK", "SVK", "SVK", "SVK", "SVK", 
-"CAN", "CAN", "CAN", "CAN", "CAN", "CAN", "CAN", "CAN", "CAN", 
-"CAN", "CAN", "CAN", "CAN", "CAN", "CAN", "CAN", "CAN", "CAN", 
-"CAN", "CAN", "WAL", "WAL", "WAL", "WAL", "CZE", "CZE", "CZE", 
-"CZE", "CZE", "CZE", "CZE", "CZE", "CZE", "CZE", "CZE", "CZE", 
-"CZE", "CZE", "CZE", "CZE", "CZE", "CZE", "CZE", "CZE", "CZE", 
-"CZE", "CZE", "CZE", "CZE", "CZE", "CZE", "CZE", "CZE", "CZE", 
-"CZE", "CZE", "CRO", "CRO", "CRO", "CRO", "CRO", "CRO", "CRO", 
-"CRO", "CRO", "CRO", "CRO", "CRO", "CRO", "RSA", "RSA", "RSA", 
-"RSA", "RSA", "USA", "USA", "USA", "USA", "USA", "USA", "USA", 
-"USA", "USA", "USA", "USA", "USA", "USA", "USA", "USA", "USA", 
-"USA", "USA", "USA", "USA", "USA", "USA", "USA", "AUS", "AUS", 
-"AUS", "AUS", "AUS", "AUS", "AUS", "AUS", "AUS", "AUS", "AUS", 
-"AUS", "AUS", "AUS", "AUS", "AUS", "AUS", "AUS", "AUS", "AUS", 
-"AUS", "AUS", "AUS", "AUS", "AUS", "AUS", "AUS", "AUS", "NED", 
-"NED", "NED", "NED", "NED", "NED", "NED", "NED", "NED", "POL", 
-"POL", "POL", "POL", "POL", "POL", "POL", "POL", "POL", "POL", 
-"POL", "POL", "POL", "POL", "POL", "POL", "POL", "POL", "AUS", 
-"AUS", "AUS", "AUS", "AUS", "AUS", "AUS", "AUS", "AUS", "ITA", 
-"ITA", "ITA", "ITA", "ITA", "ITA", "ITA", "ITA", "ITA", "ITA", 
-"ITA", "ITA", "ITA", "ITA", "ITA", "ITA", "ITA", "ITA", "ITA", 
-"ITA", "ITA", "ITA", "ITA", "ITA", "IRE", "IRE", "IRE", "IRE", 
-"IRE", "IRE", "IRE", "IRE", "IRE", "IRE", "IRE", "IRE", "IRE", 
-"IRE", "IRE", "IRE", "IRE", "IRE", "IRE", "IRE", "IRE", "IRE", 
-"ROM", "ROM", "ROM", "ROM", "WAL", "WAL", "WAL", "WAL", "WAL", 
-"WAL", "WAL", "POR", "POR", "POR", "POR", "POR", "POR", "POR", 
-"POR", "POR", "POR", "POR", "CAN", "CAN", "CAN", "CAN", "CAN", 
-"CAN", "CAN", "CAN", "CAN", "CAN", "CAN", "CAN", "CAN", "CAN", 
-"CAN", "CAN", "CRO", "CRO", "CRO", "CRO", "CRO", "CRO", "CRO", 
-"CRO", "CRO", "CRO", "CRO", "CRO", "CRO", "CRO", "CRO", "CRO", 
-"RSA", "RSA", "RSA", "RSA", "RSA", "RSA", "RSA", "RSA", "RSA", 
-"RSA", "RSA", "RSA", "RSA", "POR", "POR", "POR", "POR", "POR", 
-"POR", "POR", "POR", "POR", "USA", "USA", "USA", "USA", "USA", 
-"USA", "USA", "USA", "USA", "NED", "NED", "NED", "NED", "NED", 
-"NED", "NED", "NED", "NED", "NED", "NED", "NED", "NED", "POL", 
-"POL", "POL", "POL", "POL", "POL", "POL", "POL", "POL", "POL", 
-"POL", "POL", "POL", "POL", "POL", "POL", "POL", "POL", "POL", 
-"POL", "POL", "POL", "POL", "POL", "POL", "POL", "POL", "POL", 
-"ITA", "ITA", "ITA", "ITA", "ITA", "ITA", "ITA", "ITA", "ITA", 
-"ITA", "SVK", "SVK", "SVK", "SVK", "SVK", "SVK", "SVK", "SVK", 
-"SVK", "SVK", "SVK", "SVK", "SVK", "SVK", "SVK", "SVK", "SVK", 
-"SVK", "SVK", "WAL", "WAL", "WAL", "WAL", "WAL", "FRA", "FRA", 
-"FRA", "FRA", "FRA", "FRA", "FRA", "FRA", "FRA", "FRA", "FRA", 
-"FRA", "FRA", "FRA", "FRA", "FRA", "FRA", "FRA", "FRA", "NDI", 
-"CRO", "POL", "POL", "POL", "POL", "POL", "POL", "POL", "POL", 
-"POL", "POL", "POL", "POL", "POL", "POL", "POL", "SVK", "SVK", 
-"SVK", "SVK", "SVK", "SVK", "SVK", "SVK", "SVK", "SVK", "SVK", 
-"SVK", "SVK", "SVK", "SVK", "SVK", "SVK", "SVK", "SVK", "SVK", 
-"USA", "USA", "USA", "USA", "USA", "USA", "USA", "USA", "USA", 
-"USA", "USA", "USA", "USA", "USA", "USA", "USA", "USA", "IRE", 
-"IRE", "IRE", "IRE", "IRE", "IRE", "IRE", "NED", "NED", "NED", 
-"NED", "NED", "NED", "NED", "NED", "NED", "NED", "NED", "NED", 
-"NED", "NED", "NED", "NED", "NED", "NED", "NED", "NED", "NED", 
-"FIN", "FIN", "FIN", "FIN", "FIN", "FIN", "FIN", "FIN", "FIN", 
-"FIN", "FIN", "FIN", "FIN", "FIN", "FIN", "RSA", "RSA", "JPN", 
-"JPN", "NZL", "NZL", "NZL", "NZL", "NZL", "NZL", "NZL", "FRA", 
-"FRA", "FRA", "FRA", "FRA", "FRA", "FRA", "FRA", "FRA", "ENG", 
-"ENG", "ENG", "ENG", "ENG", "ENG", "ENG", "POR", "POR", "POR", 
-"POR", "FIN", "FIN", "FIN", "FIN", "FIN", "FIN", "FIN", "FIN", 
-"CZE", "CZE", "CZE", "CZE", "CZE", "CZE", "CZE", "CZE", "CZE", 
-"CZE", "SWE", "SWE", "POL", "POL", "POL", "POL", "POL", "POL", 
-"POL", "POL", "POL", "NZL", "NZL", "NZL", "NZL", "NZL", "NZL", 
-"NZL", "NZL", "NZL", "NZL", "NZL", "NZL", "NZL", "NZL", "NZL", 
-"NZL", "NZL", "NZL", "NZL", "NZL", "NZL", "NZL", "NZL", "NZL", 
-"NZL", "NZL", "NZL", "NZL", "NZL", "NZL", "NZL", "NZL", "NZL", 
-"NZL", "NZL", "IRE", "IRE", "IRE", "IRE", "IRE", "IRE", "IRE", 
-"IRE", "IRE", "IRE", "IRE", "IRE", "IRE", "IRE", "IRE", "IRE", 
-"IRE", "IRE", "FIN", "FIN", "FIN", "FIN", "FIN", "FIN", "FIN", 
-"FIN", "FIN", "FIN", "FIN", "FIN", "FIN", "FIN", "FIN", "FIN", 
-"FIN", "FIN", "FIN", "FIN", "FIN", "FIN", "FIN", "FIN", "FIN", 
-"FIN", "FIN", "FIN", "FIN", "JPN", "JPN", "JPN", "JPN", "POR", 
-"POR", "POR", "POR", "POR", "POR", "POR", "POR", "POR", "POR", 
-"POR", "POR", "POR", "POR", "POR", "POR", "POR", "POR", "POR", 
-"ITA", "ITA", "ITA", "ITA", "ITA", "ITA", "ITA", "ITA", "ITA", 
-"ITA", "ITA", "ITA", "ITA", "ITA", "ITA", "ITA", "POL", "POL", 
-"POL", "POL", "POL", "POL", "POL", "POL", "POL", "POL", "POL", 
-"POL", "POL", "POL", "POL", "POL", "POL", "POL", "POL", "POL", 
-"POL", "POL", "POL", "ENG", "ENG", "ENG", "ENG", "ENG", "ENG", 
-"ENG", "ENG", "ENG", "ENG", "ENG", "ENG", "ENG", "ENG", "ENG", 
-"ENG", "ENG", "ENG", "ENG", "ENG", "ENG", "ENG", "ENG", "BUL", 
-"BUL", "BUL", "BUL", "BUL", "BUL", "BUL", "BUL", "BUL", "BUL", 
-"BUL", "FRA", "FRA", "FRA", "FRA", "FRA", "FRA", "FRA", "FRA", 
-"FRA", "FRA", "FRA", "FRA", "FRA", "FRA", "FRA", "FRA", "FRA", 
-"FRA", "FRA", "FRA", "FRA", "FRA", "FRA", "FRA", "FRA", "FRA", 
-"FRA", "ENG", "ENG", "ENG", "ENG", "ENG", "ENG", "ENG", "ENG", 
-"ENG", "ENG", "ENG", "ENG", "ENG", "ENG", "ENG", "ENG", "ENG", 
-"ENG", "USA", "USA", "USA", "USA", "USA", "USA", "USA", "USA", 
-"USA", "USA", "USA", "USA", "USA", "USA", "USA", "USA", "USA", 
-"USA", "USA", "CZE", "CZE", "CZE", "CZE", "CZE", "CZE", "CZE", 
-"CZE", "CZE", "CZE", "CZE", "CZE", "CZE", "CZE", "CZE", "CZE", 
-"CZE", "CZE", "CZE", "CZE", "CZE", "CZE", "CZE", "CZE", "CZE", 
-"CZE", "CZE", "CZE", "CZE", "CZE", "CZE", "RSA", "RSA", "RSA", 
-"RSA", "RSA", "RSA", "SVK", "SVK", "SVK", "SVK", "SVK", "SVK", 
-"SVK", "SVK", "SVK", "SVK", "SVK", "SVK", "SVK", "SVK", "SVK", 
-"SVK", "SVK", "SVK", "SVK", "SVK", "SVK", "SVK", "SVK", "FRA", 
-"FRA", "FRA", "FRA", "FRA", "FRA", "FRA", "FRA", "FRA", "FRA", 
-"FRA", "NED", "NED", "NED", "NED", "NED", "NED", "NED", "FIN", 
-"FIN", "FIN", "FIN", "FIN", "FIN", "FIN", "FIN", "FIN", "FIN", 
-"FIN", "FIN", "FIN", "JPN", "JPN", "JPN", "JPN", "JPN", "JPN", 
-"JPN", "NZL", "NZL", "NZL", "NZL", "NZL", "NZL", "NZL", "NZL", 
-"NZL", "NZL", "FIN", "FIN", "FIN", "FIN", "FIN", "FIN", "FIN", 
-"FIN", "FIN", "MAL", "MAL", "MAL", "ENG", "ENG", "ENG", "ENG", 
-"ENG", "ENG", "ENG", "ENG", "ENG", "ENG", "ENG", "ENG", "ENG", 
-"ENG", "ENG", "ENG", "ENG", "ENG", "ENG", "ENG", "ENG", "ENG", 
-"ENG", "ENG", "ENG", "ENG", "ENG", "ENG", "IRE", "IRE", "IRE", 
-"IRE", "IRE", "IRE", "IRE", "IRE", "IRE", "IRE", "IRE", "IRE", 
-"IRE", "IRE", "IRE", "IRE", "IRE", "IRE", "IRE", "NZL", "NZL", 
-"NZL", "NZL", "NZL", "NZL", "NZL", "NZL", "NZL", "NZL", "NZL", 
-"NZL", "NZL", "NZL", "NZL", "NZL", "NZL", "NZL", "NZL", "NZL", 
-"NZL", "NZL", "NZL", "NZL", "NZL", "NZL", "JPN", "JPN", "JPN", 
-"JPN", "JPN", "JPN", "JPN", "JPN", "JPN", "JPN", "JPN", "JPN", 
-"AUS", "AUS", "AUS", "AUS", "AUS", "AUS", "AUS", "CRO", "CRO", 
-"CRO", "CRO", "CRO", "CRO", "CRO", "CZE", "CZE", "CZE", "CZE", 
-"CZE", "CZE", "CZE", "CZE", "CZE", "CZE", "CZE", "CAN", "CAN", 
-"CAN", "CAN", "CAN", "CAN", "CAN", "CAN", "CAN", "CAN", "CAN", 
-"CAN", "CAN", "CAN", "CAN", "CAN", "JPN", "JPN", "JPN", "JPN", 
-"JPN", "JPN", "WAL", "WAL", "WAL", "ITA", "ITA", "ITA", "ITA", 
-"ITA", "ITA", "ITA", "ITA", "ITA", "ITA", "ITA", "ITA", "ITA", 
-"ITA", "ITA", "ITA", "ITA", "ITA", "ITA", "ITA", "ITA", "ITA", 
-"CZE", "CZE", "CZE", "CZE", "CZE", "CZE", "CZE", "CZE", "CZE", 
-"CZE", "CZE", "CZE", "CZE", "CZE", "CZE", "CZE", "CZE", "CZE", 
-"CZE", "CZE", "CZE", "CZE", "CZE", "CZE", "ENG", "ENG", "NZL", 
-"NZL", "NZL", "NZL", "NZL", "NZL", "NZL", "NZL", "NZL", "NZL", 
-"NZL", "NZL", "NZL", "FRA", "FRA", "FRA", "FRA", "FRA", "FRA", 
-"FRA", "FRA", "FRA", "FRA", "FRA", "FRA", "FRA", "FRA", "FRA", 
-"FRA", "AUS", "AUS", "AUS", "AUS", "AUS", "POR", "POR", "POR", 
-"POR", "AUS", "AUS", "CRO", "CRO", "CRO", "CRO", "CRO", "CRO", 
-"SVK", "SVK", "SVK", "SVK", "SVK", "SVK", "SVK", "SVK", "SVK", 
-"SVK", "SVK", "SVK", "SVK", "USA", "USA", "USA", "USA", "USA", 
-"USA", "USA", "USA", "USA", "USA", "USA", "USA", "CAN", "IRE", 
-"IRE", "IRE", "IRE", "IRE", "IRE", "ITA", "ITA", "ITA", "ITA", 
-"ITA", "ITA", "ITA", "ITA", "ITA", "ITA", "ITA", "ITA", "ITA", 
-"ITA", "ITA", "ITA", "NED", "NED", "NED", "NED", "NED", "RSA", 
-"CRO", "CRO", "CRO", "CRO", "CRO", "CRO", "CRO", "CRO", "CRO", 
-"CRO", "CRO", "CRO", "CRO", "CRO", "CRO", "CRO", "CRO", "CRO", 
-"CRO", "CRO", "CRO", "CRO", "CRO", "CRO", "CRO", "CRO", "CRO", 
-"CRO", "CRO", "CRO", "CRO", "CRO", "CRO", "CRO", "CRO", "CRO", 
-"CRO", "ROM", "ROM", "ROM", "ROM", "ROM", "ROM", "ROM", "ROM", 
-"ROM", "ROM", "ROM", "ROM", "ROM", "ROM", "ROM", "NED", "NED", 
-"NED", "NED", "NED", "NED", "NED", "NED", "NED", "NED", "NED", 
-"NED", "NED", "NED", "NED", "NED", "NZL", "NZL", "NZL", "NZL", 
-"NZL", "NZL", "NZL", "NZL", "NZL", "NZL", "NZL", "NZL", "NZL", 
-"NZL", "NZL", "NZL", "NZL", "NZL", "NZL", "NZL", "NZL", "NZL", 
-"NZL", "NZL", "NZL", "NZL", "NZL", "NZL", "NZL", "NZL", "NZL", 
-"NZL", "NZL", "NZL", "CAN", "CAN", "CAN", "CAN", "CAN", "CAN", 
-"CAN", "CAN", "CAN", "CAN", "CAN", "CAN", "CAN", "CAN", "CAN", 
-"CAN", "CAN", "CAN", "CAN", "CAN", "CAN", "CAN", "CAN", "CAN", 
-"CAN", "CAN", "CAN", "CAN", "CAN", "ITA", "ITA", "ITA", "ITA", 
-"ITA", "ITA", "ITA", "ITA", "ITA", "ITA", "ITA", "ITA", "ITA", 
-"ITA", "ITA", "ITA", "ITA", "ITA", "ITA", "ITA", "ITA", "ITA", 
-"ITA", "ITA", "ITA", "ITA", "ITA", "ITA", "FRA", "FRA", "FRA", 
-"FRA", "FRA", "FRA", "FRA", "FRA", "FRA", "FRA", "FRA", "FRA", 
-"FRA", "FRA", "FRA", "FRA", "FRA", "FRA", "FRA", "FRA", "FRA", 
-"FRA", "FRA", "FRA", "AUS", "AUS", "AUS", "AUS", "AUS", "AUS", 
-"AUS", "AUS", "AUS", "AUS", "AUS", "AUS", "AUS", "AUS", "AUS", 
-"AUS", "FIN", "FIN", "FIN", "FIN", "FIN", "FIN", "FIN", "FIN", 
-"FIN", "FIN", "FIN", "FIN", "FIN", "FIN", "FIN", "FIN", "FIN", 
-"FIN", "FIN", "POR", "POR", "POR", "POR", "POR", "POR", "POR", 
-"POR", "POR", "POR", "POR", "POR", "POR", "POR", "POR", "POR", 
-"POR", "POR", "POR", "POR", "POR", "POR", "CZE", "CZE", "CZE", 
-"CZE", "CZE", "CZE", "CZE", "CZE", "CZE", "CZE", "CZE", "CZE", 
-"CZE", "CZE", "CZE", "CZE", "CZE", "CZE", "CZE", "CZE", "CZE", 
-"CZE", "CZE", "CZE", "CZE", "CZE", "CZE", "CZE", "CZE", "RSA", 
-"RSA", "RSA", "RSA", "RSA", "RSA", "RSA", "RSA", "RSA", "RSA", 
-"RSA", "RSA", "SVK", "SVK", "SVK", "SVK", "SVK", "SVK", "SVK", 
-"SVK", "SVK", "SVK", "CRO", "CRO", "CRO", "CRO", "CRO", "CRO", 
-"CRO", "CRO", "CRO", "CRO", "IRE", "IRE", "IRE", "IRE", "IRE", 
-"IRE", "IRE", "IRE", "IRE", "IRE", "IRE", "IRE", "IRE", "IRE", 
-"IRE", "IRE", "IRE", "IRE", "IRE", "IRE", "IRE", "IRE", "IRE", 
-"IRE", "IRE", "IRE", "IRE", "IRE", "JPN", "JPN", "BUL", "BUL", 
-"BUL", "BUL", "BUL", "BUL", "BUL", "BUL", "BUL", "BUL", "BUL", 
-"BUL", "BUL", "BUL", "WAL", "WAL", "WAL", "WAL", "USA", "USA", 
-"USA", "USA", "USA", "USA", "USA", "USA", "USA", "USA", "USA", 
-"USA", "USA", "USA", "USA", "USA", "USA", "USA", "USA", "USA", 
-"USA", "USA", "USA", "USA", "USA", "USA", "USA", "JPN", "JPN", 
-"JPN", "JPN", "JPN", "JPN", "JPN", "JPN", "JPN", "JPN", "JPN", 
-"JPN", "JPN", "JPN", "JPN", "JPN", "JPN", "JPN", "JPN", "JPN", 
-"JPN", "JPN", "JPN", "JPN", "JPN", "JPN", "AUS", "AUS", "AUS", 
-"AUS", "AUS", "AUS", "AUS", "AUS", "AUS", "AUS", "AUS", "AUS", 
-"AUS", "AUS", "AUS", "AUS", "AUS", "AUS", "AUS", "AUS", "AUS", 
-"POL", "POL", "POL", "POL", "POL", "POL", "POL", "POL", "POL", 
-"POL", "POL", "POL", "POL", "POL", "POL", "POL", "POL", "POL", 
-"POL", "POL", "POL", "POL", "POL", "POL", "POL", "POL", "POL", 
-"POL", "WAL", "WAL", "WAL", "WAL", "WAL", "WAL", "WAL", "CZE", 
-"CZE", "CZE", "CZE", "CZE", "CZE", "CZE", "CZE", "CZE", "CZE", 
-"CZE", "CZE", "CZE", "CZE", "CZE", "CZE", "CZE", "CZE", "CZE", 
-"CZE", "CZE", "CZE", "CZE", "CZE", "CZE", "CZE", "CZE", "CZE", 
-"CZE", "CZE", "CZE", "RSA", "RSA", "RSA", "RSA", "RSA", "RSA", 
-"RSA", "CRO", "CRO", "CRO", "CRO", "CRO", "CRO", "CRO", "CRO", 
-"CRO", "CRO", "CRO", "CRO", "CRO", "CRO", "CRO", "CRO", "POR", 
-"POR", "POR", "POR", "POR", "POR", "POR", "POR", "POR", "POR", 
-"POR", "POR", "POR", "POR", "POR", "POR", "POR", "POR", "POR", 
-"IRE", "IRE", "IRE", "IRE", "IRE", "IRE", "IRE", "IRE", "IRE", 
-"NZL", "NZL", "NZL", "NZL", "NZL", "NZL", "CRO", "CRO", "CRO", 
-"CRO", "CRO", "CRO", "CRO", "CRO", "CRO", "CRO", "CZE", "CZE", 
-"CZE", "CZE", "CZE", "CZE", "CZE", "CZE", "CZE", "CZE", "CZE", 
-"CZE", "CZE", "CZE", "CZE", "CZE", "CZE", "CZE", "JPN", "JPN", 
-"JPN", "JPN", "SVK", "SVK", "SVK", "SVK", "SVK", "SVK", "SVK", 
-"SVK", "SVK", "SVK", "SVK", "SVK", "SVK", "SVK", "SVK", "SVK", 
-"SVK", "WAL", "WAL", "ENG", "ENG", "ENG", "ENG", "ENG", "ENG", 
-"ENG", "ENG", "ENG", "ENG", "POL", "POL", "POL", "POL", "POL", 
-"POL", "POL", "POL", "POL", "POL", "POL", "POL", "POL", "POL", 
-"POL", "NED", "NED", "NED", "NED", "NED", "NED", "NED", "NED", 
-"NED", "NED", "WAL", "IRE", "ITA", "ITA", "ITA", "ITA", "ITA", 
-"ITA", "ITA", "ITA", "ITA", "ITA", "ITA", "ITA", "ITA", "ITA", 
-"ITA", "ITA", "ITA", "ITA", "ITA", "ITA", "ITA", "FIN", "FIN", 
-"FIN", "FIN", "FIN", "FIN", "FIN", "FIN", "FIN", "FIN", "FIN", 
-"NDI", "NDI", "NDI", "NDI", "NDI", "NDI", "NDI", "USA", "USA", 
-"USA", "USA", "USA", "USA", "USA", "USA", "USA", "USA", "USA", 
-"USA", "USA", "NZL", "NZL", "NZL", "NZL", "NZL", "NZL", "NZL", 
-"NZL", "NZL", "NZL", "RSA", "RSA", "JPN", "JPN", "JPN", "JPN", 
-"JPN", "JPN", "JPN", "JPN", "JPN", "JPN", "JPN", "JPN", "JPN", 
-"JPN", "SVK", "SVK", "SVK", "SVK", "SVK", "SVK", "SVK", "SVK", 
-"SVK", "SVK", "SVK", "SVK", "SVK", "SVK", "SVK", "SVK", "SVK", 
-"SVK", "SVK", "SVK", "SVK", "SVK", "USA", "USA", "USA", "USA", 
-"USA", "USA", "USA", "USA", "USA", "USA", "USA", "USA", "USA", 
-"USA", "USA", "USA", "USA", "USA", "USA", "USA", "USA", "USA", 
-"USA", "USA", "USA", "USA", "USA", "USA", "USA", "USA", "USA", 
-"USA", "IRE", "IRE", "IRE", "IRE", "POL", "POL", "POL", "POL", 
-"POL", "POL", "POL", "POL", "POL", "POL", "POL", "POL", "WAL", 
-"WAL", "WAL", "WAL", "WAL", "RSA", "RSA", "RSA", "RSA", "RSA", 
-"RSA", "RSA", "RSA", "RSA", "RSA", "RSA", "RSA", "RSA", "POR", 
-"POR", "POR", "POR", "POR", "POR", "POR", "POR", "POR", "POR", 
-"POR", "POR", "POR", "POR", "POR", "POR", "POR", "POR", "POR", 
-"POR", "POR", "POR", "CZE", "CZE", "CZE", "CZE", "CZE", "CZE", 
-"CZE", "CZE", "CZE", "CZE", "CZE", "CZE", "CZE", "CZE", "CZE", 
-"CZE", "CZE", "CZE", "CZE", "CZE", "CZE", "CZE", "ENG", "ENG", 
-"ENG", "ENG", "ENG", "ENG", "ENG", "FRA", "FRA", "FRA", "FRA", 
-"FRA", "FRA", "FRA", "FRA", "FRA", "FRA", "FRA", "FRA", "FRA", 
-"FRA", "FRA", "FRA", "FRA", "FRA", "FRA", "FRA", "FRA", "FRA", 
-"FRA", "FRA", "FRA", "FRA", "FRA", "FRA", "FRA", "FRA", "FRA", 
-"FRA", "FRA", "FRA", "FRA", "FRA", "FRA", "POL", "POL", "POL", 
-"POL", "POL", "POL", "POL", "POL", "POL", "POL", "POL", "POL", 
-"POL", "POL", "POL", "POL", "POL", "FIN", "FIN", "FIN", "FIN", 
-"FIN", "FIN", "FIN", "FIN", "FIN", "FIN", "FIN", "FIN", "FIN", 
-"FIN", "FIN", "FIN", "FIN", "FIN", "FIN", "FIN", "FIN", "FIN", 
-"FIN", "FIN", "FIN", "FIN", "FIN", "FIN", "NED", "NED", "NED", 
-"NED", "NED", "NED", "NED", "NED", "NED", "NED", "NED", "AUS", 
-"AUS", "AUS", "AUS", "AUS", "AUS", "AUS", "AUS", "AUS", "ENG", 
-"ENG", "ENG", "ENG", "ENG", "ENG", "ENG", "ITA", "ITA", "ITA", 
-"ITA", "ITA", "ITA", "ITA", "ITA", "ITA", "ITA", "ITA", "ITA", 
-"ITA", "ITA", "ITA", "ITA", "ITA", "ITA", "ITA", "ITA", "CAN", 
-"CAN", "CAN", "CAN", "CAN", "CAN", "CAN", "CAN", "CAN", "CAN", 
-"CAN", "USA", "USA", "USA", "USA", "USA", "USA", "USA", "USA", 
-"USA", "USA", "NZL", "NZL", "NZL", "NZL", "NZL", "NZL", "NZL", 
-"NZL", "NZL", "NZL", "NZL", "NZL", "NZL", "NZL", "ENG", "ENG", 
-"ENG", "ENG", "ENG", "ENG", "ENG", "ENG", "ENG", "ENG", "ENG", 
-"ENG", "ENG", "ENG", "ENG", "ENG", "ENG", "ENG", "MAL", "MAL", 
-"MAL", "MAL", "MAL", "NZL", "NZL", "NZL", "NZL", "NZL", "NZL", 
-"NZL", "NZL", "NZL", "NZL", "NZL", "NZL", "NZL", "NZL", "NZL", 
-"NZL", "NZL", "NZL", "NZL", "NZL", "NZL", "NZL", "NZL", "NZL", 
-"NZL", "NZL", "NZL", "NZL", "NZL", "NZL", "CAN", "CAN", "CAN", 
-"CAN", "CAN", "CAN", "CAN", "FRA", "FRA", "FRA", "FRA", "FRA", 
-"FRA", "FRA", "FRA", "FRA", "FRA", "FRA", "FRA", "FRA", "FRA", 
-"FRA", "FIN", "FIN", "FIN", "FIN", "FIN", "FIN", "FIN", "NED", 
-"NED", "NED", "NED", "NED", "IRE", "IRE", "IRE", "IRE", "IRE", 
-"IRE", "IRE", "IRE", "IRE", "IRE", "IRE", "SVK", "SVK", "SVK", 
-"SVK", "SVK", "SVK", "SVK", "SVK", "SVK", "ITA", "ITA", "ITA", 
-"ITA", "USA", "USA", "USA", "USA", "USA", "USA", "USA", "USA", 
-"USA", "USA", "USA", "POR", "POR", "POR", "POR", "AUS", "AUS", 
-"ITA", "ITA", "ITA", "ITA", "SWE", "CAN", "CAN", "FRA", "FRA", 
-"FRA", "FRA", "FRA", "FRA", "FRA", "FRA", "FRA", "FRA", "FRA", 
-"FRA", "FRA", "FRA", "FRA", "FRA", "FRA", "FRA", "FIN", "FIN", 
-"FIN", "FIN", "FIN", "FIN", "FIN", "FIN", "RSA", "CAN", "CAN", 
-"CAN", "CAN", "CAN", "CAN", "CAN", "CAN", "CAN", "CAN", "CAN", 
-"CAN", "CAN", "CRO", "CRO", "CRO", "CRO", "CRO", "CRO", "CRO", 
-"JPN", "JPN", "JPN", "SVK", "SVK", "SVK", "SVK", "SVK", "SVK", 
-"SVK", "SVK", "SVK", "SVK", "SVK", "SVK", "POR", "POR", "POR", 
-"POR", "POR", "POR", "CZE", "CZE", "CZE", "CZE", "CZE", "CZE", 
-"CZE", "CZE", "CZE", "CZE", "CZE", "CZE", "CZE", "CZE", "CZE", 
-"CZE", "CZE", "CZE", "CZE", "CZE", "CZE", "CZE", "CZE", "CZE", 
-"POL", "POL", "POL", "POL", "POL", "POL", "POL", "POL", "POL", 
-"POL", "POL", "ENG", "ENG", "ENG", "ENG", "ENG", "ENG", "ENG", 
-"ENG", "ENG", "ENG", "AUS", "AUS", "AUS", "AUS", "AUS", "FRA", 
-"FRA", "FRA", "FRA", "FRA", "FRA", "FRA", "WAL", "WAL", "WAL", 
-"WAL", "WAL", "WAL", "WAL", "CAN", "CAN", "CAN", "POR", "POR", 
-"POR", "POR", "CRO", "CRO", "CRO", "CRO", "CRO", "ITA", "ITA", 
-"ITA", "ITA", "ITA", "ITA", "ITA", "ITA", "ITA", "ITA", "FIN", 
-"FIN", "FIN", "FIN", "FIN", "FIN", "FIN", "FIN", "FIN", "FIN", 
-"FIN", "FIN", "FIN", "FIN", "CZE", "CZE", "CZE", "CZE", "CZE", 
-"CZE", "CZE", "CZE", "CZE", "CZE", "CZE", "CZE", "CZE", "CZE", 
-"CZE", "CZE", "CZE", "CZE", "CZE", "POL", "POL", "POL", "POL", 
-"POL", "POL", "POL", "POL", "POL", "POL", "POL", "POL", "POL", 
-"AUS", "AUS", "AUS", "AUS", "AUS", "AUS", "AUS", "MAL", "AUS", 
-"AUS", "AUS", "AUS", "AUS", "AUS", "CZE", "CZE", "CZE", "CZE", 
-"CZE", "CZE", "CZE", "CZE", "CZE", "CZE", "CZE", "CZE", "CZE", 
-"CZE", "CZE", "CZE", "CZE", "CZE", "ENG", "ENG", "ENG", "ENG", 
-"ENG", "ENG", "ENG", "ENG", "ENG", "ENG", "ENG", "ENG", "ENG", 
-"ENG", "ENG", "ENG", "ENG", "ENG", "ENG", "ENG", "ENG", "ENG", 
-"ENG", "ENG", "ENG", "POL", "POL", "POL", "POL", "POL", "POL", 
-"POL", "POL", "POL", "POL", "POL", "POL", "POL", "POL", "POL", 
-"POL", "POL", "POL", "CAN", "CAN", "CAN", "CAN", "CAN", "CAN", 
-"CAN", "CAN", "CAN", "CAN", "CAN", "CAN", "CAN", "CAN", "CAN", 
-"CAN", "CAN", "CAN", "CAN", "CAN", "CAN", "CAN", "CAN", "CAN", 
-"CAN", "NED", "NED", "NED", "NED", "NED", "NED", "NED", "NED", 
-"NED", "NED", "NED", "NZL", "NZL", "NZL", "NZL", "NZL", "NZL", 
-"NZL", "NZL", "NZL", "NZL", "NZL", "NZL", "NZL", "NZL", "NZL", 
-"NZL", "NZL", "NZL", "NZL", "NZL", "NZL", "NZL", "NZL", "NZL", 
-"FIN", "FIN", "FIN", "FIN", "FIN", "FIN", "FIN", "FIN", "FIN", 
-"SVK", "SVK", "SVK", "SVK", "SVK", "SVK", "USA", "USA", "USA", 
-"USA", "USA", "USA", "USA", "FIN", "FIN", "FIN", "FIN", "FIN", 
-"FIN", "FIN", "FIN", "FIN", "FIN", "FIN", "IRE", "IRE", "IRE", 
-"IRE", "IRE", "IRE", "IRE", "IRE", "IRE", "IRE", "IRE", "IRE", 
-"IRE", "IRE", "IRE", "IRE", "IRE", "IRE", "IRE", "NZL", "NZL", 
-"NZL", "NZL", "NZL", "NZL", "NZL", "NZL", "NZL", "NZL", "NZL", 
-"NZL", "NZL", "NZL", "NZL", "NZL", "NZL", "NZL", "NZL", "NZL", 
-"NZL", "NZL", "NZL", "NZL", "NZL", "NZL", "JPN", "JPN", "JPN", 
-"RSA", "RSA", "RSA", "RSA", "RSA", "FRA", "FRA", "FRA", "FRA", 
-"FRA", "FRA", "FRA", "FRA", "FRA", "FRA", "FRA", "FRA", "FRA", 
-"FRA", "FRA", "FRA", "FRA", "FRA", "FRA", "FRA", "FRA", "FRA", 
-"FRA", "FRA", "FRA", "FRA", "FRA", "FRA", "CRO", "CRO", "IRE", 
-"IRE", "IRE", "NZL", "NZL", "NZL", "NZL", "NZL", "NZL", "NZL", 
-"NZL", "NZL", "NZL", "RSA", "RSA", "RSA", "RSA", "RSA", "RSA", 
-"RSA", "RSA", "RSA", "RSA", "AUS", "AUS", "AUS", "AUS", "AUS", 
-"AUS", "AUS", "AUS", "AUS", "AUS", "AUS", "AUS", "AUS", "AUS", 
-"AUS", "AUS", "AUS", "AUS", "ENG", "ENG", "ENG", "ENG", "ENG", 
-"ENG", "ENG", "ENG", "ENG", "ENG", "ENG", "ENG", "ENG", "POR", 
-"POR", "POR", "POR", "POR", "POR", "POR", "POR", "POR", "POR", 
-"POR", "POR", "POR", "POR", "POR", "POR", "POR", "POR", "CAN", 
-"CAN", "CAN", "CAN", "CAN", "CAN", "CAN", "CAN", "CAN", "CAN", 
-"CAN", "CAN", "CAN", "CAN", "CAN", "CAN", "CAN", "CAN", "CAN", 
-"CAN", "CAN", "CAN", "CAN", "CAN", "SVK", "SVK", "SVK", "SVK", 
-"SVK", "SVK", "SVK", "SVK", "SVK", "SVK", "SVK", "SVK", "SVK", 
-"SVK", "SVK", "SVK", "SVK", "SVK", "SVK", "SVK", "POL", "POL", 
-"POL", "POL", "POL", "POL", "RSA", "RSA", "ITA", "ITA", "ITA", 
-"ITA", "ITA", "ITA", "ITA", "ITA", "ITA", "USA", "USA", "USA", 
-"USA", "USA", "USA", "USA", "USA", "USA", "USA", "USA", "USA", 
-"USA", "USA", "USA", "USA", "USA", "USA", "USA", "USA", "USA", 
-"USA", "USA", "USA", "USA", "POR", "POR", "POR", "POR", "POR", 
-"POR", "FRA", "FRA", "FRA", "FRA", "FRA", "FRA", "FRA", "FRA", 
-"FRA", "FRA", "FRA", "FRA", "FRA", "AUS", "AUS", "AUS", "AUS", 
-"AUS", "AUS", "AUS", "AUS", "IRE", "IRE", "IRE", "IRE", "IRE", 
-"IRE", "IRE", "IRE", "IRE", "IRE", "IRE", "IRE", "IRE", "IRE", 
-"IRE", "IRE", "IRE", "IRE", "IRE", "IRE", "IRE", "IRE", "IRE", 
-"IRE", "IRE", "IRE", "IRE", "IRE", "IRE", "ROM", "ROM", "ROM", 
-"ROM", "ROM", "ROM", "IRE", "IRE", "IRE", "IRE", "IRE", "IRE", 
-"IRE", "IRE", "IRE", "IRE", "IRE", "IRE", "IRE", "IRE", "IRE", 
-"IRE", "SWE", "SWE", "SWE", "SWE", "SWE", "SWE", "NZL", "NZL", 
-"NZL", "NZL", "NZL", "NZL", "NZL", "NZL", "NZL", "NZL", "NZL", 
-"NZL", "NZL", "NZL", "NZL", "NZL", "NZL", "NZL", "NZL", "NZL", 
-"SVK", "SVK", "SVK", "SVK", "SVK", "SVK", "SVK", "SVK", "SVK", 
-"SVK", "SVK", "SVK", "SVK", "SVK", "SVK", "SVK", "SVK", "SVK", 
-"SVK", "SVK", "SVK", "SVK", "JPN", "JPN", "JPN", "JPN", "RSA", 
-"RSA", "RSA", "RSA", "RSA", "RSA", "RSA", "RSA", "RSA", "RSA", 
-"RSA", "RSA", "NED", "ENG", "ENG", "ENG", "ENG", "ENG", "ENG", 
-"ENG", "ENG", "ENG", "ENG", "ENG", "ENG", "ENG", "ENG", "ENG", 
-"ENG", "ENG", "ENG", "ENG", "ENG", "ENG", "ENG", "ENG", "ENG", 
-"ENG", "ENG", "ENG", "ENG", "USA", "USA", "USA", "USA", "USA", 
-"FRA", "FRA", "FRA", "FRA", "FRA", "FRA", "FRA", "FRA", "FRA", 
-"FRA", "FRA", "JPN", "JPN", "JPN", "JPN", "JPN", "JPN", "JPN", 
-"JPN", "JPN", "JPN", "JPN", "JPN", "JPN", "JPN", "JPN", "JPN", 
-"JPN", "JPN", "JPN", "JPN", "SVK", "SVK", "SVK", "SVK", "SVK", 
-"SVK", "SVK", "SVK", "SVK", "SVK", "SVK", "SVK", "SVK", "SVK", 
-"SVK", "SVK", "SVK", "SVK", "SVK", "SVK", "SVK", "POR", "POR", 
-"POR", "POR", "POR", "POR", "POR", "POR", "POR", "POR", "POR", 
-"POR", "POR", "POR", "POR", "USA", "USA", "USA", "USA", "USA", 
-"USA", "USA", "USA", "USA", "USA", "USA", "USA", "USA", "USA", 
-"USA", "USA", "USA", "USA", "USA", "USA", "USA", "FRA", "FRA", 
-"FRA", "FRA", "FRA", "FRA", "FRA", "FRA", "FRA", "FRA", "FRA", 
-"FRA", "FRA", "FRA", "FRA", "FRA", "FRA", "FRA", "FRA", "FRA", 
-"FRA", "FRA", "FRA", "FRA", "FRA", "FRA", "FRA", "FRA", "ITA", 
-"ITA", "ITA", "ITA", "ITA", "ITA", "ITA", "ITA", "ITA", "ITA", 
-"ITA", "ITA", "ITA", "ITA", "ITA", "ITA", "ITA", "ITA", "ITA", 
-"ITA", "CRO", "CRO", "CRO", "CRO", "CRO", "CRO", "CRO", "CRO", 
-"CRO", "CRO", "CRO", "CRO", "CRO", "WAL", "WAL", "WAL", "WAL", 
-"WAL", "RSA", "RSA", "RSA", "RSA", "RSA", "RSA", "RSA", "IRE", 
-"IRE", "IRE", "IRE", "IRE", "IRE", "IRE", "IRE", "IRE", "IRE", 
-"IRE", "IRE", "IRE", "IRE", "IRE", "IRE", "IRE", "IRE", "IRE", 
-"IRE", "CRO", "CRO", "CRO", "CRO", "CRO", "CRO", "CRO", "CRO", 
-"ITA", "ITA", "ITA", "ITA", "ITA", "ITA", "ITA", "ITA", "ITA", 
-"ITA", "ITA", "ITA", "NED", "NED", "NED", "NED", "NED", "NED", 
-"NED", "NED", "NED", "NED", "NED", "NED", "NED", "NED", "NED", 
-"NED", "NED", "NED", "NED", "NED", "NED", "ENG", "ENG", "ENG", 
-"ENG", "ENG", "ENG", "ENG", "ENG", "ENG", "ENG", "ENG", "ENG", 
-"ENG", "ENG", "ENG", "POL", "POL", "POL", "POL", "POL", "POL", 
-"POL", "POL", "POL", "POL", "POL", "POL", "POL", "POL", "POL", 
-"POL", "POL", "POL", "POL", "POL", "POL", "POL", "CZE", "CZE", 
-"CZE", "CZE", "CZE", "CZE", "CZE", "CZE", "CZE", "CZE", "CZE", 
-"CZE", "CZE", "CZE", "CZE", "CZE", "CZE", "CZE", "CZE", "CZE", 
-"CZE", "CZE", "CZE", "CZE", "AUS", "AUS", "AUS", "AUS", "AUS", 
-"AUS", "AUS", "AUS", "AUS", "AUS", "AUS", "AUS", "AUS", "AUS", 
-"AUS", "AUS", "AUS", "AUS", "POR", "POR", "POR", "POR", "POR", 
-"POR", "POR", "POR", "POR", "POR", "CAN", "CAN", "CAN", "CAN", 
-"CAN", "CAN", "CAN", "CAN", "CAN", "CAN", "CAN", "CAN", "CAN", 
-"CAN", "CAN", "CAN", "CAN", "CAN", "CAN", "CAN", "CAN", "CAN", 
-"NDI", "NDI", "NDI", "NDI", "USA", "USA", "USA", "USA", "USA", 
-"USA", "USA", "USA", "USA", "USA", "USA", "USA", "USA", "USA", 
-"USA", "USA", "USA", "USA", "USA", "USA", "USA", "USA", "USA", 
-"USA", "USA", "USA", "USA", "USA", "USA", "USA", "POL", "POL", 
-"POL", "POL", "POL", "POL", "POL", "POL", "POL", "POL", "POL", 
-"POL", "POL", "POL", "POL", "POL", "POL", "POL", "POL", "POL", 
-"POL", "JPN", "JPN", "JPN", "BUL", "BUL", "BUL", "BUL", "BUL", 
-"BUL", "BUL", "BUL", "BUL", "BUL", "NED", "NED", "NED", "NED", 
-"NED", "NED", "NED", "NED", "NED", "NED", "NED", "NED", "NED", 
-"NED", "WAL", "WAL", "WAL", "FRA", "FRA", "FRA", "FRA", "FRA", 
-"FRA", "FRA", "FRA", "FRA", "FRA", "FRA", "FRA", "FRA", "FRA", 
-"FRA", "FRA", "CZE", "CZE", "CZE", "CZE", "CZE", "CZE", "CZE", 
-"CZE", "CZE", "CZE", "CZE", "CZE", "CZE", "CZE", "CZE", "CZE", 
-"CZE", "CZE", "CZE", "CZE", "CZE", "CZE", "CZE", "CZE", "CZE", 
-"CZE", "CZE", "CZE", "CZE", "CZE", "ITA", "ITA", "ITA", "ITA", 
-"ITA", "ITA", "ITA", "ITA", "ITA", "ITA", "ITA", "ITA", "ITA", 
-"ITA", "ITA", "ITA", "ITA", "ITA", "ITA", "ITA", "ITA", "FIN", 
-"FIN", "FIN", "FIN", "FIN", "FIN", "FIN", "FIN", "FIN", "FIN", 
-"FIN", "FIN", "WAL", "WAL", "WAL", "WAL", "WAL", "WAL", "WAL", 
-"ENG", "ENG", "ENG", "ENG", "ENG", "ENG", "ENG", "ENG", "ENG", 
-"ENG", "ENG", "ENG", "CZE", "CZE", "CZE", "CZE", "CZE", "CZE", 
-"CZE", "CZE", "CZE", "CZE", "CZE", "CZE", "CZE", "CZE", "CZE", 
-"CZE", "CZE", "CZE", "CZE", "CZE", "CZE", "CZE", "CZE", "CZE", 
-"FIN", "FIN", "FIN", "FIN", "FIN", "FIN", "FIN", "FIN", "FIN", 
-"CRO", "CRO", "CRO", "CRO", "CRO", "CRO", "CRO", "CRO", "CRO", 
-"CRO", "CAN", "CAN", "CAN", "CAN", "CAN", "CAN", "CAN", "CAN", 
-"CAN", "CAN", "CAN", "CAN", "CAN", "CAN", "CAN", "CAN", "CAN", 
-"CAN", "CAN", "CAN", "CAN", "CAN", "CAN", "CAN", "CAN", "CAN", 
-"CAN", "CAN", "JPN", "JPN", "JPN", "JPN", "JPN", "JPN", "JPN", 
-"JPN", "JPN", "JPN", "JPN", "JPN", "NZL", "NZL", "NZL", "NZL", 
-"NZL", "NZL", "NZL", "NZL", "NZL", "NZL", "NZL", "NZL", "NZL", 
-"NZL", "NZL", "NZL", "NZL", "NZL", "NZL", "NZL", "NZL", "NZL", 
-"NZL", "NZL", "NZL", "NZL", "NZL", "NZL", "NZL", "SVK", "SVK", 
-"SVK", "SVK", "SVK", "SVK", "SVK", "SVK", "SVK", "SVK", "SVK", 
-"SVK", "SVK", "SVK", "SVK", "NED", "NED", "NED", "NED", "NED", 
-"NED", "NED", "JPN", "JPN", "CAN", "CAN", "WAL", "WAL", "RSA", 
-"RSA", "SVK", "AUS", "AUS", "AUS", "AUS", "NED", "IRE", "POR", 
-"POR", "USA", "USA", "USA", "USA", "USA", "CZE", "CZE", "CZE", 
-"CZE", "CZE", "NZL", "NZL", "NZL", "NZL", "POL", "POL", "POL", 
-"POL", "POL", "POL", "ITA", "ITA", "ITA", "FIN", "FIN", "ENG", 
-"ENG", "ENG", "FIN", "FIN", "FIN", "FIN", "AUS", "AUS", "AUS", 
-"AUS", "AUS", "AUS", "IRE", "IRE", "IRE", "IRE", "IRE", "IRE", 
-"IRE", "IRE", "IRE", "CAN", "CAN", "CAN", "JPN", "JPN", "JPN", 
-"JPN", "JPN", "USA", "USA", "RSA", "RSA", "SVK", "SVK", "NED", 
-"NED", "NZL", "NZL", "ITA", "ITA", "ENG", "ENG", "ENG", "ENG", 
-"POL", "POL", "POL", "CZE", "CZE", "CZE", "CZE", "CZE", "CZE", 
-"CZE", "CZE", "POR", "POR", "POR", "POR", "POR", "WAL", "WAL", 
-"WAL", "WAL", "FRA", "FRA", "WAL", "CZE", "SWE", "SWE", "SWE", 
-"SWE", "SWE", "SWE", "POL", "POL", "FIN", "FIN", "FIN", "FIN", 
-"FIN", "FIN", "IRE", "AUS", "NED", "NED", "ENG", "ENG", "ENG", 
-"ENG", "CAN", "CAN", "CAN", "CAN", "CAN", "POR", "NZL", "NZL", 
-"SVK", "SVK", "ITA", "ITA", "ITA", "ITA", "ITA", "USA", "RSA", 
-"RSA", "RSA", "RSA", "RSA", "RSA", "CZE", "CZE", "CZE", "CAN", 
-"CAN", "WAL", "WAL", "WAL", "WAL", "WAL", "SVK", "SVK", "SVK", 
-"SVK", "ITA", "ITA", "ITA", "ITA", "NED", "FIN", "FIN", "FIN", 
-"FIN", "IRE", "IRE", "IRE", "IRE", "CRO", "CRO", "NZL", "NZL", 
-"NZL", "POL", "USA", "USA", "USA", "USA", "ENG", "ENG", "ENG", 
-"FRA", "FRA", "FRA", "BUL", "BUL", "AUS", "AUS", "POR", "CRO", 
-"ENG", "ENG", "ENG", "ENG", "ENG", "ENG", "ENG", "ENG", "ENG", 
-"ENG", "ENG", "ENG", "ENG", "ENG", "ENG", "ENG", "ENG", "IRE", 
-"IRE", "IRE", "IRE", "IRE", "IRE", "IRE", "POL", "POL", "POL", 
-"NZL", "NZL", "NZL", "NZL", "NZL", "NZL", "NED", "RSA", "ITA", 
-"ITA", "AUS", "AUS", "AUS", "MAL", "FRA", "FRA", "FRA", "FRA", 
-"FRA", "FRA", "FRA", "JPN", "JPN", "JPN", "JPN", "JPN", "JPN", 
-"CAN", "CAN", "CAN", "FIN", "FIN", "CZE", "CZE", "CZE", "CZE", 
-"USA", "WAL", "WAL", "WAL", "WAL", "ENG", "ENG", "AUS", "POL", 
-"POL", "USA", "USA", "JPN", "JPN", "JPN", "CZE", "ITA", "NZL", 
-"NZL", "WAL", "WAL", "WAL", "FRA", "FRA", "RSA", "RSA", "RSA", 
-"CAN", "CAN", "CAN", "CAN", "CAN", "SVK", "IRE", "IRE", "USA", 
-"USA", "USA", "POL", "SVK", "SVK", "POR", "IRE", "IRE", "CAN", 
-"CAN", "CAN", "ENG", "ENG", "ENG", "ENG", "ENG", "ENG", "ENG", 
-"ENG", "ENG", "ENG", "JPN", "ITA", "RSA", "RSA", "RSA", "SWE", 
-"SWE", "AUS", "AUS", "CZE", "NZL", "NZL", "NZL", "NZL", "NZL", 
-"NZL", "NED", "NED", "FRA", "FRA", "FRA", "FRA", "FRA", "FRA", 
-"WAL", "WAL", "FIN", "FIN", "FIN", "FIN", "CRO", "POL", "POL", 
-"POL", "AUS", "AUS", "AUS", "AUS", "SVK", "SVK", "RSA", "RSA", 
-"RSA", "CZE", "CZE", "WAL", "WAL", "WAL", "JPN", "NED", "NED", 
-"NED", "ENG", "ENG", "ITA", "ITA", "ROM", "ROM", "IRE", "NZL", 
-"NZL", "NZL", "FRA", "FRA", "FRA", "FRA", "FRA", "FRA", "FRA", 
-"FRA", "FRA", "FRA", "POR", "POR", "POR", "CAN", "CAN", "POL", 
-"POL", "POL", "SVK", "SVK", "SVK", "ITA", "ITA", "NZL", "MAL", 
-"RSA", "RSA", "FIN", "FIN", "FIN", "FIN", "FIN", "FIN", "IRE", 
-"USA", "ENG", "ENG", "CAN", "AUS", "JPN", "JPN", "NED", "CZE", 
-"CZE", "CZE", "CZE", "CZE", "CZE", "CZE", "POR", "POR", "POR", 
-"FRA", "FRA", "FRA", "FRA", "USA", "USA", "POR", "ENG", "ENG", 
-"NZL", "NZL", "ITA", "ITA", "ITA", "ITA", "POL", "POL", "POL", 
-"POL", "RSA", "CRO", "CZE", "CZE", "CZE", "CZE", "CAN", "CAN", 
-"CAN", "CAN", "SVK", "WAL", "WAL", "FRA", "FRA", "FRA")), .Names = c("length", 
-"water", "session", "sector", "beatboat", "comid", "iname", "country"
-), row.names = c(NA, 4267), class = "data.frame")
diff --git a/data/wffc.indiv.R b/data/wffc.indiv.R
deleted file mode 100644
index 840345b..0000000
--- a/data/wffc.indiv.R
+++ /dev/null
@@ -1,94 +0,0 @@
-"wffc.indiv" <-
-structure(list(totalPlacings = c(20, 20, 22, 22, 22, 24, 24, 
-24, 25, 27, 27, 27, 30, 30, 30, 30, 30, 31, 32, 32, 34, 34, 35, 
-35, 36, 38, 38, 38, 39, 41, 42, 42, 42, 42, 43, 43, 43, 44, 44, 
-45, 47, 49, 49, 50, 53, 53, 53, 53, 53, 54, 54, 54, 55, 55, 56, 
-56, 57, 58, 58, 59, 59, 59, 60, 60, 60, 60, 61, 62, 63, 65, 65, 
-65, 66, 66, 66, 66, 66, 67, 68, 68, 69, 69, 69, 70, 70, 72, 73, 
-74, 74, 75, 76, 79, 79, 83, 88, 88, 88, 93, 94), points = c(51360, 
-48540, 58980, 39480, 35240, 52800, 52140, 28540, 53180, 47180, 
-47060, 35500, 40460, 36380, 34400, 32460, 29660, 41000, 40660, 
-29440, 48020, 30720, 45020, 39840, 44680, 38680, 37900, 28560, 
-39040, 29040, 43840, 38260, 28500, 19200, 36320, 35720, 22260, 
-43040, 24900, 33520, 29800, 34020, 20220, 33200, 46480, 28300, 
-27340, 21140, 15800, 36240, 34440, 24140, 33460, 29620, 36200, 
-27700, 24180, 26580, 23880, 26880, 24780, 11660, 29240, 21160, 
-17680, 10920, 22640, 21280, 18340, 25680, 16320, 6240, 16080, 
-11980, 9980, 9660, 8920, 6340, 16440, 6900, 18340, 17080, 11880, 
-23440, 9080, 13880, 6600, 20420, 13640, 14800, 6600, 16620, 2880, 
-9740, 7080, 6540, 3420, 5120, 540), noofcaptures = c(78, 73, 98, 
-59, 56, 87, 90, 40, 87, 80, 71, 56, 65, 59, 55, 54, 41, 66, 64, 
-44, 78, 49, 60, 69, 73, 61, 66, 44, 65, 43, 78, 64, 40, 32, 65, 
-58, 36, 78, 40, 52, 47, 55, 32, 53, 80, 48, 43, 33, 23, 64, 59, 
-39, 60, 47, 57, 53, 38, 45, 38, 39, 42, 17, 53, 33, 30, 17, 40, 
-35, 30, 38, 31, 6, 26, 18, 12, 14, 14, 8, 28, 8, 26, 31, 21, 
-37, 14, 22, 10, 35, 21, 28, 11, 27, 3, 16, 12, 11, 6, 9, 1), 
-    longest = c(540, 585, 515, 689, 580, 535, 552, 610, 475, 
-    533, 518, 560, 535, 580, 498, 624, 627, 525, 585, 560, 550, 
-    515, 568, 615, 652, 520, 563, 510, 580, 572, 474, 500, 615, 
-    484, 503, 535, 498, 592, 541, 512, 590, 510, 530, 499, 501, 
-    495, 574, 572, 604, 466, 450, 515, 513, 480, 570, 419, 530, 
-    688, 580, 492, 514, 508, 522, 594, 477, 532, 528, 505, 493, 
-    620, 340, 560, 571, 475, 572, 470, 486, 574, 568, 610, 548, 
-    432, 342, 486, 480, 560, 432, 501, 590, 362, 511, 455, 450, 
-    490, 380, 395, 332, 293, 218), individual = c(0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0), 
-    country = c("CZE", "FRA", "CZE", "ENG", "POL", "NZL", "ENG", 
-    "FIN", "CZE", "POL", "CZE", "SVK", "ITA", "ITA", "NZL", "CAN", 
-    "NZL", "JPN", "NZL", "USA", "NZL", "CZE", "FRA", "USA", "FIN", 
-    "CAN", "POL", "FRA", "ITA", "AUS", "CAN", "SVK", "SVK", "USA", 
-    "IRE", "IRE", "ITA", "USA", "POL", "SVK", "POR", "SVK", "ENG", 
-    "FRA", "FRA", "ENG", "ENG", "AUS", "RSA", "CRO", "USA", "FIN", 
-    "POR", "POR", "AUS", "NED", "ITA", "FIN", "AUS", "JPN", "POL", 
-    "SWE", "IRE", "FIN", "IRE", "JPN", "CAN", "NED", "RSA", "BUL", 
-    "IRE", "FRA", "WAL", "WAL", "WAL", "AUS", "RSA", "WAL", "CRO", 
-    "CAN", "RSA", "NED", "CRO", "CRO", "POR", "POR", "NED", "NED", 
-    "WAL", "RSA", "JPN", "ROM", "IRE", "CRO", "NDI", "MAL", "CAN", 
-    "JPN", "WAL"), iname = c("MartinDroz", "JulienDaguillanes", 
-    "TomasStarychfojtu", "JohnHorsey", "LucjanBurda", "DesArmstrong", 
-    "SimonRobinson", "JannePirkkalainen", "TomasAdam", "PiotrKonieczny", 
-    "AntoninPesek", "JanBartko", "SandroSoldarini", "LucaPapandrea", 
-    "AaronWest", "DonaldThom", "JohnBell", "KiyoshiNakagawa", 
-    "LloydStruther", "JoshStephens", "CraigFarrar", "PavelMachan", 
-    "ChristopheIdre", "LanceEgan", "OlliToivonen", "JohnNishi", 
-    "MarekWalczyk", "BertrandJacquemin", "GianlucaMazzocco", 
-    "VernBarby", "TerenceCourtoreille", "MiroslavAntal", "MichalBenatinsky", 
-    "AnthonyNaranja", "WilliamKavenagh", "DamienWalsh", "ValerioSantiAmantini", 
-    "GeorgeDaniel", "StanislawGuzdek", "PeterBienek", "JoseDias", 
-    "BorisDzurek", "HowardCroston", "EricLelouvrier", "YannCaleri", 
-    "AndrewDixon", "MikeTinnion", "JoeRiley", "GaryGlenYoung", 
-    "IvicaMagdic", "BretBishop", "JarkkoSuominen", "PauloMorais", 
-    "NunoDuarte", "CraigColtman", "PeterElberse", "AlessandroSgrani", 
-    "VilleAnttiJaakkola", "ScottTucker", "SeiichiKomatsuzawa", 
-    "ArturTrzaskos", "TorbjornEriksson", "JohnBuckley", "JouniNeste", 
-    "JohnTrench", "TakashiKawahara", "ToddOishi", "ReneKoops", 
-    "TimRolston", "StanislawMankou", "JohnFoxton", "ThibaultGuilpain", 
-    "JamieHarries", "MichaelHeckler", "BrianJeremiah", "RickyLehman", 
-    "RobertVanRensburg", "DavidEricDavies", "BoskoBarisic", "RandyTaylor", 
-    "MarkYelland", "SimonGrootemaat", "PeterDindic", "MiroslavKaticic", 
-    "AntonioRodrigues", "HelderRodrigues", "JanKwisthout", "HansBock", 
-    "KimTribe", "AndreSteenkamp", "MisakoIshimura", "StefanFlorea", 
-    "AidenHodgins", "MarinkoPuskaric", "SabahudinPehadzicBIHI", 
-    "StephenVarga", "JohnBeaven", "YoshikoIzumiya", "DionDavies"
-    ), comid = c(1, 2, 3, 4, 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, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 
-    45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 
-    60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 
-    75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 
-    90, 91, 92, 93, 94, 95, 96, 97, 98, 99)), .Names = c("totalPlacings", 
-"points", "noofcaptures", "longest", "individual", "country", "iname", 
-"comid"), row.names = c("1", "2", "3", "4", "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", 
-"31", "32", "33", "34", "35", "36", "37", "38", "39", "40", "41", 
-"42", "43", "44", "45", "46", "47", "48", "49", "50", "51", "52", 
-"53", "54", "55", "56", "57", "58", "59", "60", "61", "62", "63", 
-"64", "65", "66", "67", "68", "69", "70", "71", "72", "73", "74", 
-"75", "76", "77", "78", "79", "80", "81", "82", "83", "84", "85", 
-"86", "87", "88", "89", "90", "91", "92", "93", "94", "95", "96", 
-"97", "98", "99"), class = "data.frame")
diff --git a/data/wffc.indiv.rda b/data/wffc.indiv.rda
new file mode 100644
index 0000000..5f03639
Binary files /dev/null and b/data/wffc.indiv.rda differ
diff --git a/data/wffc.nc.R b/data/wffc.nc.R
deleted file mode 100644
index 881df11..0000000
--- a/data/wffc.nc.R
+++ /dev/null
@@ -1,351 +0,0 @@
-"wffc.nc" <-
-structure(list(sector = c(4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 
-4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 
-4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 
-4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 
-4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 
-5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 
-5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 
-5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 
-5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 
-5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 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, 2, 2, 2, 2, 2, 
-2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
-3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
-3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
-3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
-3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
-3), session = c(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, 2, 
-2, 2, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 
-5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 
-6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 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, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 
-3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 
-5, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 
-6, 6, 6, 6, 6, 6, 6, 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, 
-2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
-3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 
-5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 1, 1, 1, 
-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 3, 3, 3, 3, 
-3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 
-4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 
-5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 
-6, 6, 6, 6, 6, 6, 6, 6, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
-3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 
-4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 
-6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6), beatboat = c(1, 
-2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 
-1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 
-19, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 
-18, 19, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 
-17, 18, 19, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 
-16, 17, 18, 19, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 
-15, 16, 17, 18, 19, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 
-14, 15, 16, 17, 18, 19, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 
-13, 14, 15, 16, 17, 18, 19, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 
-12, 13, 14, 15, 16, 17, 18, 19, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 
-11, 12, 13, 14, 15, 16, 17, 18, 19, 1, 2, 3, 4, 5, 6, 7, 8, 9, 
-10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 1, 2, 3, 4, 5, 6, 7, 
-8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 1, 2, 3, 4, 5, 
-6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 1, 2, 3, 
-4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 1, 
-2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 
-1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 
-19, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 
-18, 19, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 
-17, 18, 19, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 
-16, 17, 18, 19, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 
-15, 16, 17, 18, 19, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 
-14, 15, 16, 17, 18, 19, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 
-13, 14, 15, 16, 17, 18, 19, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 
-12, 13, 14, 15, 16, 17, 18, 19, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 
-11, 12, 13, 14, 15, 16, 17, 18, 19, 1, 2, 3, 4, 5, 6, 7, 8, 9, 
-10, 11, 12, 13, 14, 15, 16, 17, 18, 19), numbers = c(20, 20, 
-4, 32, 13, 5, 23, 28, 9, 35, 18, 29, 4, 19, 16, 23, 23, 11, 27, 
-18, 9, 24, 22, 4, 7, 11, 16, 16, 18, 19, 31, 6, 23, 11, 7, 13, 
-7, 10, 13, 9, 9, 13, 28, 10, 19, 5, 19, 9, 3, 28, 19, 26, 12, 
-7, 7, 11, 4, 1, 1, 15, 20, 17, 7, 21, 15, 2, 12, 6, 3, 22, 24, 
-2, 13, 16, 5, 4, 2, 7, 9, 7, 4, 8, 10, 2, 9, 2, 6, 13, 12, 0, 
-1, 6, 16, 5, 1, 37, 15, 16, 34, 29, 28, 24, 16, 19, 14, 22, 32, 
-4, 12, 5, 13, 22, 22, 7, 22, 29, 12, 10, 10, 28, 2, 14, 4, 37, 
-17, 28, 11, 9, 7, 20, 11, 10, 14, 27, 26, 21, 28, 7, 31, 7, 16, 
-19, 18, 5, 30, 7, 15, 7, 5, 11, 9, 4, 9, 6, 10, 18, 4, 17, 2, 
-10, 15, 11, 4, 2, 4, 1, 2, 18, 8, 1, 0, 10, 1, 1, 21, 11, 7, 
-13, 10, 2, 13, 7, 3, 12, 6, 24, 11, 10, 5, 7, 7, 3, 4, 5, 10, 
-14, 19, 13, 7, 16, 6, 20, 22, 4, 12, 1, 28, 5, 11, 1, 6, 18, 
-25, 18, 25, 11, 24, 9, 20, 21, 15, 21, 28, 20, 13, 5, 7, 20, 
-6, 7, 0, 11, 19, 26, 3, 5, 28, 8, 12, 21, 15, 22, 24, 18, 10, 
-22, 4, 2, 3, 10, 10, 18, 13, 18, 24, 20, 30, 21, 3, 10, 14, 3, 
-16, 30, 21, 12, 6, 2, 9, 25, 6, 13, 8, 29, 6, 7, 12, 24, 9, 10, 
-28, 12, 29, 15, 7, 2, 0, 2, 0, 2, 2, 1, 4, 1, 1, 2, 5, 5, 4, 
-6, 3, 2, 0, 3, 4, 6, 9, 3, 5, 2, 2, 0, 2, 2, 2, 2, 4, 3, 8, 5, 
-4, 2, 0, 1, 1, 6, 2, 6, 1, 1, 2, 4, 0, 5, 1, 2, 0, 2, 5, 1, 6, 
-0, 3, 2, 5, 4, 4, 0, 1, 4, 4, 2, 3, 1, 4, 3, 3, 2, 2, 0, 0, 1, 
-1, 17, 7, 3, 0, 6, 1, 1, 2, 3, 1, 7, 6, 3, 2, 4, 1, 4, 2, 1, 
-2, 0, 2, 0, 0, 3, 1, 1, 2, 3, 2, 3, 5, 1, 2, 0, 0, 3, 1, 2, 1, 
-2, 3, 10, 1, 1, 3, 2, 2, 1, 6, 2, 0, 6, 2, 4, 1, 3, 4, 2, 3, 
-0, 0, 2, 3, 1, 3, 2, 2, 2, 1, 3, 10, 3, 2, 3, 0, 3, 2, 1, 1, 
-2, 0, 6, 1, 1, 2, 1, 1, 2, 1, 7, 3, 4, 0, 2, 0, 1, 2, 0, 2, 4, 
-4, 1, 0, 0, 1, 4, 4, 0, 1, 2, 3), comid = c(42, 26, 74, 3, 79, 
-90, 24, 55, 88, 19, 63, 25, 98, 53, 13, 27, 46, 70, 45, 61, 30, 
-29, 35, 92, 73, 41, 31, 50, 47, 38, 9, 81, 32, 23, 68, 58, 60, 
-21, 69, 54, 51, 82, 10, 57, 40, 89, 2, 64, 96, 7, 36, 6, 18, 
-59, 84, 11, 67, 95, 94, 5, 33, 20, 65, 56, 52, 77, 16, 66, 78, 
-14, 1, 43, 15, 44, 48, 86, 91, 17, 28, 4, 85, 8, 22, 62, 39, 
-76, 83, 12, 34, 75, 97, 71, 37, 87, 49, 50, 92, 68, 21, 31, 29, 
-23, 30, 58, 60, 32, 38, 35, 61, 73, 81, 41, 9, 47, 53, 3, 90, 
-42, 79, 63, 98, 70, 74, 45, 27, 25, 88, 55, 46, 13, 26, 24, 19, 
-51, 18, 59, 10, 89, 11, 69, 84, 54, 7, 96, 6, 67, 2, 64, 82, 
-36, 40, 57, 71, 17, 83, 22, 91, 12, 75, 4, 39, 34, 85, 76, 37, 
-62, 97, 28, 8, 49, 87, 56, 99, 65, 14, 52, 95, 20, 15, 77, 16, 
-94, 66, 33, 86, 1, 5, 43, 48, 44, 75, 97, 85, 83, 37, 8, 22, 
-39, 76, 71, 62, 17, 12, 91, 49, 87, 4, 34, 28, 96, 59, 11, 7, 
-10, 67, 82, 6, 64, 18, 40, 54, 51, 2, 57, 84, 89, 69, 36, 33, 
-20, 78, 52, 65, 15, 66, 77, 44, 94, 14, 56, 43, 5, 1, 48, 86, 
-16, 95, 79, 63, 19, 90, 55, 46, 53, 26, 42, 24, 27, 98, 70, 88, 
-74, 45, 3, 13, 25, 61, 81, 29, 38, 41, 23, 30, 35, 92, 73, 47, 
-9, 58, 50, 31, 60, 21, 32, 68, 66, 94, 16, 95, 78, 77, 33, 48, 
-56, 65, 86, 20, 1, 15, 5, 14, 52, 44, 43, 58, 30, 35, 31, 60, 
-38, 81, 92, 32, 68, 21, 29, 47, 61, 9, 41, 73, 23, 50, 75, 22, 
-62, 39, 8, 93, 76, 87, 4, 91, 80, 85, 17, 28, 12, 37, 34, 49, 
-83, 3, 26, 74, 42, 13, 98, 88, 25, 63, 79, 19, 27, 24, 46, 72, 
-70, 55, 90, 53, 54, 84, 7, 36, 10, 40, 6, 82, 69, 57, 59, 96, 
-2, 18, 67, 64, 11, 51, 89, 43, 48, 5, 86, 20, 52, 94, 66, 1, 
-14, 15, 78, 44, 77, 16, 33, 65, 95, 56, 34, 39, 12, 85, 93, 80, 
-4, 91, 37, 49, 62, 76, 22, 17, 87, 83, 28, 75, 8, 50, 61, 30, 
-32, 81, 38, 58, 9, 73, 60, 68, 47, 29, 92, 35, 21, 23, 41, 31, 
-10, 89, 40, 57, 6, 96, 69, 84, 64, 36, 51, 7, 67, 59, 18, 82, 
-11, 54, 2, 63, 24, 70, 53, 46, 25, 19, 13, 27, 90, 98, 55, 79, 
-3, 26, 88, 42, 74, 72), iname = c("BorisDzurek", "JohnNishi", 
-"MichaelHeckler", "TomasStarychfojtu", "BoskoBarisic", "AndreSteenkamp", 
-"LanceEgan", "CraigColtman", "HansBock", "LloydStruther", "JohnBuckley", 
-"OlliToivonen", "YoshikoIzumiya", "PauloMorais", "SandroSoldarini", 
-"MarekWalczyk", "AndrewDixon", "StanislawMankou", "YannCaleri", 
-"ArturTrzaskos", "VernBarby", "GianlucaMazzocco", "WilliamKavenagh", 
-"StefanFlorea", "JamieHarries", "JoseDias", "TerenceCourtoreille", 
-"IvicaMagdic", "MikeTinnion", "GeorgeDaniel", "TomasAdam", "MarkYelland", 
-"MiroslavAntal", "ChristopheIdre", "ReneKoops", "VilleAnttiJaakkola", 
-"SeiichiKomatsuzawa", "CraigFarrar", "TimRolston", "NunoDuarte", 
-"BretBishop", "SimonGrootemaat", "PiotrKonieczny", "AlessandroSgrani", 
-"PeterBienek", "KimTribe", "JulienDaguillanes", "JouniNeste", 
-"StephenVarga", "SimonRobinson", "DamienWalsh", "DesArmstrong", 
-"KiyoshiNakagawa", "ScottTucker", "MiroslavKaticic", "AntoninPesek", 
-"ToddOishi", "SabahudinPehadzicBIHI", "MarinkoPuskaric", "LucjanBurda", 
-"MichalBenatinsky", "JoshStephens", "JohnTrench", "PeterElberse", 
-"JarkkoSuominen", "RobertVanRensburg", "DonaldThom", "TakashiKawahara", 
-"DavidEricDavies", "LucaPapandrea", "MartinDroz", "HowardCroston", 
-"AaronWest", "EricLelouvrier", "JoeRiley", "HelderRodrigues", 
-"MisakoIshimura", "JohnBell", "BertrandJacquemin", "JohnHorsey", 
-"AntonioRodrigues", "JannePirkkalainen", "PavelMachan", "TorbjornEriksson", 
-"StanislawGuzdek", "RickyLehman", "PeterDindic", "JanBartko", 
-"AnthonyNaranja", "BrianJeremiah", "JohnBeaven", "JohnFoxton", 
-"ValerioSantiAmantini", "JanKwisthout", "GaryGlenYoung", "IvicaMagdic", 
-"StefanFlorea", "ReneKoops", "CraigFarrar", "TerenceCourtoreille", 
-"GianlucaMazzocco", "ChristopheIdre", "VernBarby", "VilleAnttiJaakkola", 
-"SeiichiKomatsuzawa", "MiroslavAntal", "GeorgeDaniel", "WilliamKavenagh", 
-"ArturTrzaskos", "JamieHarries", "MarkYelland", "JoseDias", "TomasAdam", 
-"MikeTinnion", "PauloMorais", "TomasStarychfojtu", "AndreSteenkamp", 
-"BorisDzurek", "BoskoBarisic", "JohnBuckley", "YoshikoIzumiya", 
-"StanislawMankou", "MichaelHeckler", "YannCaleri", "MarekWalczyk", 
-"OlliToivonen", "HansBock", "CraigColtman", "AndrewDixon", "SandroSoldarini", 
-"JohnNishi", "LanceEgan", "LloydStruther", "BretBishop", "KiyoshiNakagawa", 
-"ScottTucker", "PiotrKonieczny", "KimTribe", "AntoninPesek", 
-"TimRolston", "MiroslavKaticic", "NunoDuarte", "SimonRobinson", 
-"StephenVarga", "DesArmstrong", "ToddOishi", "JulienDaguillanes", 
-"JouniNeste", "SimonGrootemaat", "DamienWalsh", "PeterBienek", 
-"AlessandroSgrani", "JohnFoxton", "JohnBell", "PeterDindic", 
-"PavelMachan", "MisakoIshimura", "JanBartko", "BrianJeremiah", 
-"JohnHorsey", "StanislawGuzdek", "AnthonyNaranja", "AntonioRodrigues", 
-"RickyLehman", "ValerioSantiAmantini", "TorbjornEriksson", "JohnBeaven", 
-"BertrandJacquemin", "JannePirkkalainen", "GaryGlenYoung", "JanKwisthout", 
-"PeterElberse", "DionDavies", "JohnTrench", "LucaPapandrea", 
-"JarkkoSuominen", "SabahudinPehadzicBIHI", "JoshStephens", "AaronWest", 
-"RobertVanRensburg", "DonaldThom", "MarinkoPuskaric", "TakashiKawahara", 
-"MichalBenatinsky", "HelderRodrigues", "MartinDroz", "LucjanBurda", 
-"HowardCroston", "JoeRiley", "EricLelouvrier", "BrianJeremiah", 
-"JohnBeaven", "AntonioRodrigues", "PeterDindic", "ValerioSantiAmantini", 
-"JannePirkkalainen", "PavelMachan", "StanislawGuzdek", "RickyLehman", 
-"JohnFoxton", "TorbjornEriksson", "JohnBell", "JanBartko", "MisakoIshimura", 
-"GaryGlenYoung", "JanKwisthout", "JohnHorsey", "AnthonyNaranja", 
-"BertrandJacquemin", "StephenVarga", "ScottTucker", "AntoninPesek", 
-"SimonRobinson", "PiotrKonieczny", "ToddOishi", "SimonGrootemaat", 
-"DesArmstrong", "JouniNeste", "KiyoshiNakagawa", "PeterBienek", 
-"NunoDuarte", "BretBishop", "JulienDaguillanes", "AlessandroSgrani", 
-"MiroslavKaticic", "KimTribe", "TimRolston", "DamienWalsh", "MichalBenatinsky", 
-"JoshStephens", "DavidEricDavies", "JarkkoSuominen", "JohnTrench", 
-"AaronWest", "TakashiKawahara", "RobertVanRensburg", "EricLelouvrier", 
-"MarinkoPuskaric", "LucaPapandrea", "PeterElberse", "HowardCroston", 
-"LucjanBurda", "MartinDroz", "JoeRiley", "HelderRodrigues", "DonaldThom", 
-"SabahudinPehadzicBIHI", "BoskoBarisic", "JohnBuckley", "LloydStruther", 
-"AndreSteenkamp", "CraigColtman", "AndrewDixon", "PauloMorais", 
-"JohnNishi", "BorisDzurek", "LanceEgan", "MarekWalczyk", "YoshikoIzumiya", 
-"StanislawMankou", "HansBock", "MichaelHeckler", "YannCaleri", 
-"TomasStarychfojtu", "SandroSoldarini", "OlliToivonen", "ArturTrzaskos", 
-"MarkYelland", "GianlucaMazzocco", "GeorgeDaniel", "JoseDias", 
-"ChristopheIdre", "VernBarby", "WilliamKavenagh", "StefanFlorea", 
-"JamieHarries", "MikeTinnion", "TomasAdam", "VilleAnttiJaakkola", 
-"IvicaMagdic", "TerenceCourtoreille", "SeiichiKomatsuzawa", "CraigFarrar", 
-"MiroslavAntal", "ReneKoops", "TakashiKawahara", "MarinkoPuskaric", 
-"DonaldThom", "SabahudinPehadzicBIHI", "DavidEricDavies", "RobertVanRensburg", 
-"MichalBenatinsky", "JoeRiley", "PeterElberse", "JohnTrench", 
-"HelderRodrigues", "JoshStephens", "MartinDroz", "AaronWest", 
-"LucjanBurda", "LucaPapandrea", "JarkkoSuominen", "EricLelouvrier", 
-"HowardCroston", "VilleAnttiJaakkola", "VernBarby", "WilliamKavenagh", 
-"TerenceCourtoreille", "SeiichiKomatsuzawa", "GeorgeDaniel", 
-"MarkYelland", "StefanFlorea", "MiroslavAntal", "ReneKoops", 
-"CraigFarrar", "GianlucaMazzocco", "MikeTinnion", "ArturTrzaskos", 
-"TomasAdam", "JoseDias", "JamieHarries", "ChristopheIdre", "IvicaMagdic", 
-"BrianJeremiah", "PavelMachan", "TorbjornEriksson", "StanislawGuzdek", 
-"JannePirkkalainen", "AidenHodgins", "RickyLehman", "JanKwisthout", 
-"JohnHorsey", "MisakoIshimura", "RandyTaylor", "AntonioRodrigues", 
-"JohnBell", "BertrandJacquemin", "JanBartko", "ValerioSantiAmantini", 
-"AnthonyNaranja", "GaryGlenYoung", "PeterDindic", "TomasStarychfojtu", 
-"JohnNishi", "MichaelHeckler", "BorisDzurek", "SandroSoldarini", 
-"YoshikoIzumiya", "HansBock", "OlliToivonen", "JohnBuckley", 
-"BoskoBarisic", "LloydStruther", "MarekWalczyk", "LanceEgan", 
-"AndrewDixon", "ThibaultGuilpain", "StanislawMankou", "CraigColtman", 
-"AndreSteenkamp", "PauloMorais", "NunoDuarte", "MiroslavKaticic", 
-"SimonRobinson", "DamienWalsh", "PiotrKonieczny", "PeterBienek", 
-"DesArmstrong", "SimonGrootemaat", "TimRolston", "AlessandroSgrani", 
-"ScottTucker", "StephenVarga", "JulienDaguillanes", "KiyoshiNakagawa", 
-"ToddOishi", "JouniNeste", "AntoninPesek", "BretBishop", "KimTribe", 
-"HowardCroston", "JoeRiley", "LucjanBurda", "HelderRodrigues", 
-"JoshStephens", "JarkkoSuominen", "MarinkoPuskaric", "TakashiKawahara", 
-"MartinDroz", "LucaPapandrea", "AaronWest", "DavidEricDavies", 
-"EricLelouvrier", "RobertVanRensburg", "DonaldThom", "MichalBenatinsky", 
-"JohnTrench", "SabahudinPehadzicBIHI", "PeterElberse", "AnthonyNaranja", 
-"StanislawGuzdek", "JanBartko", "AntonioRodrigues", "AidenHodgins", 
-"RandyTaylor", "JohnHorsey", "MisakoIshimura", "ValerioSantiAmantini", 
-"GaryGlenYoung", "TorbjornEriksson", "RickyLehman", "PavelMachan", 
-"JohnBell", "JanKwisthout", "PeterDindic", "BertrandJacquemin", 
-"BrianJeremiah", "JannePirkkalainen", "IvicaMagdic", "ArturTrzaskos", 
-"VernBarby", "MiroslavAntal", "MarkYelland", "GeorgeDaniel", 
-"VilleAnttiJaakkola", "TomasAdam", "JamieHarries", "SeiichiKomatsuzawa", 
-"ReneKoops", "MikeTinnion", "GianlucaMazzocco", "StefanFlorea", 
-"WilliamKavenagh", "CraigFarrar", "ChristopheIdre", "JoseDias", 
-"TerenceCourtoreille", "PiotrKonieczny", "KimTribe", "PeterBienek", 
-"AlessandroSgrani", "DesArmstrong", "StephenVarga", "TimRolston", 
-"MiroslavKaticic", "JouniNeste", "DamienWalsh", "BretBishop", 
-"SimonRobinson", "ToddOishi", "ScottTucker", "KiyoshiNakagawa", 
-"SimonGrootemaat", "AntoninPesek", "NunoDuarte", "JulienDaguillanes", 
-"JohnBuckley", "LanceEgan", "StanislawMankou", "PauloMorais", 
-"AndrewDixon", "OlliToivonen", "LloydStruther", "SandroSoldarini", 
-"MarekWalczyk", "AndreSteenkamp", "YoshikoIzumiya", "CraigColtman", 
-"BoskoBarisic", "TomasStarychfojtu", "JohnNishi", "HansBock", 
-"BorisDzurek", "MichaelHeckler", "ThibaultGuilpain"), country = c("SVK", 
-"CAN", "WAL", "CZE", "CRO", "RSA", "USA", "AUS", "NED", "NZL", 
-"IRE", "FIN", "JPN", "POR", "ITA", "POL", "ENG", "BUL", "FRA", 
-"POL", "AUS", "ITA", "IRE", "ROM", "WAL", "POR", "CAN", "CRO", 
-"ENG", "USA", "CZE", "RSA", "SVK", "FRA", "NED", "FIN", "JPN", 
-"NZL", "RSA", "POR", "USA", "NED", "POL", "ITA", "SVK", "WAL", 
-"FRA", "FIN", "MAL", "ENG", "IRE", "NZL", "JPN", "AUS", "CRO", 
-"CZE", "CAN", "NDI", "CRO", "POL", "SVK", "USA", "IRE", "NED", 
-"FIN", "RSA", "CAN", "JPN", "WAL", "ITA", "CZE", "ENG", "NZL", 
-"FRA", "AUS", "POR", "JPN", "NZL", "FRA", "ENG", "POR", "FIN", 
-"CZE", "SWE", "POL", "AUS", "CRO", "SVK", "USA", "WAL", "CAN", 
-"IRE", "ITA", "NED", "RSA", "CRO", "ROM", "NED", "NZL", "CAN", 
-"ITA", "FRA", "AUS", "FIN", "JPN", "SVK", "USA", "IRE", "POL", 
-"WAL", "RSA", "POR", "CZE", "ENG", "POR", "CZE", "RSA", "SVK", 
-"CRO", "IRE", "JPN", "BUL", "WAL", "FRA", "POL", "FIN", "NED", 
-"AUS", "ENG", "ITA", "CAN", "USA", "NZL", "USA", "JPN", "AUS", 
-"POL", "WAL", "CZE", "RSA", "CRO", "POR", "ENG", "MAL", "NZL", 
-"CAN", "FRA", "FIN", "NED", "IRE", "SVK", "ITA", "IRE", "NZL", 
-"CRO", "CZE", "JPN", "SVK", "WAL", "ENG", "POL", "USA", "POR", 
-"AUS", "ITA", "SWE", "CAN", "FRA", "FIN", "RSA", "NED", "NED", 
-"WAL", "IRE", "ITA", "FIN", "NDI", "USA", "NZL", "RSA", "CAN", 
-"CRO", "JPN", "SVK", "POR", "CZE", "POL", "ENG", "AUS", "FRA", 
-"WAL", "CAN", "POR", "CRO", "ITA", "FIN", "CZE", "POL", "AUS", 
-"IRE", "SWE", "NZL", "SVK", "JPN", "RSA", "NED", "ENG", "USA", 
-"FRA", "MAL", "AUS", "CZE", "ENG", "POL", "CAN", "NED", "NZL", 
-"FIN", "JPN", "SVK", "POR", "USA", "FRA", "ITA", "CRO", "WAL", 
-"RSA", "IRE", "SVK", "USA", "WAL", "FIN", "IRE", "NZL", "JPN", 
-"RSA", "FRA", "CRO", "ITA", "NED", "ENG", "POL", "CZE", "AUS", 
-"POR", "CAN", "NDI", "CRO", "IRE", "NZL", "RSA", "AUS", "ENG", 
-"POR", "CAN", "SVK", "USA", "POL", "JPN", "BUL", "NED", "WAL", 
-"FRA", "CZE", "ITA", "FIN", "POL", "RSA", "ITA", "USA", "POR", 
-"FRA", "AUS", "IRE", "ROM", "WAL", "ENG", "CZE", "FIN", "CRO", 
-"CAN", "JPN", "NZL", "SVK", "NED", "JPN", "CRO", "CAN", "NDI", 
-"WAL", "RSA", "SVK", "AUS", "NED", "IRE", "POR", "USA", "CZE", 
-"NZL", "POL", "ITA", "FIN", "FRA", "ENG", "FIN", "AUS", "IRE", 
-"CAN", "JPN", "USA", "RSA", "ROM", "SVK", "NED", "NZL", "ITA", 
-"ENG", "POL", "CZE", "POR", "WAL", "FRA", "CRO", "WAL", "CZE", 
-"SWE", "POL", "FIN", "IRE", "AUS", "NED", "ENG", "JPN", "CAN", 
-"POR", "NZL", "FRA", "SVK", "ITA", "USA", "RSA", "CRO", "CZE", 
-"CAN", "WAL", "SVK", "ITA", "JPN", "NED", "FIN", "IRE", "CRO", 
-"NZL", "POL", "USA", "ENG", "FRA", "BUL", "AUS", "RSA", "POR", 
-"POR", "CRO", "ENG", "IRE", "POL", "SVK", "NZL", "NED", "RSA", 
-"ITA", "AUS", "MAL", "FRA", "JPN", "CAN", "FIN", "CZE", "USA", 
-"WAL", "ENG", "AUS", "POL", "POR", "USA", "FIN", "CRO", "JPN", 
-"CZE", "ITA", "NZL", "WAL", "FRA", "RSA", "CAN", "SVK", "IRE", 
-"NDI", "NED", "USA", "POL", "SVK", "POR", "IRE", "CAN", "ENG", 
-"JPN", "ITA", "RSA", "SWE", "AUS", "CZE", "NZL", "NED", "CRO", 
-"FRA", "WAL", "FIN", "CRO", "POL", "AUS", "SVK", "RSA", "USA", 
-"FIN", "CZE", "WAL", "JPN", "NED", "ENG", "ITA", "ROM", "IRE", 
-"NZL", "FRA", "POR", "CAN", "POL", "WAL", "SVK", "ITA", "NZL", 
-"MAL", "RSA", "CRO", "FIN", "IRE", "USA", "ENG", "CAN", "AUS", 
-"JPN", "NED", "CZE", "POR", "FRA", "IRE", "USA", "BUL", "POR", 
-"ENG", "FIN", "NZL", "ITA", "POL", "RSA", "JPN", "AUS", "CRO", 
-"CZE", "CAN", "NED", "SVK", "WAL", "FRA")), .Names = c("sector", 
-"session", "beatboat", "numbers", "comid", "iname", "country"), row.names = c("1", 
-"2", "3", "4", "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", "31", "32", "33", "34", "35", 
-"36", "37", "38", "39", "40", "41", "42", "43", "44", "45", "46", 
-"47", "48", "49", "50", "51", "52", "53", "54", "55", "56", "57", 
-"58", "59", "60", "61", "62", "63", "64", "65", "66", "67", "68", 
-"69", "70", "71", "72", "73", "74", "75", "76", "77", "78", "79", 
-"80", "81", "82", "83", "84", "85", "86", "87", "88", "89", "90", 
-"91", "92", "93", "94", "95", "96", "97", "98", "99", "100", 
-"101", "102", "103", "104", "105", "106", "107", "108", "109", 
-"110", "111", "112", "113", "114", "115", "116", "117", "118", 
-"119", "120", "121", "122", "123", "124", "125", "126", "127", 
-"128", "129", "130", "131", "132", "133", "134", "135", "136", 
-"137", "138", "139", "140", "141", "142", "143", "144", "145", 
-"146", "147", "148", "149", "150", "151", "152", "153", "154", 
-"155", "156", "157", "158", "159", "160", "161", "162", "163", 
-"164", "165", "166", "167", "168", "169", "170", "171", "172", 
-"173", "174", "175", "176", "177", "178", "179", "180", "181", 
-"182", "183", "184", "185", "186", "187", "188", "189", "190", 
-"191", "192", "193", "194", "195", "196", "197", "198", "199", 
-"200", "201", "202", "203", "204", "205", "206", "207", "208", 
-"209", "210", "211", "212", "213", "214", "215", "216", "217", 
-"218", "219", "220", "221", "222", "223", "224", "225", "226", 
-"227", "228", "229", "230", "231", "232", "233", "234", "235", 
-"236", "237", "238", "239", "240", "241", "242", "243", "244", 
-"245", "246", "247", "248", "249", "250", "251", "252", "253", 
-"254", "255", "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", "283", "284", "285", "286", "287", "288", "289", 
-"290", "291", "292", "293", "294", "295", "296", "297", "298", 
-"299", "300", "301", "302", "303", "304", "305", "306", "307", 
-"308", "309", "310", "311", "312", "313", "314", "315", "316", 
-"317", "318", "319", "320", "321", "322", "323", "324", "325", 
-"326", "327", "328", "329", "330", "331", "332", "333", "334", 
-"335", "336", "337", "338", "339", "340", "341", "342", "343", 
-"344", "345", "346", "347", "348", "349", "350", "351", "352", 
-"353", "354", "355", "356", "357", "358", "359", "360", "361", 
-"362", "363", "364", "365", "366", "367", "368", "369", "370", 
-"371", "372", "373", "374", "375", "376", "377", "378", "379", 
-"380", "381", "382", "383", "384", "385", "386", "387", "388", 
-"389", "390", "391", "392", "393", "394", "395", "396", "397", 
-"398", "399", "400", "401", "402", "403", "404", "405", "406", 
-"407", "408", "409", "410", "411", "412", "413", "414", "415", 
-"416", "417", "418", "419", "420", "421", "422", "423", "424", 
-"425", "426", "427", "428", "429", "430", "431", "432", "433", 
-"434", "435", "436", "437", "438", "439", "440", "441", "442", 
-"443", "444", "445", "446", "447", "448", "449", "450", "451", 
-"452", "453", "454", "455", "456", "457", "458", "459", "460", 
-"461", "462", "463", "464", "465", "466", "467", "468", "469", 
-"470", "471", "472", "473", "474", "475"), class = "data.frame")
diff --git a/data/wffc.nc.rda b/data/wffc.nc.rda
new file mode 100644
index 0000000..8d16499
Binary files /dev/null and b/data/wffc.nc.rda differ
diff --git a/data/wffc.rda b/data/wffc.rda
new file mode 100644
index 0000000..7d9906a
Binary files /dev/null and b/data/wffc.rda differ
diff --git a/data/wffc.teams.R b/data/wffc.teams.R
deleted file mode 100644
index 3aa4aa7..0000000
--- a/data/wffc.teams.R
+++ /dev/null
@@ -1,14 +0,0 @@
-"wffc.teams" <-
-structure(list(country = c("CZE", "NZL", "FRA", "POL", "ITA", 
-"ENG", "SVK", "USA", "CAN", "FIN", "IRE", "AUS", "POR", "JPN", 
-"RSA", "NED", "WAL", "CRO"), totalPlacings = c(125, 148, 164, 
-186, 196, 197, 202, 203, 227, 229, 249, 269, 293, 307, 315, 321, 
-328, 333), points = c(241300, 205540, 208040, 170000, 162320, 
-167480, 169800, 165960, 147940, 145100, 138160, 119920, 115380, 
-90520, 76200, 93080, 58560, 97740), noofcaptures = c(383, 325, 316, 
-284, 263, 272, 267, 282, 247, 230, 240, 185, 189, 142, 121, 164, 
-86, 166), longestfish = c(540, 627, 585, 580, 580, 689, 615, 
-615, 624, 688, 535, 580, 590, 532, 604, 505, 590, 568)), .Names = c("country", 
-"totalPlacings", "points", "noofcaptures", "longestfish"), row.names = c("1", 
-"2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", 
-"14", "15", "16", "17", "18"), class = "data.frame")
diff --git a/data/wffc.teams.rda b/data/wffc.teams.rda
new file mode 100644
index 0000000..d810566
Binary files /dev/null and b/data/wffc.teams.rda differ
diff --git a/inst/doc/categoricalVGAM.pdf b/inst/doc/categoricalVGAM.pdf
index 9de2443..8bb3f9a 100644
Binary files a/inst/doc/categoricalVGAM.pdf and b/inst/doc/categoricalVGAM.pdf differ
diff --git a/man/CommonVGAMffArguments.Rd b/man/CommonVGAMffArguments.Rd
index e8a8fd6..f1ad488 100644
--- a/man/CommonVGAMffArguments.Rd
+++ b/man/CommonVGAMffArguments.Rd
@@ -15,8 +15,8 @@
 \usage{
 TypicalVGAMfamilyFunction(lsigma = "loge", esigma = list(), isigma = NULL,
                           parallel = TRUE, shrinkage.init = 0.95,
-                          nointercept = NULL, method.init = 1,
-                          prob.x = c(0.15, 0.85),
+                          nointercept = NULL, imethod = 1,
+                          prob.x = c(0.15, 0.85), mv = FALSE,
                           oim = FALSE, nsimEIM = 100, zero = NULL)
 }
 \arguments{
@@ -81,15 +81,15 @@ TypicalVGAMfamilyFunction(lsigma = "loge", esigma = list(), isigma = NULL,
 
 
   }
-  \item{method.init}{
+  \item{imethod}{
   An integer with value \code{1} or \code{2} or \code{3} or ... which
   specifies the initialization method for some parameters or a specific
   parameter.
   If failure to converge occurs try the next higher value, and
   continue until success.
-  For example, \code{method.init = 1} might be the method of moments,
-  and \code{method.init = 2} might be another method.
-  If no value of \code{method.init} works then it will be necessary
+  For example, \code{imethod = 1} might be the method of moments,
+  and \code{imethod = 2} might be another method.
+  If no value of \code{imethod} works then it will be necessary
   to use arguments such as \code{isigma}.
   For many \pkg{VGAM} family functions it is advisable to try
   this argument with all possible values to safeguard against
@@ -178,7 +178,7 @@ TypicalVGAMfamilyFunction(lsigma = "loge", esigma = list(), isigma = NULL,
   For many types of models this method seems to work well and is often
   reasonably robust to outliers in the response.
   Often this argument is only used if
-  the argument \code{method.init} is assigned a certain value.
+  the argument \code{imethod} is assigned a certain value.
 
   }
   \item{nointercept}{
@@ -189,6 +189,24 @@ TypicalVGAMfamilyFunction(lsigma = "loge", esigma = list(), isigma = NULL,
 
   }
 
+  \item{mv}{
+  Logical.
+  Some \pkg{VGAM} family functions allow a multivariate or vector response.
+  If so, then usually the response is a matrix with columns
+  corresponding to the individual response variables.
+  They are all fitted simultaneously.
+  Arguments such as \code{parallel} may then be useful to allow
+  for relationships between the regressions of each response variable.
+  If \code{mv = TRUE} then sometimes the response is interpreted
+  differently, e.g., \code{\link{posbinomial}} chooses the first
+  column of a matrix response as success and combines the other
+  columns as failure, but when \code{mv = TRUE} then each column
+  of the response matrix is the number of successes and the
+  \code{weights} argument is of the same dimension as the
+  response and contains the number of trials.
+
+  }
+
 }
 \value{
   An object of class \code{"vglmff"} (see \code{\link{vglmff-class}}).
diff --git a/man/Inv.gaussian.Rd b/man/Inv.gaussian.Rd
index b5c554f..cc11c56 100644
--- a/man/Inv.gaussian.Rd
+++ b/man/Inv.gaussian.Rd
@@ -37,6 +37,7 @@ rinv.gaussian(n, mu, lambda)
 % \code{qinv.gaussian} gives the quantile function, and
   \code{rinv.gaussian} generates random deviates.
 
+
 }
 \references{
 Johnson, N. L. and Kotz, S. and Balakrishnan, N. (1994)
@@ -64,9 +65,11 @@ New York: Wiley.
 }
 \note{
   Currently \code{qinv.gaussian} is unavailable.
+
 }
 \seealso{
-  \code{\link{inv.gaussianff}}.
+  \code{\link{inv.gaussianff}},
+  \code{\link{wald}}.
 
 
 }
diff --git a/man/Rcam.Rd b/man/Rcam.Rd
index d324ff5..8df357d 100644
--- a/man/Rcam.Rd
+++ b/man/Rcam.Rd
@@ -2,13 +2,14 @@
 \alias{Rcam}
 %- Also NEED an '\alias' for EACH other topic documented here.
 \title{
-  Mark the baseline of row and column on a matrix data 
+  Mark the Baseline of Row and Column on a Matrix data 
 
 }
 \description{
-  This function will grab the baseline of row and column for
-  the rank-zero model of row-column association models or main
-  effects models.
+  Rearrange the rows and columns of the input so
+  that the first row and first column are baseline.
+  This function is for rank-zero row-column association models
+  (RCAMs; i.e., general main effects models).
 
 }
 \usage{
@@ -18,44 +19,51 @@
 %- maybe also 'usage' for other objects documented here.
 \arguments{
 \item{mat}{
-  Matrix of \eqn{r} by \eqn{c}.
-  The matrix is better labeled with row and column names.
+  Matrix, of dimension \eqn{r} by \eqn{c}.
+  It is best that it is labelled with row and column names.
 
 }
-\item{rbaseline}{
-  Numeric (row number of the matrix y) or can be 
-  character of row names of the matrix \code{y} that user
-  wants it as row baseline or reference. 
-  Similarly \code{cbaseline} for the column
-
-}
-\item{cbaseline}{
- Numeric of column number of the matrix \code{mat}, or can be 
- Character of column names of the matrix \code{mat} that user
- wants it as column baseline or reference.
+\item{rbaseline, cbaseline}{
+  Numeric (row number of the matrix \code{mat}) or
+  character (matching a row name of \code{mat}) that the user
+  wants as the row baseline or reference level. 
+  Similarly \code{cbaseline} for the column.
 
 }
 }
 \details{
-  In some regression analysis, it is necessary to put the baseline
-  (or reference) of the factor, and as well in rank-zero of
-  row-column association model. It should be done by marking
-  a baseline on a level of row and column.  This is a data
-  preprocessing function for \code{\link{rcam}}.
+  This is a data preprocessing function for \code{\link{rcam}}.
+  For rank-zero row-column association models this function
+  establishes the baseline (or reference) levels of the matrix
+  response with respect to the row and columns---these become
+  the new first row and column.
 
 }
 
 \value{
-  Matrix of the same dimension as the input, rearranged the first
-  row or column.
+  Matrix of the same dimension as the input,
+  with \code{rbaseline} and \code{cbaseline} specifying the 
+  first rows and columns.
+  The default is no change in \code{mat}.
 
 }
 \author{
-Alfian F. Hadi.
+Alfian F. Hadi and T. W. Yee.
 
 }
 \note{
-This is a data preprocessing function for \code{\link{rcam}}.
+  This function is similar to \code{\link{moffset}}; see
+  \code{\link{moffset}} for information about the differences.
+  If numeric, the arguments
+  \code{rbaseline}
+  and
+  \code{cbaseline}
+  differ from arguments 
+  \code{roffset} 
+  and 
+  \code{coffset}
+  in \code{\link{moffset}}
+  by 1 (when elements of the matrix agree).
 
 }
 
@@ -67,6 +75,8 @@ This is a data preprocessing function for \code{\link{rcam}}.
 
 }
 \examples{
-(alcoff.e <- moffset(alcoff, roffset = "6"))
-Rcam(alcoff.e, rbaseline = "11", cbaseline = "Monday")
+(alcoff.e <- moffset(alcoff, roffset = "6", postfix = "*"))
+(aa = Rcam(alcoff,    rbaseline = "11", cbaseline = "Sunday"))
+(bb = moffset(alcoff,             "11",             "Sunday", postfix = "*"))
+aa - bb   # Notice the difference!
 }
diff --git a/man/VGAM-package.Rd b/man/VGAM-package.Rd
index 18c6a06..72a0afd 100644
--- a/man/VGAM-package.Rd
+++ b/man/VGAM-package.Rd
@@ -87,33 +87,40 @@ Reduced-rank vector generalized linear models.
 \emph{Statistical Modelling},
 \bold{3}, 15--41.
 
+
 Yee, T. W. and Stephenson, A. G. (2007)
 Vector generalized linear and additive extreme value models.
 \emph{Extremes}, \bold{10}, 1--19.
 
+
 Yee, T. W. and Wild, C. J. (1996)
 Vector generalized additive models.
 \emph{Journal of the Royal Statistical Society, Series B, Methodological},
 \bold{58}, 481--493.
 
+
 Yee, T. W. (2004)
 A new technique for maximum-likelihood
 canonical Gaussian ordination.
 \emph{Ecological Monographs},
 \bold{74}, 685--701.
 
+
 Yee, T. W. (2006)
 Constrained additive ordination.
 \emph{Ecology}, \bold{87}, 203--213.
 
+
 Yee, T. W. (2008)
 The \code{VGAM} Package.
 \emph{R News}, \bold{8}, 28--39.
 
+
 Documentation accompanying the \pkg{VGAM} package at
 \url{http://www.stat.auckland.ac.nz/~yee/VGAM}
 contains further information and examples.
 
+
 }
 
 \keyword{ package }
@@ -134,6 +141,7 @@ fit at y   # Sample proportions
 weights(fit, type = "prior") # Number of observations
 coef(fit, matrix = TRUE)     # p.179, in McCullagh and Nelder (1989)
 constraints(fit)             # Constraint matrices
+summary(fit)
 
 
 # Example 2; zero-inflated Poisson model
diff --git a/man/alaplace3.Rd b/man/alaplace3.Rd
index 18bdfd6..7abe2b9 100644
--- a/man/alaplace3.Rd
+++ b/man/alaplace3.Rd
@@ -14,7 +14,7 @@
 alaplace1(tau = NULL, llocation = "identity", elocation = list(),
           ilocation = NULL, kappa = sqrt(tau/(1 - tau)), Scale.arg = 1,
           shrinkage.init = 0.95, parallelLocation = FALSE, digt = 4,
-          dfmu.init = 3, intparloc = FALSE, method.init = 1)
+          dfmu.init = 3, intparloc = FALSE, imethod = 1)
 
 alaplace2(tau = NULL,  llocation = "identity", lscale = "loge",
           elocation = list(), escale = list(),
@@ -22,12 +22,12 @@ alaplace2(tau = NULL,  llocation = "identity", lscale = "loge",
           shrinkage.init = 0.95,
           parallelLocation = FALSE, digt = 4, sameScale = TRUE,
           dfmu.init = 3, intparloc = FALSE, 
-          method.init = 1, zero = -2)
+          imethod = 1, zero = -2)
 
 alaplace3(llocation = "identity", lscale = "loge", lkappa = "loge",
           elocation = list(), escale = list(), ekappa = list(),
           ilocation = NULL, iscale = NULL, ikappa = 1,
-          method.init = 1, zero = 2:3)
+          imethod = 1, zero = 2:3)
 }
 %- maybe also 'usage' for other objects documented here.
 \arguments{
@@ -80,7 +80,7 @@ alaplace3(llocation = "identity", lscale = "loge", lkappa = "loge",
 
 
   }
-  \item{method.init}{
+  \item{imethod}{
   Initialization method.
   Either the value 1, 2, 3 or 4.
 
@@ -89,7 +89,7 @@ alaplace3(llocation = "identity", lscale = "loge", lkappa = "loge",
   Degrees of freedom for the cubic smoothing spline fit applied to
   get an initial estimate of the location parameter.
   See \code{\link{vsmooth.spline}}.
-  Used only when \code{method.init = 3}.
+  Used only when \code{imethod = 3}.
 
   }
   \item{shrinkage.init}{
@@ -97,7 +97,7 @@ alaplace3(llocation = "identity", lscale = "loge", lkappa = "loge",
   The value must be between 0 and 1 inclusive, and
   a value of 0 means the individual response values are used,
   and a value of 1 means the median or mean is used.
-  This argument is used only when \code{method.init = 4}.
+  This argument is used only when \code{imethod = 4}.
   See \code{\link{CommonVGAMffArguments}} for more information.
 
   }
diff --git a/man/amh.Rd b/man/amh.Rd
index b4f5cb5..10cc584 100644
--- a/man/amh.Rd
+++ b/man/amh.Rd
@@ -10,7 +10,7 @@
 }
 \usage{
 amh(lalpha = "rhobit", ealpha = list(), ialpha = NULL,
-    method.init = 1, nsimEIM = 250)
+    imethod = 1, nsimEIM = 250)
 }
 %- maybe also 'usage' for other objects documented here.
 \arguments{
@@ -30,10 +30,10 @@ amh(lalpha = "rhobit", ealpha = list(), ialpha = NULL,
   Numeric. Optional initial value for \eqn{\alpha}{alpha}.
   By default, an initial value is chosen internally.
   If a convergence failure occurs try assigning a different value.
-  Assigning a value will override the argument \code{method.init}.
+  Assigning a value will override the argument \code{imethod}.
 
   }
-  \item{method.init}{
+  \item{imethod}{
   An integer with value \code{1} or \code{2} which
   specifies the initialization method. If failure to converge occurs
   try the other value, or else specify a value for \code{ialpha}.
diff --git a/man/amlexponential.Rd b/man/amlexponential.Rd
index 5db82c6..894f644 100644
--- a/man/amlexponential.Rd
+++ b/man/amlexponential.Rd
@@ -8,7 +8,7 @@
 
 }
 \usage{
-amlexponential(w.aml = 1, parallel = FALSE, method.init = 1, digw = 4,
+amlexponential(w.aml = 1, parallel = FALSE, imethod = 1, digw = 4,
                link = "loge", earg = list())
 }
 %- maybe also 'usage' for other objects documented here.
@@ -31,7 +31,7 @@ amlexponential(w.aml = 1, parallel = FALSE, method.init = 1, digw = 4,
   See \code{\link{CommonVGAMffArguments}} for more information.
 
   }
-  \item{method.init}{
+  \item{imethod}{
   Integer, either 1 or 2 or 3. Initialization method.
   Choose another value if convergence fails.
 
diff --git a/man/amlnormal.Rd b/man/amlnormal.Rd
index ccf65c8..ad9577d 100644
--- a/man/amlnormal.Rd
+++ b/man/amlnormal.Rd
@@ -12,7 +12,7 @@
 }
 \usage{
 amlnormal(w.aml = 1, parallel = FALSE, lexpectile = "identity",
-          eexpectile = list(), iexpectile = NULL, method.init = 1, digw = 4)
+          eexpectile = list(), iexpectile = NULL, imethod = 1, digw = 4)
 }
 %- maybe also 'usage' for other objects documented here.
 \arguments{
@@ -38,7 +38,7 @@ amlnormal(w.aml = 1, parallel = FALSE, lexpectile = "identity",
   See \code{\link{CommonVGAMffArguments}} for more information.
 
   }
-  \item{method.init}{
+  \item{imethod}{
   Integer, either 1 or 2 or 3. Initialization method.
   Choose another value if convergence fails.
 
diff --git a/man/amlpoisson.Rd b/man/amlpoisson.Rd
index 1718a81..285fc5b 100644
--- a/man/amlpoisson.Rd
+++ b/man/amlpoisson.Rd
@@ -8,7 +8,7 @@
 
 }
 \usage{
-amlpoisson(w.aml = 1, parallel = FALSE, method.init = 1, digw = 4,
+amlpoisson(w.aml = 1, parallel = FALSE, imethod = 1, digw = 4,
            link = "loge", earg = list())
 }
 %- maybe also 'usage' for other objects documented here.
@@ -31,7 +31,7 @@ amlpoisson(w.aml = 1, parallel = FALSE, method.init = 1, digw = 4,
   See \code{\link{CommonVGAMffArguments}} for more information.
 
   }
-  \item{method.init}{
+  \item{imethod}{
   Integer, either 1 or 2 or 3. Initialization method.
   Choose another value if convergence fails.
 
diff --git a/man/benfUC.Rd b/man/benfUC.Rd
index afd56bf..ead2657 100644
--- a/man/benfUC.Rd
+++ b/man/benfUC.Rd
@@ -56,7 +56,7 @@ obeys the law
         P(D=d) =  log10(1 + 1/d)}
 for \eqn{d=1,\ldots,9}.
 This means
-the probability the first\ significant\ digit is 1 is
+the probability the first significant digit is 1 is
 approximately \eqn{0.301}, etc.
 
 
diff --git a/man/benini.Rd b/man/benini.Rd
index cb6b2f3..b789935 100644
--- a/man/benini.Rd
+++ b/man/benini.Rd
@@ -9,7 +9,7 @@
 }
 \usage{
 benini(y0 = stop("argument 'y0' must be specified"),
-       lshape = "loge", earg = list(), ishape = NULL, method.init = 1)
+       lshape = "loge", earg = list(), ishape = NULL, imethod = 1)
 }
 %- maybe also 'usage' for other objects documented here.
 \arguments{
@@ -34,7 +34,7 @@ benini(y0 = stop("argument 'y0' must be specified"),
   The default is to compute the value internally.
 
   }
-  \item{method.init}{
+  \item{imethod}{
   An integer with value \code{1} or \code{2} which
   specifies the initialization method. If failure to converge occurs
   try the other value, or else specify a value for \code{ishape}.
diff --git a/man/beniniUC.Rd b/man/beniniUC.Rd
index 8d4659a..b8e3a14 100644
--- a/man/beniniUC.Rd
+++ b/man/beniniUC.Rd
@@ -11,7 +11,7 @@
   \code{shape}.
 }
 \usage{
-dbenini(x, shape, y0, log=FALSE)
+dbenini(x, shape, y0, log = FALSE)
 pbenini(q, shape, y0)
 qbenini(p, shape, y0)
 rbenini(n, shape, y0)
@@ -25,7 +25,7 @@ rbenini(n, shape, y0)
   \item{y0}{the scale parameter \eqn{y_0}{y0}.}
   \item{log}{
   Logical.
-  If \code{log=TRUE} then the logarithm of the density is returned.
+  If \code{log = TRUE} then the logarithm of the density is returned.
 
   }
 
@@ -61,17 +61,18 @@ Hoboken, NJ: Wiley-Interscience.
 \examples{
 \dontrun{
 y0 = 1; shape = exp(1)
-xx = seq(0.0, 4, len=101)
-plot(xx, dbenini(xx, y0=y0,shape=shape), type="l", col="blue", las=1,
-     main="Blue is density, red is cumulative distribution function",
-     sub="Purple lines are the 10,20,...,90 percentiles", ylim=0:1,
-     ylab="", xlab="x")
-abline(h=0, col="blue", lty=2)
-lines(xx, pbenini(xx, y0=y0,shape=shape), col="red")
-probs = seq(0.1, 0.9, by=0.1)
-Q = qbenini(probs, y0=y0,shape=shape)
-lines(Q, dbenini(Q, y0=y0,shape=shape), col="purple", lty=3, type="h")
-pbenini(Q, y0=y0,shape=shape) - probs    # Should be all zero
+xx = seq(0.0, 4, len = 101)
+plot(xx, dbenini(xx, y0 = y0,shape = shape), type = "l", col = "blue",
+     main = "Blue is density, orange is cumulative distribution function",
+     sub = "Purple lines are the 10,20,...,90 percentiles", ylim = 0:1,
+     las = 1, ylab = "", xlab = "x")
+abline(h = 0, col = "blue", lty = 2)
+lines(xx, pbenini(xx, y0 = y0, shape = shape), col = "orange")
+probs = seq(0.1, 0.9, by = 0.1)
+Q = qbenini(probs, y0 = y0, shape = shape)
+lines(Q, dbenini(Q, y0 = y0, shape = shape),
+      col = "purple", lty = 3, type = "h")
+pbenini(Q, y0 = y0, shape = shape) - probs    # Should be all zero
 }
 }
 \keyword{distribution}
diff --git a/man/beta.ab.Rd b/man/beta.ab.Rd
index 994b7d4..ac3b590 100644
--- a/man/beta.ab.Rd
+++ b/man/beta.ab.Rd
@@ -8,10 +8,10 @@
 
 }
 \usage{
-beta.ab(lshape1="loge", lshape2="loge",
-        eshape1=list(), eshape2=list(),
+beta.ab(lshape1 = "loge", lshape2 = "loge",
+        eshape1 = list(), eshape2 = list(),
         i1 = NULL, i2 = NULL, trim = 0.05,
-        A = 0, B = 1, parallel=FALSE, zero=NULL)
+        A = 0, B = 1, parallel = FALSE, zero = NULL)
 }
 %- maybe also 'usage' for other objects documented here.
 \arguments{
@@ -64,6 +64,7 @@ beta.ab(lshape1="loge", lshape2="loge",
   (shape1 + shape2)}{E(Y) = A + (B-A) * shape1 /
   (shape1 + shape2)}, and these are the fitted values of the object.
 
+
   For the standard beta distribution the variance of \eqn{Y} is
   \eqn{shape1 \times shape2 / [(1+shape1+shape2) \times (shape1+shape2)^2]}{
        shape1 * shape2 / ((1+shape1+shape2) * (shape1+shape2)^2)}.
@@ -73,12 +74,15 @@ beta.ab(lshape1="loge", lshape2="loge",
   \eqn{\mu=shape1 / (shape1 + shape2)}{mu=shape1 / (shape1 + shape2)}
   is the mean of \eqn{Y}.
 
+
   Another parameterization of the beta distribution involving the mean
   and a precision parameter is implemented in \code{\link{betaff}}.
 
+
   If \eqn{A} and \eqn{B} are unknown, then the \pkg{VGAM} family function
   \code{beta4()} can be used to estimate these too.
 
+
 }
 \value{
   An object of class \code{"vglmff"} (see \code{\link{vglmff-class}}).
@@ -86,6 +90,7 @@ beta.ab(lshape1="loge", lshape2="loge",
   \code{\link{rrvglm}}
   and \code{\link{vgam}}.
 
+
 }
 \references{ 
   Johnson, N. L. and Kotz, S. and Balakrishnan, N. (1995) 
@@ -93,14 +98,17 @@ beta.ab(lshape1="loge", lshape2="loge",
   \emph{Continuous Univariate Distributions},
   2nd edition, Volume 2, New York: Wiley.
 
+
   Gupta, A. K. and Nadarajah, S. (2004)
   \emph{Handbook of Beta Distribution and Its Applications},
   New York: Marcel Dekker.
 
+
 %Evans, M., Hastings, N. and Peacock, B. (2000)
 %\emph{Statistical Distributions},
 %New York: Wiley-Interscience, Third edition.
 
+
   Documentation accompanying the \pkg{VGAM} package at
   \url{http://www.stat.auckland.ac.nz/~yee}
   contains further information and examples.
diff --git a/man/betabin.ab.Rd b/man/betabin.ab.Rd
index 096d30d..5e2fcf1 100644
--- a/man/betabin.ab.Rd
+++ b/man/betabin.ab.Rd
@@ -10,7 +10,7 @@
 }
 \usage{
 betabin.ab(lshape12 = "loge", earg = list(), i1 = 1, i2 = NULL,
-           method.init=1, shrinkage.init=0.95, nsimEIM=NULL, zero=NULL)
+           imethod = 1, shrinkage.init = 0.95, nsimEIM = NULL, zero = NULL)
 }
 %- maybe also 'usage' for other objects documented here.
 \arguments{
@@ -38,12 +38,12 @@ betabin.ab(lshape12 = "loge", earg = list(), i1 = 1, i2 = NULL,
   as an intercept only.  If assigned, the single value should be either
   \code{1} or \code{2}.  The default is to model both shape parameters
   as functions of the covariates.  If a failure to converge occurs,
-  try \code{zero=2}.
+  try \code{zero = 2}.
 
   }
-  \item{shrinkage.init, nsimEIM, method.init}{
+  \item{shrinkage.init, nsimEIM, imethod}{
   See \code{\link{CommonVGAMffArguments}} for more information.
-  The argument \code{shrinkage.init} is used only if \code{method.init=2}.
+  The argument \code{shrinkage.init} is used only if \code{imethod = 2}.
   Using the argument \code{nsimEIM} may offer large advantages for large
   values of \eqn{N} and/or large data sets.
 
@@ -110,7 +110,7 @@ betabin.ab(lshape12 = "loge", earg = list(), i1 = 1, i2 = NULL,
   Suppose \code{fit} is a fitted beta-binomial model. Then
   \code{fit at y} contains the sample proportions \eqn{y},
   \code{fitted(fit)} returns estimates of \eqn{E(Y)}, and
-  \code{weights(fit, type="prior")} returns the number
+  \code{weights(fit, type = "prior")} returns the number
   of trials \eqn{N}.
 
 
@@ -165,7 +165,7 @@ betabin.ab(lshape12 = "loge", earg = list(), i1 = 1, i2 = NULL,
   due to the expected information matrices not being positive-definite
   or ill-conditioned over some regions of the parameter space.
   If problems occur try setting \code{i1} to be some other
-  positive value, using \code{i2} and/or setting \code{zero=2}.
+  positive value, using \code{i2} and/or setting \code{zero = 2}.
 
 
   This family function may be renamed in the future.
@@ -184,51 +184,52 @@ betabin.ab(lshape12 = "loge", earg = list(), i1 = 1, i2 = NULL,
 }
 \examples{
 # Example 1
-N = 10; s1=exp(1); s2=exp(2)
-y = rbetabin.ab(n=100, size=N, shape1=s1, shape2=s2)
-fit = vglm(cbind(y,N-y) ~ 1, betabin.ab, trace=TRUE)
-coef(fit, matrix=TRUE)
+N = 10; s1 = exp(1); s2 = exp(2)
+y = rbetabin.ab(n = 100, size = N, shape1 = s1, shape2 = s2)
+fit = vglm(cbind(y, N-y) ~ 1, betabin.ab, trace = TRUE)
+coef(fit, matrix = TRUE)
 Coef(fit)
 head(fit at misc$rho) # The correlation parameter
-head(cbind(fit at y, weights(fit, type="prior")))
+head(cbind(fit at y, weights(fit, type = "prior")))
 
 
 # Example 2
-fit = vglm(cbind(R,N-R) ~ 1, betabin.ab, data=lirat, tra=TRUE, subset=N>1)
-coef(fit, matrix=TRUE)
+fit = vglm(cbind(R, N-R) ~ 1, betabin.ab, data = lirat,
+           trace = TRUE, subset = N > 1)
+coef(fit, matrix = TRUE)
 Coef(fit)
 fit at misc$rho      # The correlation parameter
 t(fitted(fit))
 t(fit at y)
-t(weights(fit, type="prior"))
+t(weights(fit, type = "prior"))
 # A "loge" link for the 2 shape parameters is a logistic regression:
 all.equal(c(fitted(fit)),
-          c(logit(predict(fit)[,1] - predict(fit)[,2], inverse=TRUE)))
+          c(logit(predict(fit)[, 1] - predict(fit)[, 2], inverse = TRUE)))
 
 
 # Example 3, which is more complicated
 lirat = transform(lirat, fgrp = factor(grp))
 summary(lirat)   # Only 5 litters in group 3
-fit2 = vglm(cbind(R,N-R) ~ fgrp + hb, betabin.ab(zero = 2),
-           data = lirat, trace = TRUE, subset = N>1)
-coef(fit2, matrix=TRUE)
+fit2 = vglm(cbind(R, N-R) ~ fgrp + hb, betabin.ab(zero = 2),
+           data = lirat, trace = TRUE, subset = N > 1)
+coef(fit2, matrix = TRUE)
 Coef(fit2)
-coef(fit2, matrix=TRUE)[,1] - coef(fit2, matrix=TRUE)[,2] # logit(p)
+coef(fit2, matrix = TRUE)[, 1] - coef(fit2, matrix = TRUE)[, 2] # logit(p)
 \dontrun{ with(lirat, plot(hb[N>1], fit2 at misc$rho,
-                 xlab = "Hemoglobin", ylab="Estimated rho",
+                 xlab = "Hemoglobin", ylab = "Estimated rho",
                  pch = as.character(grp[N>1]), col = grp[N>1]))
 }
 \dontrun{ # cf. Figure 3 of Moore and Tsiatis (1991)
-with(lirat, plot(hb, R/N, pch=as.character(grp), col=grp, las=1,
-            xlab="Hemoglobin level", ylab="Proportion Dead",
-            main="Fitted values (lines)"))
+with(lirat, plot(hb, R/N, pch = as.character(grp), col = grp, las = 1,
+            xlab = "Hemoglobin level", ylab = "Proportion Dead",
+            main = "Fitted values (lines)"))
 
 smalldf = with(lirat, lirat[N>1,])
 for(gp in 1:4) {
-    xx = with(smalldf, hb[grp==gp])
-    yy = with(smalldf, fitted(fit2)[grp==gp])
+    xx = with(smalldf, hb[grp == gp])
+    yy = with(smalldf, fitted(fit2)[grp == gp])
     ooo = order(xx)
-    lines(xx[ooo], yy[ooo], col=gp) } }
+    lines(xx[ooo], yy[ooo], col = gp) } }
 }
 \keyword{models}
 \keyword{regression}
diff --git a/man/betabinUC.Rd b/man/betabinUC.Rd
index 52f8e26..ece7921 100644
--- a/man/betabinUC.Rd
+++ b/man/betabinUC.Rd
@@ -15,11 +15,11 @@
 
 }
 \usage{
-dbetabin(x, size, prob, rho, log=FALSE)
-pbetabin(q, size, prob, rho, log.p=FALSE)
+dbetabin(x, size, prob, rho, log = FALSE)
+pbetabin(q, size, prob, rho, log.p = FALSE)
 rbetabin(n, size, prob, rho)
-dbetabin.ab(x, size, shape1, shape2, log=FALSE)
-pbetabin.ab(q, size, shape1, shape2, log.p=FALSE)
+dbetabin.ab(x, size, shape1, shape2, log = FALSE)
+pbetabin.ab(q, size, shape1, shape2, log.p = FALSE)
 rbetabin.ab(n, size, shape1, shape2)
 }
 \arguments{
@@ -63,7 +63,7 @@ rbetabin.ab(n, size, shape1, shape2)
   probability of success is not a constant but it is generated from a
   beta distribution with parameters \code{shape1} and \code{shape2}.
   Note that the mean of this beta distribution is
-  \code{mu=shape1/(shape1+shape2)}, which therefore is the
+  \code{mu = shape1/(shape1+shape2)}, which therefore is the
   mean or the probability of success.
 
   See \code{\link{betabinomial}} and \code{\link{betabin.ab}},
@@ -90,26 +90,26 @@ rbetabin.ab(n, size, shape1, shape2)
 }
 \examples{
 \dontrun{
-N = 9; xx = 0:N; s1=2; s2=3
-dy = dbetabin.ab(xx, size=N, shape1=s1, shape2=s2)
-barplot(rbind(dy, dbinom(xx, size=N, prob=s1/(s1+s2))),
-        beside = TRUE, col = c("blue","green"), las=1,
-        main=paste("Beta-binomial (size=",N,", shape1=",s1,
+N = 9; xx = 0:N; s1 = 2; s2 = 3
+dy = dbetabin.ab(xx, size = N, shape1 = s1, shape2 = s2)
+barplot(rbind(dy, dbinom(xx, size = N, prob = s1/(s1+s2))),
+        beside = TRUE, col = c("blue","green"), las = 1,
+        main = paste("Beta-binomial (size=",N,", shape1=",s1,
                    ", shape2=",s2,") (blue) vs\n",
-        " Binomial(size=", N, ", prob=", s1/(s1+s2), ") (green)", sep=""),
-        names.arg = as.character(xx), cex.main=0.8)
+        " Binomial(size=", N, ", prob=", s1/(s1+s2), ") (green)", sep = ""),
+        names.arg = as.character(xx), cex.main = 0.8)
 sum(dy*xx) # Check expected values are equal
-sum(dbinom(xx, size=N, prob=s1/(s1+s2))*xx)
-cumsum(dy) -  pbetabin.ab(xx, N, shape1=s1, shape2=s2)
+sum(dbinom(xx, size = N, prob = s1/(s1+s2))*xx)
+cumsum(dy) -  pbetabin.ab(xx, N, shape1 = s1, shape2 = s2)
 
-y = rbetabin.ab(n=10000, size=N, shape1=s1, shape2=s2)
+y = rbetabin.ab(n = 10000, size = N, shape1 = s1, shape2 = s2)
 ty = table(y)
 barplot(rbind(dy, ty/sum(ty)),
-        beside = TRUE, col = c("blue","red"), las=1,
-        main=paste("Beta-binomial (size=",N,", shape1=",s1,
+        beside = TRUE, col = c("blue","red"), las = 1,
+        main = paste("Beta-binomial (size=",N,", shape1=",s1,
                    ", shape2=",s2,") (blue) vs\n",
         " Random generated beta-binomial(size=", N, ", prob=", s1/(s1+s2),
-        ") (red)", sep=""), cex.main=0.8,
+        ") (red)", sep = ""), cex.main = 0.8,
         names.arg = as.character(xx))
 }
 }
diff --git a/man/betabinomial.Rd b/man/betabinomial.Rd
index 37a88d2..ece5ee7 100644
--- a/man/betabinomial.Rd
+++ b/man/betabinomial.Rd
@@ -8,8 +8,9 @@
 
 }
 \usage{
-betabinomial(lmu="logit", lrho="logit", emu=list(), erho=list(), irho=NULL,
-             method.init=1, shrinkage.init=0.95, nsimEIM=NULL, zero=2)
+betabinomial(lmu = "logit", lrho = "logit", emu = list(), erho = list(),
+             irho = NULL, imethod = 1, shrinkage.init = 0.95,
+             nsimEIM = NULL, zero = 2)
 }
 %- maybe also 'usage' for other objects documented here.
 \arguments{
@@ -29,11 +30,11 @@ betabinomial(lmu="logit", lrho="logit", emu=list(), erho=list(), irho=NULL,
   Optional initial value for the correlation parameter.
   If given, it must be in \eqn{(0,1)}, and is recyled to the necessary
   length. Assign this argument a value if a convergence failure occurs.
-  Having \code{irho=NULL} means an initial value is obtained internally,
+  Having \code{irho = NULL} means an initial value is obtained internally,
   though this can give unsatisfactory results.
 
   }
-  \item{method.init}{
+  \item{imethod}{
   An integer with value \code{1} or \code{2} or \ldots,
   which specifies the initialization method for \eqn{\mu}{mu}.
   If failure to converge occurs try the another value
@@ -46,13 +47,13 @@ betabinomial(lmu="logit", lrho="logit", emu=list(), erho=list(), irho=NULL,
   If assigned, the single value should be either \code{1} or \code{2}.
   The default is to have a single correlation parameter.
   To model both parameters as functions of the covariates assign
-  \code{zero=NULL}.
+  \code{zero = NULL}.
   See \code{\link{CommonVGAMffArguments}} for more information.
 
   }
   \item{shrinkage.init, nsimEIM}{ 
   See \code{\link{CommonVGAMffArguments}} for more information.
-  The argument \code{shrinkage.init} is used only if \code{method.init=2}.
+  The argument \code{shrinkage.init} is used only if \code{imethod = 2}.
   Using the argument \code{nsimEIM} may offer large advantages for large
   values of \eqn{N} and/or large data sets.
 
@@ -156,21 +157,21 @@ betabinomial(lmu="logit", lrho="logit", emu=list(), erho=list(), irho=NULL,
   is currently not implemented in the \pkg{VGAM} package as it has
   range-restrictions for the correlation parameter that are currently
   too difficult to handle in this package.
-  However, try \code{lrho="rhobit"}.
+  However, try \code{lrho = "rhobit"}.
 
 
 }
 \section{Warning }{
 
   If the estimated rho parameter is close to zero then it pays to try
-  \code{lrho="rhobit"}. One day this may become the default link function.
+  \code{lrho = "rhobit"}. One day this may become the default link function.
 
 
   This family function is prone to numerical difficulties
   due to the expected information matrices not being positive-definite
   or ill-conditioned over some regions of the parameter space.
   If problems occur try setting \code{irho} to some numerical value,
-  \code{nsimEIM=100}, say,
+  \code{nsimEIM = 100}, say,
   or else use \code{etastart} argument of
   \code{\link{vglm}}, etc.
 
@@ -189,11 +190,11 @@ betabinomial(lmu="logit", lrho="logit", emu=list(), erho=list(), irho=NULL,
 # Example 1
 bbdat = data.frame(N = 10, mu = 0.5, rho = 0.8)
 bbdat = transform(bbdat,
-                  y = rbetabin(n=100, size=N, prob=mu, rho=rho))
-fit = vglm(cbind(y,N-y) ~ 1, betabinomial, bbdat, trace=TRUE)
-coef(fit, matrix=TRUE)
+                  y = rbetabin(n=100, size = N, prob = mu, rho = rho))
+fit = vglm(cbind(y, N-y) ~ 1, betabinomial, bbdat, trace = TRUE)
+coef(fit, matrix = TRUE)
 Coef(fit)
-head(cbind(fit at y, weights(fit, type="prior")))
+head(cbind(fit at y, weights(fit, type = "prior")))
 
 
 # Example 2
@@ -211,20 +212,20 @@ lirat = transform(lirat, fgrp = factor(grp))
 summary(lirat)   # Only 5 litters in group 3
 fit2 = vglm(cbind(R, N-R) ~ fgrp + hb, betabinomial(zero = 2),
            data = lirat, trace = TRUE, subset = N > 1)
-coef(fit2, matrix=TRUE)
+coef(fit2, matrix = TRUE)
 \dontrun{ with(lirat, plot(hb[N>1], fit2 at misc$rho,
-                 xlab="Hemoglobin", ylab="Estimated rho",
-                 pch=as.character(grp[N>1]), col=grp[N>1])) }
+                 xlab = "Hemoglobin", ylab = "Estimated rho",
+                 pch = as.character(grp[N>1]), col = grp[N>1])) }
 \dontrun{ # cf. Figure 3 of Moore and Tsiatis (1991)
-with(lirat, plot(hb, R/N, pch=as.character(grp), col=grp, las=1,
-                 xlab="Hemoglobin level", ylab="Proportion Dead",
-                 main="Fitted values (lines)"))
+with(lirat, plot(hb, R/N, pch = as.character(grp), col = grp, las = 1,
+                 xlab = "Hemoglobin level", ylab = "Proportion Dead",
+                 main = "Fitted values (lines)"))
 smalldf = with(lirat, lirat[N>1,])
 for(gp in 1:4) {
-    xx = with(smalldf, hb[grp==gp])
-    yy = with(smalldf, fitted(fit2)[grp==gp])
+    xx = with(smalldf, hb[grp == gp])
+    yy = with(smalldf, fitted(fit2)[grp == gp])
     ooo = order(xx)
-    lines(xx[ooo], yy[ooo], col=gp) } }
+    lines(xx[ooo], yy[ooo], col = gp) } }
 }
 \keyword{models}
 \keyword{regression}
diff --git a/man/betaff.Rd b/man/betaff.Rd
index ae58016..a5ffa49 100644
--- a/man/betaff.Rd
+++ b/man/betaff.Rd
@@ -7,10 +7,10 @@
 
 }
 \usage{
-betaff(A=0, B=1,
-       lmu=if(A==0 & B==1) "logit" else "elogit", lphi="loge",
-       emu=if(lmu=="elogit") list(min=A,max=B) else list(),
-       ephi=list(), imu=NULL, iphi=NULL, method.init=1, zero=NULL)
+betaff(A = 0, B = 1,
+       lmu = if (A == 0 & B == 1) "logit" else "elogit", lphi = "loge",
+       emu = if (lmu == "elogit") list(min = A, max = B) else list(),
+       ephi = list(), imu = NULL, iphi = NULL, imethod = 1, zero = NULL)
 }
 %- maybe also 'usage' for other objects documented here.
 \arguments{
@@ -37,7 +37,7 @@ betaff(A=0, B=1,
   \code{initialize} slot.
 
   }
-  \item{method.init, zero}{
+  \item{imethod, zero}{
   See \code{\link{CommonVGAMffArguments}} for more information.
 
   }
@@ -116,21 +116,21 @@ betaff(A=0, B=1,
 
 }
 \examples{
-betadat = data.frame(y = rbeta(nn <- 1000, shape1=exp(0), shape2=exp(1)))
-fit = vglm(y ~ 1, betaff, betadat, trace=TRUE)
-coef(fit, matrix=TRUE)
+bdata = data.frame(y = rbeta(nn <- 1000, shape1 = exp(0), shape2 = exp(1)))
+fit = vglm(y ~ 1, betaff, bdata, trace = TRUE)
+coef(fit, matrix = TRUE)
 Coef(fit)  # Useful for intercept-only models
 
 # General A and B, and with a covariate
-betadat = transform(betadat, x = runif(nn))
-betadat = transform(betadat, mu = logit(0.5-x, inverse=TRUE),
-                             prec = exp(3+x))  # prec == phi
-betadat = transform(betadat, shape2 = prec * (1-mu),
-                             shape1 = mu * prec)
-betadat = transform(betadat, y = rbeta(nn, shape1=shape1, shape2=shape2))
-betadat = transform(betadat, Y = 5 + 8 * y)   # From 5 to 13, not 0 to 1
-fit = vglm(Y ~ x, betaff(A=5, B=13), betadat, trace=TRUE)
-coef(fit, mat=TRUE)
+bdata = transform(bdata, x2 = runif(nn))
+bdata = transform(bdata, mu = logit(0.5 - x2, inverse = TRUE),
+                         prec = exp(3   + x2))  # prec == phi
+bdata = transform(bdata, shape2 = prec * (1-mu),
+                         shape1 = mu * prec)
+bdata = transform(bdata, y = rbeta(nn, shape1 = shape1, shape2 = shape2))
+bdata = transform(bdata, Y = 5 + 8 * y)   # From 5 to 13, not 0 to 1
+fit = vglm(Y ~ x2, betaff(A = 5, B = 13), bdata, trace = TRUE)
+coef(fit, matrix = TRUE)
 }
 \keyword{models}
 \keyword{regression}
diff --git a/man/bilogis4UC.Rd b/man/bilogis4UC.Rd
index cbdcb5e..8a3c2d2 100644
--- a/man/bilogis4UC.Rd
+++ b/man/bilogis4UC.Rd
@@ -10,9 +10,9 @@
 
 }
 \usage{
-dbilogis4(x1, x2, loc1=0, scale1=1, loc2=0, scale2=1, log=FALSE)
-pbilogis4(q1, q2, loc1=0, scale1=1, loc2=0, scale2=1)
-rbilogis4(n, loc1=0, scale1=1, loc2=0, scale2=1)
+dbilogis4(x1, x2, loc1 = 0, scale1 = 1, loc2 = 0, scale2 = 1, log = FALSE)
+pbilogis4(q1, q2, loc1 = 0, scale1 = 1, loc2 = 0, scale2 = 1)
+rbilogis4(n, loc1 = 0, scale1 = 1, loc2 = 0, scale2 = 1)
 }
 \arguments{
   \item{x1, x2, q1, q2}{vector of quantiles.}
@@ -22,7 +22,7 @@ rbilogis4(n, loc1=0, scale1=1, loc2=0, scale2=1)
   \item{scale1, scale2}{the scale parameters \eqn{s_1}{s1} and \eqn{s_2}{s2}.}
   \item{log}{
   Logical.
-  If \code{log=TRUE} then the logarithm of the density is returned.
+  If \code{log = TRUE} then the logarithm of the density is returned.
 
   }
 
@@ -39,6 +39,7 @@ Bivariate logistic distributions.
 \emph{Journal of the American Statistical Association},
 \bold{56}, 335--349.
 
+
 }
 \author{ T. W. Yee }
 \details{
@@ -46,30 +47,30 @@ Bivariate logistic distributions.
   estimating the four parameters by maximum likelihood estimation, for
   the formula of the cumulative distribution function and other details.
 
+
 }
 %\note{
 %}
 \seealso{
   \code{\link{bilogistic4}}.
+
 }
 \examples{
-\dontrun{
-par(mfrow=c(1,3))
+\dontrun{ par(mfrow = c(1, 3))
 n = 2000
-ymat = rbilogis4(n, loc1=5, loc2=7, scale2=exp(1))
-myxlim = c(-2,15)
-myylim = c(-10,30)
-plot(ymat, xlim=myxlim, ylim=myylim)
+ymat = rbilogis4(n, loc1 = 5, loc2 = 7, scale2 = exp(1))
+myxlim = c(-2, 15)
+myylim = c(-10, 30)
+plot(ymat, xlim = myxlim, ylim = myylim)
 
 N = 100
-x1 = seq(myxlim[1], myxlim[2], len=N)
-x2 = seq(myylim[1], myylim[2], len=N)
+x1 = seq(myxlim[1], myxlim[2], len = N)
+x2 = seq(myylim[1], myylim[2], len = N)
 ox = expand.grid(x1, x2)
-z = dbilogis4(ox[,1], ox[,2], loc1=5, loc2=7, scale2=exp(1))
-contour(x1, x2, matrix(z, N, N), main="density")
-z = pbilogis4(ox[,1], ox[,2], loc1=5, loc2=7, scale2=exp(1))
-contour(x1, x2, matrix(z, N, N), main="cdf")
-}
+z = dbilogis4(ox[,1], ox[,2], loc1 = 5, loc2 = 7, scale2 = exp(1))
+contour(x1, x2, matrix(z, N, N), main = "density")
+z = pbilogis4(ox[,1], ox[,2], loc1 = 5, loc2 = 7, scale2 = exp(1))
+contour(x1, x2, matrix(z, N, N), main = "cdf") }
 }
 \keyword{distribution}
 
diff --git a/man/bilogistic4.Rd b/man/bilogistic4.Rd
index 0b0f767..bf87117 100644
--- a/man/bilogistic4.Rd
+++ b/man/bilogistic4.Rd
@@ -8,9 +8,9 @@
 
 }
 \usage{
-bilogistic4(llocation="identity", lscale="loge",
-            iloc1=NULL, iscale1=NULL, iloc2=NULL, iscale2=NULL,
-            method.init=1, zero=NULL)
+bilogistic4(llocation = "identity", lscale = "loge",
+            iloc1 = NULL, iscale1 = NULL, iloc2 = NULL, iscale2 = NULL,
+            imethod = 1, zero = NULL)
 }
 %- maybe also 'usage' for other objects documented here.
 \arguments{
@@ -28,13 +28,13 @@ bilogistic4(llocation="identity", lscale="loge",
   }
   \item{iloc1, iloc2}{ Initial values for the location parameters.
     By default, initial values are chosen internally using
-    \code{method.init}. Assigning values here will override
-    the argument \code{method.init}. }
+    \code{imethod}. Assigning values here will override
+    the argument \code{imethod}. }
   \item{iscale1, iscale2}{ Initial values for the scale parameters.
     By default, initial values are chosen internally using
-    \code{method.init}. Assigning values here will override
-    the argument \code{method.init}. }
-  \item{method.init}{ An integer with value \code{1} or \code{2} which
+    \code{imethod}. Assigning values here will override
+    the argument \code{imethod}. }
+  \item{imethod}{ An integer with value \code{1} or \code{2} which
     specifies the initialization method. If failure to converge occurs
     try the other value. }
   \item{zero}{ An integer-valued vector specifying which
@@ -113,14 +113,14 @@ Hoboken, N.J.: Wiley-Interscience.
   \code{\link{rbilogis4}}.
 }
 \examples{
-ymat = rbilogis4(n <- 1000, loc1=5, loc2=7, scale2=exp(1))
+ymat = rbilogis4(n <- 1000, loc1 = 5, loc2 = 7, scale2 = exp(1))
 \dontrun{plot(ymat)}
-fit = vglm(ymat ~ 1, fam=bilogistic4, trace=TRUE)
-coef(fit, matrix=TRUE)
+fit = vglm(ymat ~ 1, fam = bilogistic4, trace = TRUE)
+coef(fit, matrix = TRUE)
 Coef(fit)
 head(fitted(fit))
 vcov(fit)
-head(weights(fit, type="w"))
+head(weights(fit, type = "w"))
 summary(fit)
 }
 \keyword{models}
diff --git a/man/binom2.or.Rd b/man/binom2.or.Rd
index 78157ff..96ce79b 100644
--- a/man/binom2.or.Rd
+++ b/man/binom2.or.Rd
@@ -142,7 +142,7 @@ binom2.or(lmu = "logit", lmu1 = lmu, lmu2 = lmu, loratio = "loge",
   Yee, T. W. and Dirnbock, T. (2009)
   Models for analysing species' presence/absence data
   at two time points.
-  Journal of Theoretical Biology, \bold{259}. In press.
+  Journal of Theoretical Biology, \bold{259}(4), 684--694.
 
 
   Documentation accompanying the \pkg{VGAM} package at
@@ -207,16 +207,14 @@ summary(fit)
 coef(fit, matrix=TRUE)
 c(weights(fit, type="prior")) * fitted(fit)  # Table 6.8
 
-\dontrun{
-with(coalminers, matplot(Age, fitted(fit), type="l", las=1,
+\dontrun{ with(coalminers, matplot(Age, fitted(fit), type="l", las=1,
                          xlab="(age - 42) / 5", lwd=2))
 with(coalminers, matpoints(Age, fit at y, col=1:4))
 legend(x=-4, y=0.5, lty=1:4, col=1:4, lwd=2,
        legend=c("1 = (Breathlessness=0, Wheeze=0)",
                 "2 = (Breathlessness=0, Wheeze=1)",
                 "3 = (Breathlessness=1, Wheeze=0)",
-                "4 = (Breathlessness=1, Wheeze=1)"))
-}
+                "4 = (Breathlessness=1, Wheeze=1)")) }
 }
 \keyword{models}
 \keyword{regression}
diff --git a/man/binom2.rho.Rd b/man/binom2.rho.Rd
index 7273249..1a47112 100644
--- a/man/binom2.rho.Rd
+++ b/man/binom2.rho.Rd
@@ -10,7 +10,7 @@
 }
 \usage{
 binom2.rho(lrho = "rhobit", erho=list(), imu1 = NULL, imu2 = NULL,
-           irho = NULL, method.init = 1,
+           irho = NULL, imethod = 1,
            zero = 3, exchangeable = FALSE, nsimEIM = NULL)
 binom2.Rho(rho = 0, imu1 = NULL, imu2 = NULL,
            exchangeable = FALSE, nsimEIM = NULL)
@@ -51,7 +51,7 @@ binom2.Rho(rho = 0, imu1 = NULL, imu2 = NULL,
   be equal.
 
   }
-  \item{method.init, nsimEIM}{
+  \item{imethod, nsimEIM}{
   See \code{\link{CommonVGAMffArguments}} for more information.
   A value of at least 100 is recommended;
   the larger the value the better.
@@ -147,7 +147,7 @@ Freedman, D. A. (2010)
   Converge problems can occur.
   If so, assign \code{irho} a range of
   values and monitor convergence (e.g., set \code{trace = TRUE}).
-  Else try \code{method.init}.
+  Else try \code{imethod}.
   Practical experience shows that local solutions can occur,
   and that \code{irho} needs to be quite close to the (global)
   solution.
diff --git a/man/binomialff.Rd b/man/binomialff.Rd
index 8526951..0768160 100644
--- a/man/binomialff.Rd
+++ b/man/binomialff.Rd
@@ -162,6 +162,7 @@ binomialff(link = "logit", earg = list(), dispersion = 1, mv = FALSE,
     \code{\link{cqo}},
     \code{\link{cao}},
     \code{\link{betabinomial}},
+    \code{\link{posbinomial}},
     \code{\link{zibinomial}},
     \code{\link{dexpbinomial}},
     \code{\link{mbinomial}},
diff --git a/man/binormal.Rd b/man/binormal.Rd
new file mode 100644
index 0000000..42aee8d
--- /dev/null
+++ b/man/binormal.Rd
@@ -0,0 +1,105 @@
+\name{binormal}
+\alias{binormal}
+%- Also NEED an '\alias' for EACH other topic documented here.
+\title{ Bivariate normal distribution }
+\description{
+  Maximum likelihood estimation of the five parameters of a bivariate
+  normal distribution.
+
+}
+\usage{
+binormal(lmean1 = "identity", emean1 = list(),
+         lmean2 = "identity", emean2 = list(),
+         lsd1   = "loge",     esd1   = list(),
+         lsd2   = "loge",     esd2   = list(),
+         lrho   = "rhobit",   erho   = list(),
+         imean1 = NULL,       imean2 = NULL,
+         isd1   = NULL,       isd2   = NULL,
+         irho   = NULL,       imethod = 1,
+         equalmean = FALSE,   equalsd = FALSE,
+         zero = 3:5)
+
+
+}
+%- maybe also 'usage' for other objects documented here.
+\arguments{
+  \item{lmean1, lmean2, lsd1, lsd2, lrho}{
+  Link functions applied to the means, standard deviations and
+  \code{rho} parameters.
+  See \code{\link{Links}} for more choices.
+  Being positive quantities, a log link is the default for the
+  standard deviations.
+
+  }
+  \item{emean1, emean2, esd1, esd2, erho}{
+  List. Extra argument for the links.
+  See \code{earg} in \code{\link{Links}} for general information.
+
+  }
+  \item{imean1, imean2, isd1, isd2, irho, imethod, zero}{ 
+  See \code{\link{CommonVGAMffArguments}} for more information.
+
+  }
+  \item{equalmean, equalsd}{ 
+  Logical or formula.
+  Constrains the means or the standard deviations to be equal.
+  Only one of these arguments may be assigned a value.
+
+  }
+
+}
+\details{
+  For the bivariate normal distribution,
+  this fits a linear model (LM) to the means, and
+  by default,
+  the other parameters are intercept-only.
+  The response should be a two-column matrix.
+  The correlation parameter is \code{rho},
+  which lies between \eqn{-1} and \eqn{1}
+  (thus the \code{\link{rhobit}} link is a reasonable choice).
+  The fitted means are returned as the fitted values, which is in
+  the form of a two-column matrix.
+  Fisher scoring is implemented.
+
+}
+\value{
+  An object of class \code{"vglmff"} (see \code{\link{vglmff-class}}).
+  The object is used by modelling functions such as \code{\link{vglm}},
+  and \code{\link{vgam}}.
+
+
+}
+%\references{
+%
+%}
+
+\author{ T. W. Yee }
+\note{
+  If both equal means and equal standard deviations are desired
+  then use something like
+  \code{constraints = list("(Intercept)" = matrix(c(1,1,0,0,0, 0,0,1,1,0 ,0,0,0,0,1), 5, 3))}
+  and maybe
+  \code{zero = NULL}
+  etc.
+
+
+}
+
+\seealso{
+    \code{\link{normal1}},
+    \code{\link{gaussianff}}.
+
+}
+\examples{
+nn <- 1000
+mydat = data.frame(x2 = runif(nn), x3 = runif(nn))
+mydat = transform(mydat, y1 = rnorm(nn, 1 + 2*x2),
+                         y2 = rnorm(nn, 3 + 4*x2))
+fit1 = vglm(cbind(y1, y2) ~ x2,
+            binormal(equalsd = TRUE), data = mydat, trace = TRUE)
+coef(fit1, matrix = TRUE)
+constraints(fit1)
+summary(fit1)
+}
+\keyword{models}
+\keyword{regression}
diff --git a/man/bisa.Rd b/man/bisa.Rd
index 7d4aaa5..55e24c5 100644
--- a/man/bisa.Rd
+++ b/man/bisa.Rd
@@ -10,7 +10,7 @@
 \usage{
 bisa(lshape = "loge", lscale = "loge",
      eshape = list(), escale = list(),
-     ishape = NULL, iscale = 1, method.init = 1, zero = NULL)
+     ishape = NULL, iscale = 1, imethod = 1, zero = NULL)
 }
 %- maybe also 'usage' for other objects documented here.
 \arguments{
@@ -29,10 +29,10 @@ bisa(lshape = "loge", lscale = "loge",
   \item{iscale, ishape}{
   Initial values for \eqn{a} and \eqn{b}.
   A \code{NULL} means an initial value is chosen internally using
-  \code{method.init}.
+  \code{imethod}.
 
   }
-  \item{method.init}{
+  \item{imethod}{
   An integer with value \code{1} or \code{2} or \code{3} which
   specifies the initialization method. If failure to converge occurs
   try the other value, or else specify a value for 
diff --git a/man/bivgamma.mckay.Rd b/man/bivgamma.mckay.Rd
index 5226254..27e423a 100644
--- a/man/bivgamma.mckay.Rd
+++ b/man/bivgamma.mckay.Rd
@@ -10,7 +10,7 @@
 \usage{
 bivgamma.mckay(lscale = "loge", lshape1 = "loge", lshape2 = "loge",
                iscale = NULL, ishape1 = NULL, ishape2 = NULL,
-               method.init=1, zero = 1)
+               imethod=1, zero = 1)
 }
 %- maybe also 'usage' for other objects documented here.
 \arguments{
@@ -25,7 +25,7 @@ bivgamma.mckay(lscale = "loge", lshape1 = "loge", lshape2 = "loge",
   The default is to compute them internally.
 
   }
-  \item{method.init, zero}{
+  \item{imethod, zero}{
   See \code{\link{CommonVGAMffArguments}}.
 
   }
diff --git a/man/borel.tanner.Rd b/man/borel.tanner.Rd
index a29faaa..0de9076 100644
--- a/man/borel.tanner.Rd
+++ b/man/borel.tanner.Rd
@@ -8,7 +8,7 @@
 
 }
 \usage{
-borel.tanner(Qsize=1, link="logit", earg=list(), method.init=1)
+borel.tanner(Qsize=1, link="logit", earg=list(), imethod=1)
 }
 %- maybe also 'usage' for other objects documented here.
 \arguments{
@@ -22,7 +22,7 @@ borel.tanner(Qsize=1, link="logit", earg=list(), method.init=1)
   See \code{\link{Links}} for more choices and for general information.
 
   }
-  \item{method.init}{
+  \item{imethod}{
   See \code{\link{CommonVGAMffArguments}}.
   Valid values are 1, 2, 3 or 4.
 
diff --git a/man/calibrate.qrrvglm.control.Rd b/man/calibrate.qrrvglm.control.Rd
index f93103e..b99e281 100644
--- a/man/calibrate.qrrvglm.control.Rd
+++ b/man/calibrate.qrrvglm.control.Rd
@@ -54,12 +54,14 @@ calibrate.qrrvglm.control(object, trace = FALSE, Method.optim = "BFGS",
   and \code{gridSize}. These arguments should be used inside their
   call to \code{\link{calibrate.qrrvglm}}, not this function
   directly.
+
   }
 \value{
   A list which with the following components.
   \item{trace }{Numeric (even though the input can be logical). }
   \item{gridSize }{Positive integer. }
   \item{varlvI }{Logical.}
+
 }
 \references{
 Yee, T. W. (2005)
@@ -77,10 +79,10 @@ On constrained and unconstrained quadratic ordination.
 \seealso{
   \code{\link{calibrate.qrrvglm}},
   \code{\link{Coef.qrrvglm}}.
+
 }
 \examples{
-\dontrun{
-hspider[,1:6] = scale(hspider[,1:6]) # Needed when ITol = TRUE
+\dontrun{ hspider[,1:6] = scale(hspider[,1:6]) # Needed when ITol = TRUE
 set.seed(123)
 p1 = cqo(cbind(Alopacce, Alopcune, Pardlugu, Pardnigr, 
                Pardpull, Trocterr, Zoraspin) ~
@@ -90,15 +92,15 @@ p1 = cqo(cbind(Alopacce, Alopcune, Pardlugu, Pardnigr,
 sort(p1 at misc$deviance.Bestof) # A history of all the iterations
 
 siteNos = 1:2  # Calibrate these sites
-cp1 = calibrate(p1, new=data.frame(p1 at y[siteNos,]), trace=TRUE)
+cp1 = calibrate(p1, new = data.frame(p1 at y[siteNos,]), trace = TRUE)
 }
 
 \dontrun{
 # Graphically compare the actual site scores with their calibrated values
-persp(p1, main="Site scores: solid=actual, dashed=calibrated",
-      label=TRUE, col="blue", las=1)
-abline(v=lv(p1)[siteNos], lty=1, col=1:length(siteNos)) # actual site scores
-abline(v=cp1, lty=2, col=1:length(siteNos)) # calibrated values
+persp(p1, main = "Site scores: solid=actual, dashed=calibrated",
+      label = TRUE, col = "blue", las = 1)
+abline(v = lv(p1)[siteNos], lty = 1, col = 1:length(siteNos)) # actual site scores
+abline(v = cp1, lty = 2, col = 1:length(siteNos)) # calibrated values
 }
 }
 \keyword{models}
diff --git a/man/cao.control.Rd b/man/cao.control.Rd
index f548026..35389c7 100644
--- a/man/cao.control.Rd
+++ b/man/cao.control.Rd
@@ -10,12 +10,12 @@
 
 }
 \usage{
-cao.control(Rank=1, all.knots = FALSE, criterion="deviance", Cinit=NULL,
+cao.control(Rank = 1, all.knots = FALSE, criterion = "deviance", Cinit=NULL,
             Crow1positive=TRUE, epsilon = 1.0e-05, Etamat.colmax = 10,
             GradientFunction=FALSE, iKvector = 0.1, iShape = 0.1,
             Norrr = ~ 1, SmallNo = 5.0e-13, Use.Init.Poisson.QO=TRUE,
             Bestof = if (length(Cinit)) 1 else 10, maxitl = 10,
-            method.init = 1, bf.epsilon = 1.0e-7, bf.maxit = 10,
+            imethod = 1, bf.epsilon = 1.0e-7, bf.maxit = 10,
             Maxit.optim = 250, optim.maxit = 20, SD.sitescores = 1.0,
             SD.Cinit = 0.02, trace = TRUE, df1.nl = 2.5, df2.nl = 2.5,
             spar1 = 0, spar2 = 0, ...)
@@ -149,7 +149,7 @@ cao.control(Rank=1, all.knots = FALSE, criterion="deviance", Cinit=NULL,
     Newton-Raphson/Fisher-scoring/local-scoring iterations allowed.
 
   }
-  \item{method.init}{
+  \item{imethod}{
   See \code{\link{qrrvglm.control}}.
 
   }
@@ -293,14 +293,14 @@ sort(ap1 at misc$deviance.Bestof) # A history of all the iterations
 Coef(ap1)
 
 par(mfrow=c(2,3)) # All or most of the curves are unimodal; some are
-plot(ap1, lcol="blue") # quite symmetric. Hence a CQO model should be ok
+plot(ap1, lcol = "blue") # quite symmetric. Hence a CQO model should be ok
 
 par(mfrow=c(1,1), las=1)
 index = 1:ncol(ap1 at y)  # lvplot is jagged because only 28 sites
-lvplot(ap1, lcol=index, pcol=index, y=TRUE)
+lvplot(ap1, lcol = index, pcol = index, y=TRUE)
 
 trplot(ap1, label=TRUE, col=index)
-abline(a=0, b=1, lty=2)
+abline(a = 0, b = 1, lty = 2)
 
 persp(ap1, label=TRUE, col=1:4)
 }
diff --git a/man/cauchy.Rd b/man/cauchy.Rd
index dbe95c0..6b3b20c 100644
--- a/man/cauchy.Rd
+++ b/man/cauchy.Rd
@@ -12,9 +12,9 @@
 cauchy(llocation="identity", lscale="loge", elocation=list(),
        escale=list(), ilocation=NULL, iscale=NULL,
        iprobs = seq(0.2, 0.8, by=0.2),
-       method.init=1, nsimEIM=NULL, zero=2)
+       imethod=1, nsimEIM=NULL, zero=2)
 cauchy1(scale.arg=1, llocation="identity",
-        elocation=list(), ilocation=NULL, method.init=1)
+        elocation=list(), ilocation=NULL, imethod=1)
 }
 %- maybe also 'usage' for other objects documented here.
 \arguments{
@@ -34,7 +34,7 @@ cauchy1(scale.arg=1, llocation="identity",
   By default, an initial value is chosen internally for each.
 
   }
-  \item{method.init}{ 
+  \item{imethod}{ 
   Integer, either 1 or 2 or 3.
   Initial method, three algorithms are implemented.
   The user should try all possible values to help avoid converging
@@ -89,7 +89,7 @@ cauchy1(scale.arg=1, llocation="identity",
 \section{Warning }{
   It is well-known that the Cauchy distribution may have local
   maxima in its likelihood function;
-  make full use of \code{method.init}, \code{ilocation}, \code{iscale}
+  make full use of \code{imethod}, \code{ilocation}, \code{iscale}
   etc.
 
 }
@@ -129,7 +129,7 @@ Observed versus expected Fisher information.
   value for \eqn{a}{a} on a grid.
   It also pays to select a wide range
   of initial values via the \code{ilocation} and/or \code{iscale}
-  and/or \code{method.init} arguments.
+  and/or \code{imethod} arguments.
 
 
 }
diff --git a/man/cnormal1.Rd b/man/cennormal1.Rd
similarity index 61%
rename from man/cnormal1.Rd
rename to man/cennormal1.Rd
index 1cff80e..e592b28 100644
--- a/man/cnormal1.Rd
+++ b/man/cennormal1.Rd
@@ -1,25 +1,27 @@
-\name{cnormal1}
-\alias{cnormal1}
+\name{cennormal1}
+\alias{cennormal1}
 %- Also NEED an '\alias' for EACH other topic documented here.
 \title{ Censored Normal Distribution }
 \description{
   Maximum likelihood estimation for the normal distribution with
   left and right censoring.
+
 }
 \usage{
-cnormal1(lmu = "identity", lsd = "loge", method.init = 1, zero = 2)
+cennormal1(lmu = "identity", lsd = "loge",
+           emu = list(), esd = list(), imethod = 1, zero = 2)
 }
 %- maybe also 'usage' for other objects documented here.
 \arguments{
-  \item{lmu, lsd}{
-  Parameter link functions applied to the mean and
-  standard deviation parameters.
+  \item{lmu, lsd, emu, esd}{
+  Parameter link functions and its extra arguments,
+  applied to the mean and standard deviation parameters.
   See \code{\link{Links}} for more choices.
   The standard deviation is a positive quantity, therefore a log link 
   is the default.
 
   }
-  \item{method.init}{
+  \item{imethod}{
   Initialization method. Either 1 or 2, this specifies
   two methods for obtaining initial values for the parameters.
 
@@ -46,11 +48,13 @@ cnormal1(lmu = "identity", lsd = "loge", method.init = 1, zero = 2)
   The fitted object has these two components stored in the \code{extra}
   slot.
 
+
 }
 \value{
   An object of class \code{"vglmff"} (see \code{\link{vglmff-class}}).
   The object is used by modelling functions such as \code{\link{vglm}},
   and \code{\link{vgam}}.
+
 }
 %\references{
 
@@ -58,36 +62,38 @@ cnormal1(lmu = "identity", lsd = "loge", method.init = 1, zero = 2)
 
 \author{ T. W. Yee }
 \note{ 
-  This function was adapted from \code{\link{tobit}}.
-  The Tobit model is a special case of this \pkg{VGAM}
-  family function because the observations have a common
-  lower censoring point and upper censoring point.
-  If there are no censored observation then \code{\link{normal1}}
+  This function is an alternative to \code{\link{tobit}}
+  but cannot handle a matrix response
+  and uses different working weights.
+  If there are no censored observations then \code{\link{normal1}}
   is recommended instead.
 
+
 }
 \seealso{
     \code{\link{tobit}},
     \code{\link{normal1}},
-    \code{\link{dcnormal1}}.
+    \code{\link{dcennormal1}}.
 
 }
 
 \examples{
-cdata = data.frame(x = runif(nn <- 1000)) # ystar are true values
-cdata = transform(cdata, ystar = rnorm(nn, m = 100 + 15 * x, sd = exp(3)))
-\dontrun{hist(ystar)}
-L = runif(nn,  80,  90) # Lower censoring points
-U = runif(nn, 130, 140) # Upper censoring points
+cdata = data.frame(x2 = runif(nn <- 1000)) # ystar are true values
+cdata = transform(cdata, ystar = rnorm(nn, m = 100 + 15 * x2, sd = exp(3)))
+\dontrun{with(cdata, hist(ystar))}
+cdata = transform(cdata, L = runif(nn,  80,  90), # Lower censoring points
+                         U = runif(nn, 130, 140)) # Upper censoring points
 cdata = transform(cdata, y = pmax(L, ystar)) # Left  censored
 cdata = transform(cdata, y = pmin(U, y))     # Right censored
-\dontrun{hist(y)}
-extra = list(leftcensored = with(cdata, ystar < L),
+\dontrun{with(cdata, hist(y))}
+Extra = list(leftcensored = with(cdata, ystar < L),
             rightcensored = with(cdata, ystar > U))
-fit = vglm(y ~ x, cnormal1(zero = 2), cdata, trace = TRUE, extra = extra)
-coef(fit, matrix = TRUE)
-Coef(fit)
-names(fit at extra)
+fit1 = vglm(y ~ x2, cennormal1, cdata, crit = "c", extra = Extra, trace = TRUE)
+fit2 = vglm(y ~ x2, tobit(Lower = with(cdata, L), Upper = with(cdata, U)),
+            cdata, crit = "c", trace = TRUE)
+coef(fit1, matrix = TRUE)
+max(abs(coef(fit1, matrix = TRUE) - coef(fit2, matrix = TRUE))) # Should be 0
+names(fit1 at extra)
 }
 \keyword{models}
 \keyword{regression}
diff --git a/man/cenpoisson.Rd b/man/cenpoisson.Rd
index 09194e1..d00227b 100644
--- a/man/cenpoisson.Rd
+++ b/man/cenpoisson.Rd
@@ -13,16 +13,11 @@ cenpoisson(link = "loge", earg = list(), imu = NULL)
 }
 %- maybe also 'usage' for other objects documented here.
 \arguments{
-  \item{link}{
-  Link function applied to the mean.
+  \item{link, earg}{
+  Link function and its extra argument applied to the mean.
   See \code{\link{Links}} for more choices.
 
   }
-  \item{earg}{
-  Extra argument optionally used by the link function.
-  See \code{\link{Links}} for more information.
-
-  }
   \item{imu}{
     Optional initial value.
     See \code{\link{CommonVGAMffArguments}} for more information.
@@ -31,7 +26,7 @@ cenpoisson(link = "loge", earg = list(), imu = NULL)
 }
 \details{
   Often a table of Poisson counts has an entry \emph{J+} meaning
-  \eqn{\ge J}.
+  \eqn{\ge J}{>= J}.
   This family function is similar to \code{\link{poissonff}} but handles
   such censored data. The input requires \code{\link{SurvS4}}.
   Only a univariate response is allowed.
@@ -56,7 +51,8 @@ cenpoisson(link = "loge", earg = list(), imu = NULL)
   The function \code{\link{poissonff}} should be used
   when there are no censored observations.
   Also, \code{NA}s are not permitted with \code{\link{SurvS4}},
-  nor is \code{type="counting"}.
+  nor is \code{type = "counting"}.
+
 
 }
 \section{Warning }{
@@ -84,60 +80,61 @@ cenpoisson(link = "loge", earg = list(), imu = NULL)
 \examples{
 # Example 1: right censored data
 set.seed(123); U = 20
-y = rpois(n <- 100, exp(3))
-cy = pmin(U, y)
-rcensored = (y >= U)
-table(cy)
-table(rcensored)
-status = ifelse(rcensored, 0, 1)
-table(ii <- print(SurvS4(cy, status)))  # Check; U+ means >= U
-fit = vglm(SurvS4(cy, status) ~ 1, cenpoisson, trace=TRUE)
-coef(fit, mat=TRUE)
+cdata = data.frame(y = rpois(n <- 100, exp(3)))
+cdata = transform(cdata, cy = pmin(U, y),
+                         rcensored = (y >= U))
+cdata = transform(cdata, status = ifelse(rcensored, 0, 1))
+with(cdata, table(cy))
+with(cdata, table(rcensored))
+with(cdata, table(ii <- print(SurvS4(cy, status))))  # Check; U+ means >= U
+fit = vglm(SurvS4(cy, status) ~ 1, cenpoisson, cdata, trace = TRUE)
+coef(fit, matrix = TRUE)
 table(print(fit at y))  # Another check; U+ means >= U
 
 
 # Example 2: left censored data
 L = 15
-cy = pmax(L, y)
-lcensored = (y <  L)   # Note y < L, not cy == L or y <= L
-table(cy)
-table(lcensored)
-status = ifelse(lcensored, 0, 1)
-table(ii <- print(SurvS4(cy, status, type="left")))  # Check
-fit = vglm(SurvS4(cy, status, type="left") ~ 1, cenpoisson, trace=TRUE)
-coef(fit, mat=TRUE)
+cdata = transform(cdata, cY = pmax(L, y),
+                         lcensored = y <  L) # Note y < L, not cY == L or y <= L
+cdata = transform(cdata, status = ifelse(lcensored, 0, 1))
+with(cdata, table(cY))
+with(cdata, table(lcensored))
+with(cdata, table(ii <- print(SurvS4(cY, status, type = "left"))))  # Check
+fit = vglm(SurvS4(cY, status, type = "left") ~ 1, cenpoisson, cdata, trace = TRUE)
+coef(fit, matrix = TRUE)
 
 
 # Example 3: interval censored data
-Lvec = rep(L, len=n); Uvec = rep(U, len=n)
-icensored = Lvec <= y & y < Uvec  # Neither lcensored or rcensored
-table(icensored)
-status = rep(3, n)                    # 3 means interval censored
-status = ifelse(rcensored, 0, status) # 0 means right censored
-status = ifelse(lcensored, 2, status) # 2 means left  censored
+cdata = transform(cdata, Lvec = rep(L, len = n),
+                         Uvec = rep(U, len = n))
+cdata = transform(cdata, icensored = Lvec <= y & y < Uvec) # Neither lcensored or rcensored
+with(cdata, table(icensored))
+cdata = transform(cdata, status = rep(3, n))       # 3 means interval censored
+cdata = transform(cdata, status = ifelse(rcensored, 0, status)) # 0 means right censored
+cdata = transform(cdata, status = ifelse(lcensored, 2, status)) # 2 means left  censored
 # Have to adjust Lvec and Uvec because of the (start, end] format:
-Lvec[icensored] = Lvec[icensored] - 1
-Uvec[icensored] = Uvec[icensored] - 1
-Lvec[lcensored] = Lvec[lcensored]  # Remains unchanged
-Lvec[rcensored] = Uvec[rcensored]  # Remains unchanged
-table(ii <- print(SurvS4(Lvec, Uvec, status, type="interval")))  # Check
-
-fit = vglm(SurvS4(Lvec, Uvec, status, type="interval") ~ 1,
-           cenpoisson, trace=TRUE)
-coef(fit, mat=TRUE)
+cdata$Lvec[with(cdata, icensored)] = cdata$Lvec[with(cdata, icensored)] - 1
+cdata$Uvec[with(cdata, icensored)] = cdata$Uvec[with(cdata, icensored)] - 1
+cdata$Lvec[with(cdata, lcensored)] = cdata$Lvec[with(cdata, lcensored)]  # Remains unchanged
+cdata$Lvec[with(cdata, rcensored)] = cdata$Uvec[with(cdata, rcensored)]  # Remains unchanged
+with(cdata, table(ii <- print(SurvS4(Lvec, Uvec, status, type = "interval")))) # Check
+
+fit = vglm(SurvS4(Lvec, Uvec, status, type = "interval") ~ 1,
+           cenpoisson, cdata, trace = TRUE)
+coef(fit, matrix = TRUE)
 table(print(fit at y))  # Another check
 
 
 # Example 4: Add in some uncensored observations
-index = (1:n)[icensored]
+index = (1:n)[with(cdata, icensored)]
 index = head(index, 4)
-status[index] = 1 # actual or uncensored value
-Lvec[index] = y[index]
-table(ii <- print(SurvS4(Lvec, Uvec, status, type="interval")))  # Check
+cdata$status[index] = 1 # actual or uncensored value
+cdata$Lvec[index] = cdata$y[index]
+with(cdata, table(ii <- print(SurvS4(Lvec, Uvec, status, type = "interval")))) # Check
 
-fit = vglm(SurvS4(Lvec, Uvec, status, type="interval") ~ 1,
-           cenpoisson, trace=TRUE, crit="c")
-coef(fit, mat=TRUE)
+fit = vglm(SurvS4(Lvec, Uvec, status, type = "interval") ~ 1,
+           cenpoisson, cdata, trace = TRUE, crit = "c")
+coef(fit, matrix = TRUE)
 table(print(fit at y))  # Another check
 }
 \keyword{models}
diff --git a/man/chisq.Rd b/man/chisq.Rd
index 7604823..25fd010 100644
--- a/man/chisq.Rd
+++ b/man/chisq.Rd
@@ -5,20 +5,15 @@
 \description{
     Maximum likelihood estimation of the degrees of freedom for
     a chi-squared distribution.
+
 }
 \usage{
-chisq(link = "loge", earg=list())
+chisq(link = "loge", earg = list())
 }
 %- maybe also 'usage' for other objects documented here.
 \arguments{
-  \item{link}{
-  Parameter link function.
-  See \code{\link{Links}} for more choices.
-
-  }
-  \item{earg}{
-  List. Extra argument for the link.
-  See \code{earg} in \code{\link{Links}} for general information.
+  \item{link, earg}{
+  See \code{\link{CommonVGAMffArguments}} for information.
 
   }
 }
@@ -34,30 +29,33 @@ chisq(link = "loge", earg=list())
   The object is used by modelling functions such as \code{\link{vglm}},
   and \code{\link{vgam}}.
 
+
 }
 \references{
 Evans, M., Hastings, N. and Peacock, B. (2000)
 \emph{Statistical Distributions},
 New York: Wiley-Interscience, Third edition.
+
+
 }
 
 \author{ T. W. Yee }
 \note{ 
-  Multiple responses are permitted.
+  Matrix responses are permitted.
   There may be convergence problems if the degrees of freedom
-  is very large.
+  is very large or close to zero.
 
 }
 
 \seealso{
   \code{\link[stats]{Chisquare}}.
   \code{\link{normal1}}.
+
 }
 \examples{
 cdata <- data.frame(x2 = runif(nn <- 1000))
-cdata <- transform(cdata,
-                   y1 = rchisq(nn, df = exp(1 - 1 * x2)),
-                   y2 = rchisq(nn, df = exp(2 - 2 * x2)))
+cdata <- transform(cdata, y1 = rchisq(nn, df = exp(1 - 1 * x2)),
+                          y2 = rchisq(nn, df = exp(2 - 2 * x2)))
 fit <- vglm(cbind(y1, y2) ~ x2, chisq, cdata, trace = TRUE)
 coef(fit, matrix = TRUE)
 }
diff --git a/man/crashes.Rd b/man/crashes.Rd
index de47532..043cb98 100644
--- a/man/crashes.Rd
+++ b/man/crashes.Rd
@@ -13,7 +13,7 @@
   A variety of reported crash data cross-classified  by time (hour
   of the day) and day of the week, accumulated over 2009. These
   include fatalities and injuries (by car), trucks, motor cycles,
-  bicycles  and pedestrians.  There is some alcohol-related
+  bicycles  and pedestrians.  There are some alcohol-related
   data too.
 
    }
@@ -53,8 +53,8 @@ data(alclevels)
     Each cell is the aggregate number of crashes reported at each
     hour-day combination, over the 2009 calendar year.
     The \code{rownames} of each data frame is the
-    start time (hourly from midnight onwards) on a 24 hour clock.
-    For example, 21 means 9.00pm to 9.59pm.
+    start time (hourly from midnight onwards) on a 24 hour clock,
+    e.g., 21 means 9.00pm to 9.59pm.
      
      
   For crashes,
@@ -105,14 +105,13 @@ axis(3:4, labels = FALSE, tick = FALSE)
 abline(v = sort(1 + c((0:7) * 24, (0:6) * 24 + 12)), lty = "dashed",
        col = c("purple", "orange")) }
 
-
-# Goodmans RC model
-fitgrc1 <- grc(alcoff)
-
+# Goodmans RC models
+fitgrc1 <- grc(alcoff) # Rank-1 model
 fitgrc2 <- grc(alcoff, Rank = 2, Corner = FALSE, Uncor = TRUE)
 print(Coef(fitgrc2), dig = 2)
-\dontrun{ biplot(fitgrc2, scaleA = 2.3, Ccol = "blue", Acol = "red",
-       Clabels = as.character(1:23)) }
+\dontrun{ biplot(fitgrc2, scaleA = 2.3, Ccol = "blue", Acol = "orange",
+       Clabels = as.character(1:23), xlim = c(-1.3, 2.3),
+       ylim = c(-1.2, 1)) }
 }
 \keyword{datasets}
 
diff --git a/man/dcennormal1.Rd b/man/dcennormal1.Rd
new file mode 100644
index 0000000..ff23141
--- /dev/null
+++ b/man/dcennormal1.Rd
@@ -0,0 +1,101 @@
+\name{dcennormal1}
+\alias{dcennormal1}
+%- Also NEED an '\alias' for EACH other topic documented here.
+\title{ Univariate Normal Distribution with Double Censoring }
+\description{
+  Maximum likelihood estimation of the two parameters of a
+  univariate normal distribution when there is double censoring.
+
+}
+\usage{
+dcennormal1(r1 = 0, r2 = 0, lmu = "identity", lsd = "loge",
+            emu = list(), esd = list(),
+            imu = NULL, isd = NULL, zero = 2)
+}
+%- maybe also 'usage' for other objects documented here.
+\arguments{
+  \item{r1, r2}{
+  Integers. Number of smallest and largest values censored, respectively.
+
+  }
+  \item{lmu, lsd, emu, esd}{
+  Parameter link functions and its extra arguments applied to the
+  mean and standard deviation.
+  See \code{\link{Links}} for more choices.
+
+  }
+  \item{imu, isd, zero}{
+  See \code{\link{CommonVGAMffArguments}} for more information.
+
+  }
+}
+\details{
+  This family function uses the Fisher information matrix given in
+  Harter and Moore (1966). The matrix is not diagonal if either
+  \code{r1} or \code{r2} are positive.
+
+
+  By default, the mean is the first linear/additive predictor and
+  the log of the standard deviation is the second linear/additive
+  predictor.
+
+
+} \value{
+  An object of class \code{"vglmff"} (see \code{\link{vglmff-class}}).
+  The object is used by modelling functions such as \code{\link{vglm}},
+  and \code{\link{vgam}}.
+
+}
+\references{
+  Harter, H. L. and Moore, A. H. (1966)
+  Iterative maximum-likelihood estimation of the parameters of
+  normal populations from singly and doubly censored samples.
+  \emph{Biometrika}, \bold{53}, 205--213.
+
+
+}
+\author{ T. W. Yee }
+\note{
+  This family function only handles a vector or one-column matrix
+  response. The \code{weights} argument, if used, are interpreted
+  as frequencies, therefore it must be a vector with positive
+  integer values.
+
+
+  With no censoring at all (the default), it is better (and
+  equivalent) to use \code{\link{normal1}}.
+
+
+}
+
+\seealso{
+  \code{\link{normal1}},
+  \code{\link{cennormal1}},
+  \code{\link{tobit}}.
+
+
+}
+\examples{\dontrun{# Repeat the simulations described in Harter and Moore (1966)
+SIMS = 100   # Number of simulations (change this to 1000)
+mu.save = sd.save = rep(NA, len = SIMS)
+r1 = 0; r2 = 4; nn = 20  
+for(sim in 1:SIMS) {
+    y = sort(rnorm(nn))
+    y = y[(1+r1):(nn-r2)]  # Delete r1 smallest and r2 largest
+    fit = vglm(y ~ 1, dcennormal1(r1 = r1, r2 = r2))
+    mu.save[sim] = predict(fit)[1,1]
+    sd.save[sim] = exp(predict(fit)[1,2])   # Assumes a log link and ~ 1
+}
+c(mean(mu.save), mean(sd.save))  # Should be c(0,1)
+c(sd(mu.save), sd(sd.save))
+}
+
+# Data from Sarhan and Greenberg (1962); MLEs are mu = 9.2606, sd = 1.3754
+strontium90 = data.frame(y = c(8.2, 8.4, 9.1, 9.8, 9.9))
+fit = vglm(y ~ 1, dcennormal1(r1 = 2, r2 = 3, isd = 6), strontium90, trace = TRUE)
+coef(fit, matrix = TRUE)
+Coef(fit)
+}
+\keyword{models}
+\keyword{regression}
+
diff --git a/man/dcnormal1.Rd b/man/dcnormal1.Rd
deleted file mode 100644
index 0078669..0000000
--- a/man/dcnormal1.Rd
+++ /dev/null
@@ -1,104 +0,0 @@
-\name{dcnormal1}
-\alias{dcnormal1}
-%- Also NEED an '\alias' for EACH other topic documented here.
-\title{ Univariate Normal Distribution with Double Censoring }
-\description{
-  Maximum likelihood estimation of the two parameters of a univariate
-  normal distribution when there is double censoring.
-
-}
-\usage{
-dcnormal1(r1 = 0, r2 = 0, link.sd = "loge",
-          earg=list(), isd = NULL, zero = NULL)
-}
-%- maybe also 'usage' for other objects documented here.
-\arguments{
-  \item{r1, r2}{
-  Integers. Number of smallest and largest values censored, respectively.
-
-  }
-  \item{link.sd}{
-  Parameter link function applied to the standard deviation.
-  See \code{\link{Links}} for more choices.
-  Being a positive quantity, a log link is the default.
-
-  }
-  \item{earg}{
-  List. Extra argument for the link.
-  See \code{earg} in \code{\link{Links}} for general information.
-
-  }
-  \item{isd}{
-  Numeric. Initial value for the standard deviation.
-  The default value \code{NULL} means an initial value is
-  obtained internally from the data.
-
-  }
-  \item{zero}{
-  An integer with value 1 or 2. If so, the mean or standard deviation
-  respectively are modelled as an intercept only.  Usually, setting
-  \code{zero=2} will be used, if used at all.  The default value
-  \code{NULL} means both linear/additive predictors are modelled as
-  functions of the explanatory variables.
-
-  }
-}
-\details{
-  This family function uses the Fisher information matrix given in Harter
-  and Moore (1966).  The matrix is not diagonal if either \code{r1}
-  or \code{r2} are positive.
-
-  By default, the mean is the first linear/additive predictor and the
-  log of the standard deviation is the second linear/additive predictor.
-
-} \value{
-  An object of class \code{"vglmff"} (see \code{\link{vglmff-class}}).
-  The object is used by modelling functions such as \code{\link{vglm}},
-  and \code{\link{vgam}}.
-
-}
-\references{
-  Harter, H. L. and Moore, A. H. (1966) Iterative maximum-likelihood
-  estimation of the parameters of normal populations from singly and
-  doubly censored samples.  \emph{Biometrika}, \bold{53}, 205--213.
-}
-\author{ T. W. Yee }
-\note{
-  This family function only handles a vector or one-column matrix
-  response. The \code{weights} argument, if used, are interpreted as
-  frequencies, therefore it must be a vector with positive integer values.
-
-  With no censoring at all (the default), it is better (and equivalent)
-  to use \code{\link{normal1}}.
-
-}
-
-\seealso{
-\code{\link{normal1}},
-\code{\link{tobit}}.
-}
-\examples{\dontrun{# Repeat the simulations described in Harter and Moore (1966)
-SIMS = 100   # Number of simulations (change this to 1000)
-mu.save = sd.save = rep(NA, len=SIMS)
-r1 = 0; r2 = 4; n = 20  
-for(sim in 1:SIMS) {
-    y = sort(rnorm(n))
-    y = y[(1+r1):(n-r2)]  # Delete r1 smallest and r2 largest
-    fit = vglm(y ~ 1, dcnormal1(r1=r1, r2=r2))
-    mu.save[sim] = predict(fit)[1,1]
-    sd.save[sim] = exp(predict(fit)[1,2])   # Assumes a log link and ~ 1
-}
-# Now look at the results
-c(mean(mu.save), mean(sd.save))  # Should be c(0,1)
-c(sd(mu.save), sd(sd.save))
-}
-
-# Data from Sarhan and Greenberg (1962); MLEs are mu=9.2606, sd=1.3754
-strontium90 = data.frame(y = c(8.2, 8.4, 9.1, 9.8, 9.9))
-fit = vglm(y ~ 1, dcnormal1(r1=2, r2=3, isd=6), strontium90, trace=TRUE)
-coef(fit, matrix=TRUE)
-Coef(fit)
-}
-\keyword{models}
-\keyword{regression}
-
diff --git a/man/erlang.Rd b/man/erlang.Rd
index 2b4a859..18d0456 100644
--- a/man/erlang.Rd
+++ b/man/erlang.Rd
@@ -7,7 +7,7 @@
   by maximum likelihood estimation.
 }
 \usage{
-erlang(shape.arg, link = "loge", earg=list(), method.init = 1)
+erlang(shape.arg, link = "loge", earg=list(), imethod = 1)
 }
 %- maybe also 'usage' for other objects documented here.
 \arguments{
@@ -26,7 +26,7 @@ erlang(shape.arg, link = "loge", earg=list(), method.init = 1)
   See \code{earg} in \code{\link{Links}} for general information.
 
   }
-  \item{method.init}{
+  \item{imethod}{
   An integer with value \code{1} or \code{2} which
   specifies the initialization method. If failure to converge occurs
   try the other value.
diff --git a/man/expgeometric.Rd b/man/expgeometric.Rd
index b2c2da0..efbbd34 100644
--- a/man/expgeometric.Rd
+++ b/man/expgeometric.Rd
@@ -1,7 +1,7 @@
 \name{expgeometric}
 \alias{expgeometric}
 %- Also NEED an '\alias' for EACH other topic documented here.
-\title{Exponential geometric Distribution Family Function}
+\title{Exponential Geometric Distribution Family Function}
 \description{
   Estimates the two parameters of the exponential geometric distribution
   by maximum likelihood estimation.
@@ -11,7 +11,7 @@
 expgeometric(lscale = "loge", lshape = "logit",
              escale = list(), eshape = list(),
              iscale = NULL,   ishape = NULL,
-             zero = 1, nsimEIM = 400)
+             tol12 = 1e-05, zero = 1, nsimEIM = 400)
 }
 %- maybe also 'usage' for other objects documented here.
 \arguments{
@@ -30,22 +30,29 @@ expgeometric(lscale = "loge", lshape = "logit",
   Optional initial values for the scale and shape parameters.
 
   }
+  \item{tol12}{
+  Numeric.
+  Tolerance for testing whether a parameter has value 1 or 2.
+
+  }
   \item{zero, nsimEIM}{
   See \code{\link{CommonVGAMffArguments}}.
 
   }
 
-
 }
 \details{
   The exponential geometric distribution has density function
   \deqn{f(y; c = scale, s = shape)  = 
-   c (1 - s) e^{-c y} (1 - s e^{-c y})^{-2}}{%
-   c*(1-s)*e^(-c*y)*(1-s*e^(-c*y))^(-2)}
+   (1/c) (1 - s) e^{-y/c} (1 - s e^{-y/c})^{-2}}{%
+   (1/c) * (1 - s) * e^(-y/c) * (1 - s * e^(-y/c))^(-2)}
   where \eqn{y > 0}, \eqn{c > 0} and \eqn{s \in (0, 1)}{0 < s < 1}.
-  The mean is \eqn{((s-1)/(sc)) \log(1-s)}{((s-1)/(sc)) * log(1-s)}
+  The mean, \eqn{(c (s - 1)/ s) \log(1 - s)}{(c *
+    (s - 1)/ s) * log(1 - s)}
   is returned as the fitted values.
-  Note the median is \eqn{(1/c) \log(2-s)}{(1/c) * log(2-s)}.
+  Note the median is \eqn{c \log(2 - s)}{c * log(2 - s)}.
+  Simulated Fisher scoring is implemented.
+
 
 }
 \value{
@@ -61,24 +68,24 @@ expgeometric(lscale = "loge", lshape = "logit",
   \bold{39}, 35--42.
 
 }
-\author{ J. G. Lauder and T. W .Yee }
+\author{ J. G. Lauder and T. W. Yee }
 \note{
-  Soon the scale term will be redefinined as the reciprocal of
-  the scale parameter used by Adamidis and Loukas (1998).
-  That is, division by the scale parameter will be used later.
+  We define \code{scale} as the reciprocal of the scale parameter
+  used by Adamidis and Loukas (1998).
 
 
 }
 
 \seealso{ 
-  \code{dexpgeom},
+  \code{\link{dexpgeom}},
   \code{\link{exponential}},
   \code{\link{geometric}}.
 
+
 }
 \examples{
 scale = exp(2); shape = logit(-1, inverse = TRUE);
-edata = data.frame(y = rexpgeom(n = 2000, scale=scale, shape=shape))
+edata = data.frame(y = rexpgeom(n = 2000, scale = scale, shape = shape))
 fit = vglm(y ~ 1, expgeometric, edata, trace = TRUE)
 c(with(edata, mean(y)), head(fitted(fit), 1))
 coef(fit, matrix = TRUE)
diff --git a/man/expgeometricUC.Rd b/man/expgeometricUC.Rd
new file mode 100644
index 0000000..cc91cc2
--- /dev/null
+++ b/man/expgeometricUC.Rd
@@ -0,0 +1,79 @@
+\name{expgeom}
+\alias{expgeom}
+\alias{dexpgeom}
+\alias{pexpgeom}
+\alias{qexpgeom}
+\alias{rexpgeom}
+\title{The Exponential Geometric Distribution}
+\description{
+  Density, distribution function, quantile function and random
+  generation for the exponential geometric distribution.
+
+}
+\usage{
+dexpgeom(x, scale = 1, shape, log = FALSE)
+pexpgeom(q, scale = 1, shape)
+qexpgeom(p, scale = 1, shape) 
+rexpgeom(n, scale = 1, shape) 
+}
+\arguments{
+  \item{x, q}{vector of quantiles.}
+  \item{p}{vector of probabilities.}
+  \item{n}{number of observations.
+    If \code{length(n) > 1} then the length is taken to be the number required. }
+  \item{scale, shape}{
+   positive scale and shape parameters. }
+  \item{log}{
+  Logical.
+  If \code{log = TRUE} then the logarithm of the density is returned.
+
+  }
+
+}
+\value{
+  \code{dexpgeom} gives the density,
+  \code{pexpgeom} gives the distribution function,
+  \code{qexpgeom} gives the quantile function, and
+  \code{rexpgeom} generates random deviates.
+
+}
+\author{ J. G. Lauder and T. W. Yee }
+\details{
+  See \code{\link{expgeometric}}, the \pkg{VGAM} family function
+  for estimating the parameters, 
+  for the formula of the probability density function and other details.
+
+}
+\note{
+  We define \code{scale} as the reciprocal of the scale parameter
+  used by Adamidis and Loukas (1998).
+
+}
+\seealso{
+  \code{\link{expgeometric}},
+  \code{\link{exponential}}, 
+  \code{\link{geometric}}.
+
+
+}
+\examples{
+\dontrun{
+shape = 0.5; scale = 1; nn = 501
+x = seq(-0.10, 3.0, len = nn)
+plot(x, dexpgeom(x, scale, shape), type = "l", las = 1, ylim = c(0, 2),
+     ylab = paste("[dp]expgeom(shape = ", shape, ", scale = ", scale, ")"),
+     col = "blue", cex.main = 0.8,
+     main = "Blue is density, red is cumulative distribution function",
+     sub = "Purple lines are the 10,20,...,90 percentiles")
+lines(x, pexpgeom(x, scale, shape), col = "red")
+probs = seq(0.1, 0.9, by = 0.1)
+Q = qexpgeom(probs, scale, shape)
+lines(Q, dexpgeom(Q, scale, shape), col = "purple", lty = 3, type = "h")
+lines(Q, pexpgeom(Q, scale, shape), col = "purple", lty = 3, type = "h")
+abline(h = probs, col = "purple", lty = 3)
+max(abs(pexpgeom(Q, scale, shape) - probs)) # Should be 0
+}
+}
+\keyword{distribution}
+
+
diff --git a/man/explogarithmic.Rd b/man/explogarithmic.Rd
new file mode 100644
index 0000000..be89376
--- /dev/null
+++ b/man/explogarithmic.Rd
@@ -0,0 +1,91 @@
+\name{explogarithmic}
+\alias{explogarithmic}
+%- Also NEED an '\alias' for EACH other topic documented here.
+\title{Exponential Logarithmic Distribution Family Function}
+\description{
+  Estimates the two parameters of the exponential logarithmic distribution
+  by maximum likelihood estimation.
+
+}
+\usage{
+explogarithmic(lscale = "loge", lshape = "logit", escale = list(),
+               eshape = list(), iscale = NULL, ishape = NULL,
+               tol12 = 1e-05, zero = 1, nsimEIM = 400)
+}
+%- maybe also 'usage' for other objects documented here.
+\arguments{
+  \item{lscale, lshape, escale, eshape}{
+  See \code{\link{CommonVGAMffArguments}} for information.
+
+
+  }
+  \item{tol12}{
+  Numeric.
+  Tolerance for testing whether a parameter has value 1 or 2.
+
+
+  }
+  \item{iscale, ishape, zero, nsimEIM}{
+  See \code{\link{CommonVGAMffArguments}}.
+
+
+  }
+
+}
+\details{
+  The exponential logarithmic distribution has density function
+  \deqn{f(y; c, s)  = 
+   (1/(-\log p ))  (((1/c)   (1 - s)   e^{-y/c}) / (1 - (1 - s)   e^{-y/c}))}{%
+   (1/(-log(p))) * (((1/c) * (1 - s) * e^(-y/c)) / (1 - (1 - s) * e^(-y/c)))}
+  where \eqn{y > 0}, scale parameter \eqn{c > 0}, and
+  shape parameter \eqn{s \in (0, 1)}{0 < s < 1}.
+  The mean, \eqn{(-polylog(2, 1 - p) c) / \log(s)}{((-polylog(2, 1 - p) *
+   c) / log(s)} is \emph{not} returned as the fitted values.
+  Note the median is \eqn{c \log(1 + \sqrt{s})}{c * log(1 + sqrt(s))}
+  and it is \emph{currently} returned as the fitted values.
+  Simulated Fisher scoring is implemented.
+
+
+}
+\value{
+  An object of class \code{"vglmff"} (see \code{\link{vglmff-class}}).
+  The object is used by modelling functions such as \code{\link{vglm}}
+  and \code{\link{vgam}}.
+
+}
+\references{
+  Tahmasabi, R., Sadegh, R. (2008).
+  A two-parameter lifetime distribution with decreasing failure rate.
+  \emph{Computational Statistics and Data Analysis},
+  \bold{52}, 3889--3901.
+ 
+}
+\author{ J. G. Lauder and T. W .Yee }
+\note{
+  We define \code{scale} as the reciprocal of the rate parameter
+  used by Tahmasabi and Sadegh (2008).
+
+
+  Yet to do: find a \code{polylog()} function.
+
+
+}
+
+\seealso{ 
+  \code{\link{dexplog}},
+  \code{\link{exponential}},
+
+
+}
+\examples{
+scale = exp(2); shape = logit(-1, inverse = TRUE);
+edata = data.frame(y = rexplog(n = 2000, scale = scale, shape = shape))
+fit = vglm(y ~ 1, explogarithmic, edata, trace = TRUE)
+c(with(edata, median(y)), head(fitted(fit), 1))
+coef(fit, matrix = TRUE)
+Coef(fit)
+summary(fit)
+}
+\keyword{models}
+\keyword{regression}
+
diff --git a/man/explogarithmicUC.Rd b/man/explogarithmicUC.Rd
new file mode 100644
index 0000000..266c13c
--- /dev/null
+++ b/man/explogarithmicUC.Rd
@@ -0,0 +1,79 @@
+\name{explog}
+\alias{explog}
+\alias{dexplog}
+\alias{pexplog}
+\alias{qexplog}
+\alias{rexplog}
+\title{The Exponential Logarithmic Distribution}
+\description{
+  Density, distribution function, quantile function and random
+  generation for the exponential logarithmic distribution.
+
+}
+\usage{
+dexplog(x, scale = 1, shape, log = FALSE)
+pexplog(q, scale = 1, shape)
+qexplog(p, scale = 1, shape) 
+rexplog(n, scale = 1, shape) 
+}
+\arguments{
+  \item{x, q}{vector of quantiles.}
+  \item{p}{vector of probabilities.}
+  \item{n}{number of observations.
+    If \code{length(n) > 1} then the length is taken to be the number
+    required. }
+  \item{scale, shape}{
+   positive scale and shape parameters. }
+  \item{log}{
+  Logical.
+  If \code{log = TRUE} then the logarithm of the density is returned.
+
+  }
+
+}
+\value{
+  \code{dexplog} gives the density,
+  \code{pexplog} gives the distribution function,
+  \code{qexplog} gives the quantile function, and
+  \code{rexplog} generates random deviates.
+
+}
+\author{ J. G. Lauder and T. W. Yee }
+\details{
+  See \code{\link{explogarithmic}}, the \pkg{VGAM} family function
+  for estimating the parameters, 
+  for the formula of the probability density function and other details.
+
+}
+\note{
+  We define \code{scale} as the reciprocal of the scale parameter
+  used by Tahmasabi and Rezaei (2008).
+
+}
+\seealso{
+  \code{\link{explogarithmic}},
+  \code{\link{exponential}}.  
+
+
+}
+\examples{
+\dontrun{
+shape = 0.5; scale = 2; nn = 501
+x = seq(-0.50, 6.0, len = nn)
+plot(x, dexplog(x, scale, shape), type = "l", las = 1, ylim = c(0, 1.1),
+     ylab = paste("[dp]explog(shape = ", shape, ", scale = ", scale, ")"),
+     col = "blue", cex.main = 0.8,
+     main = "Blue is density, orange is cumulative distribution function",
+     sub = "Purple lines are the 10,20,...,90 percentiles")
+lines(x, pexplog(x, scale, shape), col = "orange")
+probs = seq(0.1, 0.9, by = 0.1)
+Q = qexplog(probs, scale, shape = shape)
+lines(Q, dexplog(Q, scale, shape = shape), col = "purple", lty = 3, type = "h")
+lines(Q, pexplog(Q, scale, shape = shape), col = "purple", lty = 3, type = "h")
+abline(h = probs, col = "purple", lty = 3)
+max(abs(pexplog(Q, scale, shape = shape) - probs)) # Should be 0
+}
+}
+\keyword{distribution}
+
+
diff --git a/man/exponential.Rd b/man/exponential.Rd
index c738c89..70d9ebb 100644
--- a/man/exponential.Rd
+++ b/man/exponential.Rd
@@ -77,6 +77,7 @@ New York: Wiley-Interscience, Third edition.
     \code{\link{amlexponential}},
     \code{\link{laplace}},
     \code{\link{expgeometric}},
+    \code{\link{explogarithmic}},
     \code{\link{poissonff}},
     \code{\link{mix2exp}},
     \code{\link{freund61}}.
diff --git a/man/exppoisson.Rd b/man/exppoisson.Rd
new file mode 100644
index 0000000..178f1aa
--- /dev/null
+++ b/man/exppoisson.Rd
@@ -0,0 +1,98 @@
+\name{exppoisson}
+\alias{exppoisson}
+%- Also NEED an '\alias' for EACH other topic documented here.
+\title{Exponential Poisson Distribution Family Function}
+\description{
+  Estimates the two parameters of the exponential Poisson distribution
+  by maximum likelihood estimation.
+
+}
+\usage{
+exppoisson(llambda = "loge", lbetave = "loge", elambda = list(),
+           ebetave = list(), ilambda = 1.1, ibetave = 2,
+           zero = NULL)
+}
+%- maybe also 'usage' for other objects documented here.
+\arguments{
+  \item{llambda, lbetave}{
+  Link function for the two positive parameters.
+  See \code{\link{Links}} for more choices.
+
+  }
+  \item{elambda, ebetave}{
+  List. Extra argument for each of the links.
+  See \code{earg} in \code{\link{Links}} for general information.
+
+  }
+  \item{ilambda, ibetave}{
+  Numeric.
+  Initial values for the \code{lambda} and \code{betave} parameters.
+  Currently this function is not intelligent enough to
+  obtain better initial values.
+
+  }
+  \item{zero}{
+  See \code{\link{CommonVGAMffArguments}}.
+
+  }
+}
+\details{
+  The exponential Poisson distribution has density function
+  \deqn{f(y; \lambda = shape, \beta = scale)  =
+  \frac{\lambda \beta}{1 - e^{-\lambda}} \,
+  e^{-\lambda - \beta y + \lambda \exp{(-\beta y)}}}{%
+  f(y; a = shape, b = scale)  =
+  (a*b/(1 - e^(-a))) * e^{-a - b*y + a * e^(-b*y)}}
+  where \eqn{y > 0} and the
+  parameters shape, \eqn{\lambda}{a},
+  and scale, \eqn{\beta}{b}, are positive.
+  The distribution implies a population facing discrete
+  hazard rates which are multiples of a base hazard.
+  This \pkg{VGAM} family function requires the \pkg{hypergeo} package
+  (to use their \code{\link[hypergeo]{genhypergeo}} function).
+
+
+}
+\section{Warning }{
+  This \pkg{VGAM} family function does not work properly!
+
+}
+\value{
+  An object of class \code{"vglmff"} (see \code{\link{vglmff-class}}).
+  The object is used by modelling functions such as \code{\link{vglm}}
+  and \code{\link{vgam}}.
+
+}
+\references{
+  Kus, C., (2007).
+  A new lifetime distribution.
+  \emph{Computational Statistics and Data Analysis},
+  \bold{51}, 4497--4509.
+
+
+}
+\author{ J. G. Lauder, jamesglauder at gmail.com }
+
+
+\seealso{ 
+  \code{\link{dexppois}},
+  \code{\link{exponential}},
+  \code{\link{poisson}}.
+
+
+}
+\examples{
+\dontrun{
+lambda = exp(1); betave = exp(2)
+rdata = data.frame(y = rexppois(n = 1000, lambda, betave))
+library(hypergeo)
+fit = vglm(y ~ 1, exppoisson, rdata, trace = TRUE)
+c(with(rdata, mean(y)), head(fitted(fit), 1))
+coef(fit, matrix = TRUE)
+Coef(fit)
+summary(fit)
+}
+}
+\keyword{models}
+\keyword{regression}
+
diff --git a/man/exppoissonUC.Rd b/man/exppoissonUC.Rd
new file mode 100644
index 0000000..ccda42f
--- /dev/null
+++ b/man/exppoissonUC.Rd
@@ -0,0 +1,73 @@
+\name{exppois}
+\alias{exppois}
+\alias{dexppois}
+\alias{pexppois}
+\alias{qexppois}
+\alias{rexppois}
+\title{The Exponential Poisson Distribution}
+\description{
+  Density, distribution function, quantile function and random
+  generation for the exponential poisson distribution.
+
+}
+\usage{
+dexppois(x, lambda, betave = 1, log = FALSE)
+pexppois(q, lambda, betave = 1)
+qexppois(p, lambda, betave = 1)  
+rexppois(n, lambda, betave = 1)
+}
+\arguments{
+  \item{x, q}{vector of quantiles.}
+  \item{p}{vector of probabilities.}
+  \item{n}{number of observations.
+    If \code{length(n) > 1} then the length is taken to be the number required. }
+  \item{lambda, betave}{ both positive parameters. }
+  \item{log}{
+  Logical.
+  If \code{log = TRUE} then the logarithm of the density is returned.
+
+  }
+
+}
+\value{
+  \code{dexppois} gives the density,
+  \code{pexppois} gives the distribution function,
+  \code{qexppois} gives the quantile function, and
+  \code{rexppois} generates random deviates.
+
+}
+\author{ J. G. Lauder, jamesglauder at gmail.com }
+\details{
+  See \code{\link{exppoisson}}, the \pkg{VGAM} family function
+  for estimating the parameters, 
+  for the formula of the probability density function and other details.
+
+}
+%\note{
+%}
+\seealso{
+  \code{\link{exppoisson}}.
+
+
+}
+\examples{
+\dontrun{
+lambda = 2; betave = 2; nn = 201
+x = seq(-0.05, 1.05, len = nn)
+plot(x, dexppois(x, lambda, betave), type = "l", las = 1, ylim = c(0, 5),
+     ylab = paste("[dp]exppoisson(lambda = ", lambda, ", betave = ", betave, ")"),
+     col = "blue", cex.main = 0.8,
+     main = "Blue is density, orange is cumulative distribution function",
+     sub = "Purple lines are the 10,20,...,90 percentiles")
+lines(x, pexppois(x, lambda, betave), col = "orange")
+probs = seq(0.1, 0.9, by = 0.1)
+Q = qexppois(probs, lambda, betave)
+lines(Q, dexppois(Q, lambda, betave), col = "purple", lty = 3, type = "h")
+lines(Q, pexppois(Q, lambda, betave), col = "purple", lty = 3, type = "h")
+abline(h = probs, col = "purple", lty = 3)
+max(abs(pexppois(Q, lambda, betave) - probs)) # Should be 0
+}
+}
+\keyword{distribution}
+
+
diff --git a/man/felix.Rd b/man/felix.Rd
index 3bc4f03..8f7051e 100644
--- a/man/felix.Rd
+++ b/man/felix.Rd
@@ -9,7 +9,7 @@
 }
 \usage{
 felix(link = "elogit", earg = if (link == "elogit") list(min
-      = 0, max = 0.5) else list(), method.init=1)
+      = 0, max = 0.5) else list(), imethod=1)
 }
 %- maybe also 'usage' for other objects documented here.
 \arguments{
@@ -18,7 +18,7 @@ felix(link = "elogit", earg = if (link == "elogit") list(min
   See \code{\link{Links}} for more choices and for general information.
 
   }
-  \item{method.init}{
+  \item{imethod}{
   See \code{\link{CommonVGAMffArguments}}.
   Valid values are 1, 2, 3 or 4.
 
diff --git a/man/fff.Rd b/man/fff.Rd
index 6276f7c..e1f092a 100644
--- a/man/fff.Rd
+++ b/man/fff.Rd
@@ -7,7 +7,7 @@
 }
 \usage{
 fff(link="loge", earg=list(), idf1=NULL, idf2=NULL, nsimEIM=100,
-    method.init=1, zero=NULL)
+    imethod=1, zero=NULL)
 }
 %- maybe also 'usage' for other objects documented here.
 \arguments{
@@ -32,7 +32,7 @@ fff(link="loge", earg=list(), idf1=NULL, idf2=NULL, nsimEIM=100,
   See \code{\link{CommonVGAMffArguments}} for more information.
 
   }
-  \item{method.init}{
+  \item{imethod}{
   Initialization method. Either the value 1 or 2.
   If both fail try setting values for \code{idf1} and \code{idf2}.
 
diff --git a/man/fgm.Rd b/man/fgm.Rd
index 7d8254d..97d3bc9 100644
--- a/man/fgm.Rd
+++ b/man/fgm.Rd
@@ -9,7 +9,7 @@
 
 }
 \usage{
-fgm(lapar="rhobit", earg=list(), iapar=NULL, method.init=1, nsimEIM=200)
+fgm(lapar="rhobit", earg=list(), iapar=NULL, imethod=1, nsimEIM=200)
 }
 %- maybe also 'usage' for other objects documented here.
 \arguments{
@@ -28,10 +28,10 @@ fgm(lapar="rhobit", earg=list(), iapar=NULL, method.init=1, nsimEIM=200)
   Numeric. Optional initial value for \eqn{\alpha}{alpha}.
   By default, an initial value is chosen internally.
   If a convergence failure occurs try assigning a different value.
-  Assigning a value will override the argument \code{method.init}.
+  Assigning a value will override the argument \code{imethod}.
 
   }
-  \item{method.init}{
+  \item{imethod}{
   An integer with value \code{1} or \code{2} which
   specifies the initialization method. If failure to converge occurs
   try the other value, or else specify a value for \code{ia}.
diff --git a/man/fnormal1.Rd b/man/fnormal1.Rd
index fa86f07..006cb95 100644
--- a/man/fnormal1.Rd
+++ b/man/fnormal1.Rd
@@ -7,7 +7,7 @@
 }
 \usage{
 fnormal1(lmean="identity", lsd="loge", emean=list(), esd=list(), imean=NULL,
-         isd=NULL, a1=1, a2=1, nsimEIM=500, method.init=1, zero=NULL)
+         isd=NULL, a1=1, a2=1, nsimEIM=500, imethod=1, zero=NULL)
 }
 %- maybe also 'usage' for other objects documented here.
 \arguments{
@@ -34,7 +34,7 @@ fnormal1(lmean="identity", lsd="loge", emean=list(), esd=list(), imean=NULL,
   Each must be of length 1.
 
   }
-  \item{nsimEIM, method.init, zero}{
+  \item{nsimEIM, imethod, zero}{
   See \code{\link{CommonVGAMffArguments}}.
 
   }
diff --git a/man/frechet.Rd b/man/frechet.Rd
index ded3741..10061b2 100644
--- a/man/frechet.Rd
+++ b/man/frechet.Rd
@@ -1,21 +1,24 @@
 \name{frechet}
 % \alias{frechet}
 \alias{frechet2}
-\alias{frechet3}
+%\alias{frechet3}
 %- Also NEED an '\alias' for EACH other topic documented here.
 \title{ Frechet Distribution Family Function }
 \description{
-   Maximum likelihood estimation of the 2-parameter and 3-parameter
+   Maximum likelihood estimation of the 2-parameter
    Frechet distribution.
 
+%  and 3-parameter
+
 }
 \usage{
-frechet2(location=0, lscale="loge", lshape="loglog", escale = list(),
-         eshape = list(), iscale=NULL, ishape=3, zero=NULL)
-frechet3(anchor=NULL, ldifference="loge", lscale="loge", lshape="loglog",
-         edifference=list(), escale = list(), eshape = list(),
-         ilocation=NULL, iscale=NULL, ishape=3, zero=NULL,
-         effpos = .Machine$double.eps^0.75)
+frechet2(location = 0, lscale = "loge", lshape = "logoff",
+         escale = list(), eshape = list(offset = -2), iscale = NULL,
+         ishape = NULL, nsimEIM = 250, zero = NULL)
+%frechet3(anchor = NULL, ldifference = "loge", lscale = "loge",
+%         lshape = "loglog", edifference = list(), escale = list(),
+%         eshape = list(), ilocation = NULL, iscale = NULL, ishape = NULL,
+%         zero = NULL, effpos = .Machine$double.eps^0.75)
 }
 %- maybe also 'usage' for other objects documented here.
 \arguments{
@@ -24,86 +27,79 @@ frechet3(anchor=NULL, ldifference="loge", lscale="loge", lshape="loglog",
   It is called \eqn{a} below.
 
   }
-  \item{lscale, lshape}{
-  Link functions for the parameters.
+  \item{lscale, lshape, escale, eshape}{
+  Link functions and extra arguments for the parameters.
   See \code{\link{Links}} for more choices.
 
   }
-  \item{iscale, ishape}{
-  Initial value for the scale and shape parameters respectively. 
-  Both parameters must be positive. 
-  A \code{NULL} means it is chosen internally.
-
-  }
-  \item{edifference, escale, eshape}{
-  Extra argument for the respective links.
-  See \code{earg} in \code{\link{Links}} for general information.
-
-  }
-  \item{zero}{
-  An integer-valued vector specifying which
-  linear/additive predictors are modelled as intercepts only.  The value
-  must be from the set \{1,2\}, corresponding respectively to \eqn{scale}
-  and \eqn{shape}.  By default all linear/additive predictors are modelled
-  as a linear combination of the explanatory variables.
-
-  }
-  \item{anchor}{
-  An ``anchor'' point for estimating the location parameter. This must
-  be a value no greater than \code{min(y)} where \code{y} is the response.
-  The location parameter is \eqn{A - D} where
-  \eqn{A} is the anchor,
-  \eqn{D} is the ``difference'' (default is to make this positive).
-  The default value of \code{anchor} means \code{min(y)} is chosen.
-
-  }
-  \item{ldifference}{
-  Parameter link function for the difference \eqn{D} between the anchor
-  point and the location parameter estimate.
-  The default keeps this difference positive so that numerical
-  problems are less likely to occur.
-
-  }
-  \item{ilocation}{
-  Optional initial value for the location parameter.
-  A good choice can speed up the convergence rate markedly.
-  A \code{NULL} means it is chosen internally.
-
-  }
-  \item{effpos}{
-  A small number, usually positive, to pass into the quasi-Newton
-  updating function. A value greater than \code{effpos} is considered
-  effectively positive.
+  \item{iscale, ishape, zero, nsimEIM}{
+  See \code{\link{CommonVGAMffArguments}} for information.
 
   }
+% \item{edifference}{   % 
+% Extra argument for the respective links.
+% See \code{earg} in \code{\link{Links}} for general information.
+
+% }
+
+
+% \item{anchor}{
+% An ``anchor'' point for estimating the location parameter. This must
+% be a value no greater than \code{min(y)} where \code{y} is the response.
+% The location parameter is \eqn{A - D} where
+% \eqn{A} is the anchor,
+% \eqn{D} is the ``difference'' (default is to make this positive).
+% The default value of \code{anchor} means \code{min(y)} is chosen.
+%
+% }
+% \item{ldifference}{
+% Parameter link function for the difference \eqn{D} between the anchor
+% point and the location parameter estimate.
+% The default keeps this difference positive so that numerical
+% problems are less likely to occur.
+
+% }
+% \item{ilocation}{
+% Optional initial value for the location parameter.
+% A good choice can speed up the convergence rate markedly.
+% A \code{NULL} means it is chosen internally.
+
+% }
 }
 \details{
-  The Frechet distribution has a density function that can be written
+  The (3-parameter) Frechet distribution has a density function
+  that can be written
   \deqn{f(y) = \frac{sb}{(y-a)^2} [b/(y-a)]^{s-1} \, \exp[-(b/(y-a))^s] }{%
         f(y) = ((s*b) / (y-a)^2) * exp[-(b/(y-a))^s] * [b/(y-a)]^(s-1)}
-  for \eqn{y>a} and scale parameter \eqn{b>0}.
+  for \eqn{y > a} and scale parameter \eqn{b > 0}.
   The positive shape parameter is \eqn{s}.
   The cumulative distribution function is 
   \deqn{F(y) = \exp[-(b/(y-a))^s]. }{%
         F(y) =  exp[-(b/(y-a))^s].}
   The mean of \eqn{Y} is \eqn{a + b \Gamma(1-1/s)}{a + b*gamma(1-1/s)}
-  for \eqn{s>1} (these are returned as the fitted values).
-  Note that the \code{\link{loglog}} link ensures \eqn{s>1}.
+  for \eqn{s > 1} (these are returned as the fitted values).
   The variance of \eqn{Y} is
-  \eqn{b^2 [ \Gamma(1-2/s) - \Gamma^2(1-1/s)]}{b^2 * [gamma(1-2/s) - gamma(1-1/s)^2]}
-  for \eqn{s>2}.
+  \eqn{b^2 [ \Gamma(1-2/s) - \Gamma^2(1-1/s)]}{b^2 * [gamma(1 - 2/s) - gamma(1 - 1/s)^2]}
+  for \eqn{s > 2}.
+
+
+  Family \code{frechet2} has \eqn{a} known, and
+  \eqn{\log(b)}{log(b)} and
+  \eqn{\log(s - 2)}{log(s - 2)} are the default linear/additive predictors.
+  The working weights are estimated by simulated Fisher scoring.
+
+
+% Note that the \code{\link{loglog}} link ensures \eqn{s > 1}.
 
+% whereas \code{frechet3} estimates it.
+% Estimating \eqn{a} well requires a lot of data and
+% a good choice of \code{ilocation} will help speed up convergence.
+% For \code{frechet3} the default linear/additive predictors are
+% \eqn{\log(D)}{log(D)}, 
+% It would be great if the first linear/additive predictor was a direct
+% function of the location parameter, but this can run the risk that
+% the estimate is out of range (i.e., greater than \code{min(y)}).
 
-  \code{frechet2} has \eqn{a} known whereas \code{frechet3}
-  estimates it.  Estimating \eqn{a} well requires a lot of data and
-  a good choice of \code{ilocation} will help speed up convergence.
-  For \code{frechet3} the default linear/additive predictors are
-  \eqn{\log(D)}{log(D)}, 
-  \eqn{\log(b)}{log(b)}, 
-  \eqn{\log\log(s)}{log(log(s))}, respectively.
-  It would be great if the first linear/additive predictor was a direct
-  function of the location parameter, but this can run the risk that
-  the estimate is out of range (i.e., greater than \code{min(y)}).
 
 }
 \value{
@@ -114,50 +110,56 @@ frechet3(anchor=NULL, ldifference="loge", lscale="loge", lshape="loglog",
 }
 \references{
 Castillo, E., Hadi, A. S., Balakrishnan, N. Sarabia, J. S. (2005)
-\emph{Extreme Value and Related Models with Applications in Engineering and Science},
+\emph{Extreme Value and Related Models with Applications
+      in Engineering and Science},
 Hoboken, N.J.: Wiley-Interscience.
 
 }
 \author{ T. W. Yee }
 \section{Warning}{
-  Convergence for \code{frechet3} can be very slow, especially if the
-  initial value for the location parameter is poor. Setting something
-  like \code{maxit=200, trace=TRUE} is a good idea.
+%  Convergence for \code{frechet3} can be very slow, especially if the
+%  initial value for the location parameter is poor. Setting something
+%  like \code{maxit = 200, trace = TRUE} is a good idea.
+
+
+  Family function \code{frechet2} may fail for low values of
+  the shape parameter, e.g., near 2 or lower.
 
 }
 
-\note{ 
-  These family functions use the BFGS quasi-Newton update formula for the
-  working weight matrices.  Consequently the estimated variance-covariance
-  matrix may be inaccurate or simply wrong! The standard errors must be
-  therefore treated with caution; these are computed in functions such
-  as \code{vcov()} and \code{summary()}.
+%\note{ 
 
+% Family function \code{frechet3} uses
+% the BFGS quasi-Newton update formula for the
+% working weight matrices.  Consequently the estimated variance-covariance
+% matrix may be inaccurate or simply wrong! The standard errors must be
+% therefore treated with caution; these are computed in functions such
+% as \code{vcov()} and \code{summary()}.
 
-  If \code{fit} is a \code{frechet3} fit then \code{fit at extra$location}
-  is the final estimate of the location parameter, and
-  \code{fit at extra$LHSanchor} is the anchor point.
 
+% If \code{fit} is a \code{frechet3} fit then \code{fit at extra$location}
+% is the final estimate of the location parameter, and
+% \code{fit at extra$LHSanchor} is the anchor point.
+
+
+%}
 
-}
 \seealso{
-  \code{\link{rfrechet}}.
+  \code{\link{rfrechet}},
+  \code{\link{gev}}.
 
 }
 \examples{
-y = rfrechet(n <- 1000, shape=exp(exp(0)))
-\dontrun{hist(y)}
-fit2 = vglm(y ~ 1, frechet2, trace=TRUE, maxit=155)
-fit3 = vglm(y ~ 1, frechet3(ilocation=0), trace=TRUE, maxit=155)
-coef(fit3, matrix=TRUE)
-Coef(fit3)
-head(fitted(fit3))
-mean(y)
-head(weights(fit3, type="w"))
-vcov(fit3)   # caution needed!
-head(fit3 at extra$location)  # Estimate of the location parameter
-fit3 at extra$LHSanchor       # Anchor point
-min(y)
+set.seed(123)
+fdata = data.frame(y1 = rfrechet(nn <- 1000, shape = 2 + exp(1)))
+\dontrun{ with(fdata, hist(y1)) }
+fit2 = vglm(y1 ~ 1, frechet2, fdata, trace = TRUE)
+coef(fit2, matrix = TRUE)
+Coef(fit2)
+head(fitted(fit2))
+with(fdata, mean(y1))
+head(weights(fit2, type = "working"))
+vcov(fit2)
 }
 \keyword{models}
 \keyword{regression}
diff --git a/man/frechetUC.Rd b/man/frechetUC.Rd
index 4be25c2..5b55561 100644
--- a/man/frechetUC.Rd
+++ b/man/frechetUC.Rd
@@ -8,23 +8,26 @@
 \description{
   Density, distribution function, quantile function and random
   generation for the three parameter Frechet distribution.
+
 }
 \usage{
-dfrechet(x, location=0, scale=1, shape, log=FALSE)
-pfrechet(q, location=0, scale=1, shape)
-qfrechet(p, location=0, scale=1, shape)
-rfrechet(n, location=0, scale=1, shape)
+dfrechet(x, location = 0, scale = 1, shape, log = FALSE)
+pfrechet(q, location = 0, scale = 1, shape)
+qfrechet(p, location = 0, scale = 1, shape)
+rfrechet(n, location = 0, scale = 1, shape)
 }
 \arguments{
   \item{x, q}{vector of quantiles.}
   \item{p}{vector of probabilities.}
   \item{n}{number of observations.
-    Must be a positive integer of length 1.}
+    Passed into \code{\link[stats:Uniform]{runif}}.
+
+  }
   \item{location, scale, shape}{the location parameter \eqn{a},
   scale parameter \eqn{b}, and shape parameter \eqn{s}.}
   \item{log}{
   Logical.
-  If \code{log=TRUE} then the logarithm of the density is returned.
+  If \code{log = TRUE} then the logarithm of the density is returned.
 
   }
 
@@ -34,38 +37,40 @@ rfrechet(n, location=0, scale=1, shape)
   \code{pfrechet} gives the distribution function,
   \code{qfrechet} gives the quantile function, and
   \code{rfrechet} generates random deviates.
+
 }
 \references{
 Castillo, E., Hadi, A. S., Balakrishnan, N. Sarabia, J. S. (2005)
-\emph{Extreme Value and Related Models with Applications in Engineering and Science},
+\emph{Extreme Value and Related Models with Applications in
+      Engineering and Science},
 Hoboken, N.J.: Wiley-Interscience.
 
 }
 \author{ T. W. Yee }
 \details{
-  See \code{\link{frechet2}} and \code{\link{frechet3}}, the \pkg{VGAM}
-  family functions for estimating the 2 (without location parameter) and
-  3 parameters by maximum likelihood estimation, for the formula of the
-  probability density function and range restrictions on the parameters.
+  See \code{\link{frechet2}}, the \pkg{VGAM}
+  family function for estimating the 2 parameters (without location
+  parameter) by maximum likelihood estimation, for the formula
+  of the probability density function and range restrictions on
+  the parameters.
 
 }
 %\note{
 %}
 \seealso{
-  \code{\link{frechet2}},
-  \code{\link{frechet3}}.
+  \code{\link{frechet2}}.
+% \code{\link{frechet3}}.
+
 }
 \examples{
-\dontrun{
-shape = 5
-x = seq(-0.1, 3.5, len=100)
-plot(x, dfrechet(x, shape=shape), type="l", ylab="", las=1,
-     main="Frechet density divided into 10 equal areas; red=cdf")
-abline(h=0, col="blue", lty=2)
-qq = qfrechet(seq(0.1,0.9,by=0.1), shape=shape)
-lines(qq, dfrechet(qq, shape=shape), col="purple", lty=3, type="h")
-lines(x, pfrechet(q=x, shape=shape), col="red")
-}
+\dontrun{ shape = 5
+x = seq(-0.1, 3.5, len = 401)
+plot(x, dfrechet(x, shape = shape), type = "l", ylab = "", las = 1,
+     main = "Frechet density divided into 10 equal areas; orange = cdf")
+abline(h = 0, col = "blue", lty = 2)
+qq = qfrechet(seq(0.1, 0.9,by = 0.1), shape = shape)
+lines(qq, dfrechet(qq, shape = shape), col = "purple", lty = 3, type = "h")
+lines(x, pfrechet(q = x, shape = shape), col = "orange") }
 }
 \keyword{distribution}
 
diff --git a/man/freund61.Rd b/man/freund61.Rd
index b2b862b..9fcf883 100644
--- a/man/freund61.Rd
+++ b/man/freund61.Rd
@@ -9,8 +9,9 @@
 
 }
 \usage{
-freund61(la="loge", lap="loge", lb="loge", lbp="loge", ia=NULL, iap=NULL,
-         ib=NULL, ibp=NULL, independent=FALSE, zero=NULL)
+freund61(la = "loge", lap = "loge", lb = "loge", lbp = "loge",
+         ia = NULL, iap = NULL, ib = NULL, ibp = NULL,
+         independent = FALSE, zero = NULL)
 }
 %- maybe also 'usage' for other objects documented here.
 \arguments{
@@ -21,11 +22,13 @@ freund61(la="loge", lap="loge", lb="loge", lbp="loge", ia=NULL, iap=NULL,
   (the ``\code{p}'' stands for ``prime'').
   See \code{\link{Links}} for more choices.
 
+
   }
   \item{ia,iap,ib,ibp}{
   Initial value for the four parameters respectively.
   The default is to estimate them all internally.
 
+
   }
   \item{independent}{
   Logical. If \code{TRUE} then the parameters are constrained to satisfy
@@ -33,6 +36,7 @@ freund61(la="loge", lap="loge", lb="loge", lbp="loge", ia=NULL, iap=NULL,
   which implies that \eqn{y_1}{y1} and \eqn{y_2}{y2} are independent
   and each have an ordinary exponential distribution.
 
+
   }
   \item{zero}{
   An integer-valued vector specifying which
@@ -40,6 +44,7 @@ freund61(la="loge", lap="loge", lb="loge", lbp="loge", ia=NULL, iap=NULL,
   The values must be from the set \{1,2,3,4\}.
   The default is none of them.
 
+
   }
 }
 \details{
@@ -124,12 +129,14 @@ A bivariate extension of the exponential distribution.
 \emph{Journal of the American Statistical Association},
 \bold{56}, 971--977.
 
+
 }
 \author{ T. W. Yee }
 \note{
   To estimate all four parameters, it is necessary to have some
   data where \eqn{y_1<y_2}{y1<y2} and \eqn{y_2<y_1}{y2<y1}.
 
+
   The response must be a two-column matrix, with columns
   \eqn{y_1}{y1} and \eqn{y_2}{y2}.
   Currently, the fitted value is a matrix with two columns; the
@@ -161,23 +168,25 @@ A bivariate extension of the exponential distribution.
 
 \seealso{
   \code{\link{exponential}}.
+
+
 }
 \examples{
-y1 = rexp(n <- 200, rate=4)
-y2 = rexp(n, rate=8)
+y1 = rexp(n <- 200, rate = 4)
+y2 = rexp(n, rate = 8)
 ymat = cbind(y1,y2)
-fit =  vglm(ymat ~ 1, fam=freund61, trace=TRUE)
-coef(fit, matrix=TRUE)
+fit =  vglm(ymat ~ 1, fam = freund61, trace = TRUE)
+coef(fit, matrix = TRUE)
 Coef(fit)
 vcov(fit)
 head(fitted(fit))
 summary(fit)
 
 # y1 and y2 are independent, so fit an independence model
-fit2 = vglm(ymat ~ 1, fam=freund61(indep=TRUE), trace=TRUE)
-coef(fit2, matrix=TRUE)
+fit2 = vglm(ymat ~ 1, fam = freund61(indep = TRUE), trace = TRUE)
+coef(fit2, matrix = TRUE)
 constraints(fit2)
-pchisq(2*(logLik(fit)-logLik(fit2)), df=2, lower.tail=FALSE) # p-value
+pchisq(2*(logLik(fit)-logLik(fit2)), df = 2, lower.tail = FALSE) # p-value
 }
 \keyword{models}
 \keyword{regression}
diff --git a/man/gamma2.Rd b/man/gamma2.Rd
index cf06696..877af3f 100644
--- a/man/gamma2.Rd
+++ b/man/gamma2.Rd
@@ -9,7 +9,7 @@
 }
 \usage{
 gamma2(lmu = "loge", lshape = "loge", emu = list(), eshape = list(),
-       method.init = 1, deviance.arg = FALSE, ishape = NULL, zero = -2)
+       imethod = 1, deviance.arg = FALSE, ishape = NULL, zero = -2)
 }
 %- maybe also 'usage' for other objects documented here.
 \arguments{
@@ -32,7 +32,7 @@ gamma2(lmu = "loge", lshape = "loge", emu = list(), eshape = list(),
   \code{iShape} argument of \code{\link{qrrvglm.control}} instead.
 
   }
-  \item{method.init}{
+  \item{imethod}{
   An integer with value \code{1} or \code{2} which
   specifies the initialization method for the \eqn{\mu}{mu} parameter.
   If failure to converge occurs
diff --git a/man/gaussianff.Rd b/man/gaussianff.Rd
index 63a57e3..3ad204b 100644
--- a/man/gaussianff.Rd
+++ b/man/gaussianff.Rd
@@ -113,6 +113,7 @@ gaussianff(dispersion = 0, parallel = FALSE, zero = NULL)
   \code{\link{normal1}},
   \code{\link{huber}},
   \code{\link{lqnorm}},
+  \code{\link{binormal}},
   \code{vlm},
   \code{\link{vglm}},
   \code{\link{vgam}},
diff --git a/man/gengammaUC.Rd b/man/gengammaUC.Rd
index 6e93fdd..3a3cc93 100644
--- a/man/gengammaUC.Rd
+++ b/man/gengammaUC.Rd
@@ -42,6 +42,7 @@ Stacy, E. W. and Mihram, G. A. (1965)
 Parameter estimation for a generalized gamma distribution.
 \emph{Technometrics}, \bold{7}, 349--358.
 
+
 }
 \author{ T. W. Yee }
 \details{
@@ -52,12 +53,14 @@ Parameter estimation for a generalized gamma distribution.
   Apart from \code{n}, all the above arguments may be vectors and
   are recyled to the appropriate length if necessary.
 
+
 }
 % \note{
 % }
 \seealso{
   \code{\link{gengamma}}.
 
+
 }
 \examples{
 \dontrun{ x = seq(0, 14, by = 0.01); d = 1.5; Scale = 2; k = 6
diff --git a/man/genpoisson.Rd b/man/genpoisson.Rd
index f61cb3c..c367e2c 100644
--- a/man/genpoisson.Rd
+++ b/man/genpoisson.Rd
@@ -10,7 +10,7 @@ genpoisson(llambda = "elogit", ltheta = "loge",
            elambda = if (llambda == "elogit") list(min = -1, max = 1)
                      else list(),
            etheta = list(), ilambda = NULL, itheta = NULL,
-           use.approx = TRUE, method.init = 1, zero = 1)
+           use.approx = TRUE, imethod = 1, zero = 1)
 }
 %- maybe also 'usage' for other objects documented here.
 \arguments{
@@ -38,7 +38,7 @@ genpoisson(llambda = "elogit", ltheta = "loge",
   information matrix is used, otherwise Newton-Raphson is used.
 
   }
-  \item{method.init}{
+  \item{imethod}{
   An integer with value \code{1} or \code{2} which
   specifies the initialization method for the parameters.
   If failure to converge occurs try another value
@@ -117,9 +117,9 @@ New York: Marcel Dekker.
 
 }
 \examples{
-gdata = data.frame(x = runif(nn <- 200))
-gdata = transform(gdata, y = rpois(nn, exp(2-x))) # Ordinary Poisson data
-fit  = vglm(y ~ x, genpoisson(zero = 1), gdata, trace = TRUE)
+gdata = data.frame(x2 = runif(nn <- 200))
+gdata = transform(gdata, y = rpois(nn, exp(2-x2))) # Ordinary Poisson data
+fit  = vglm(y ~ x2, genpoisson(zero = 1), gdata, trace = TRUE)
 coef(fit, matrix = TRUE)
 summary(fit)
 }
diff --git a/man/genrayleigh.Rd b/man/genrayleigh.Rd
index 8c5e535..1fd4484 100644
--- a/man/genrayleigh.Rd
+++ b/man/genrayleigh.Rd
@@ -8,9 +8,8 @@
 
 }
 \usage{
-genrayleigh(lshape = "loge", lscale = "loge",
-            eshape = list(), escale = list(),
-            ishape = NULL,   iscale = NULL,
+genrayleigh(lshape = "loge", lscale = "loge", eshape = list(),
+            escale = list(), ishape = NULL,   iscale = NULL,
             tol12 = 1e-05, nsimEIM = 300, zero = 1)
 }
 %- maybe also 'usage' for other objects documented here.
@@ -52,6 +51,8 @@ genrayleigh(lshape = "loge", lscale = "loge",
   the fitted values.
   Applications of the generalized Rayleigh distribution include modeling
   strength data and general lifetime data.
+  Simulated Fisher scoring is implemented.
+
 
 }
 \value{
@@ -59,6 +60,7 @@ genrayleigh(lshape = "loge", lscale = "loge",
   The object is used by modelling functions such as \code{\link{vglm}}
   and \code{\link{vgam}}.
 
+
 }
 \references{
   Kundu, D., Raqab, M. C. (2005).
@@ -67,24 +69,27 @@ genrayleigh(lshape = "loge", lscale = "loge",
   \emph{Computational Statistics and Data Analysis},
   \bold{49}, 187--200.
 
+
 }
 \author{ J. G. Lauder and T. W. Yee }
 \note{
   We define \code{scale} as the reciprocal of the scale parameter 
   used by Kundu and Raqab (2005).
 
+
 }
 
 \seealso{ 
   \code{\link{dgenray}},
   \code{\link{rayleigh}}.
 
+
 }
 \examples{
-shape = exp(1); scale = exp(2); 
+shape = exp(1); scale = exp(1);
 rdata = data.frame(y = rgenray(n = 1000, shape, scale))
 fit = vglm(y ~ 1, genrayleigh, rdata, trace = TRUE)
-c(with(rdata, mean(y)), head(fitted(fit),1))
+c(with(rdata, mean(y)), head(fitted(fit), 1))
 coef(fit, matrix = TRUE)
 Coef(fit)
 summary(fit)
diff --git a/man/genrayleighUC.Rd b/man/genrayleighUC.Rd
index f3a2e8a..92ada5a 100644
--- a/man/genrayleighUC.Rd
+++ b/man/genrayleighUC.Rd
@@ -13,19 +13,19 @@
 \usage{
 dgenray(x, shape, scale = 1, log = FALSE)
 pgenray(q, shape, scale = 1)
-qgenray(p, shape, scale = 1) 
-rgenray(n, shape, scale = 1) 
+qgenray(p, shape, scale = 1)
+rgenray(n, shape, scale = 1)
 }
 \arguments{
   \item{x, q}{vector of quantiles.}
   \item{p}{vector of probabilities.}
   \item{n}{number of observations.
     If \code{length(n) > 1} then the length is taken to be the number required. }
-  \item{shape, scale}{
-   positive shape and scale parameters. }
+  \item{scale, shape}{
+   positive scale and shape parameters. }
   \item{log}{
   Logical.
-  If \code{log=TRUE} then the logarithm of the density is returned.
+  If \code{log = TRUE} then the logarithm of the density is returned.
 
   }
 
@@ -43,33 +43,35 @@ rgenray(n, shape, scale = 1)
   for estimating the parameters, 
   for the formula of the probability density function and other details.
 
+
 }
 \note{
   We define \code{scale} as the reciprocal of the scale parameter
   used by Kundu and Raqab (2005).
 
+
 }
 \seealso{
-  \code{\link{genrayleigh}}.
+  \code{\link{genrayleigh}},
   \code{\link{rayleigh}}.
 
+
 }
 \examples{
 \dontrun{
 shape = 0.5; scale = 1; nn = 501
-#x = seq(0.0 , 1.00, len=nn)
-x = seq(-0.1, 3.0, len=nn)
-plot(x, dgenray(x, shape, scale), type="l", las=1, ylim=c(0,1.0),
-     ylab=paste("fgenray(shape=", shape, ", scale=", scale, ")"),
-     col="blue", cex.main=0.8,
-     main="Blue is density, red is cumulative distribution function",
-     sub="Purple lines are the 10,20,...,90 percentiles")
-lines(x, pgenray(x, shape, scale), col="red")
-probs = seq(0.1, 0.9, by=0.1)
+x = seq(-0.10, 3.0, len = nn)
+plot(x, dgenray(x, shape, scale), type = "l", las = 1, ylim = c(0, 1.2),
+     ylab = paste("[dp]genray(shape = ", shape, ", scale = ", scale, ")"),
+     col = "blue", cex.main = 0.8,
+     main = "Blue is density, orange is cumulative distribution function",
+     sub = "Purple lines are the 10,20,...,90 percentiles")
+lines(x, pgenray(x, shape, scale), col = "orange")
+probs = seq(0.1, 0.9, by = 0.1)
 Q = qgenray(probs, shape, scale)
-lines(Q, dgenray(Q, shape, scale), col="purple", lty=3, type="h")
-lines(Q, pgenray(Q, shape, scale), col="purple", lty=3, type="h")
-abline(h=probs, col="purple", lty=3)
+lines(Q, dgenray(Q, shape, scale), col = "purple", lty = 3, type = "h")
+lines(Q, pgenray(Q, shape, scale), col = "purple", lty = 3, type = "h")
+abline(h = probs, col = "purple", lty = 3)
 max(abs(pgenray(Q, shape, scale) - probs)) # Should be 0
 }
 }
diff --git a/man/geometric.Rd b/man/geometric.Rd
index ccb6e6f..d92e03e 100644
--- a/man/geometric.Rd
+++ b/man/geometric.Rd
@@ -6,7 +6,7 @@
   Maximum likelihood estimation for the geometric distribution.
 }
 \usage{
-geometric(link = "logit", earg=list(), expected = TRUE, method.init = 1)
+geometric(link = "logit", earg=list(), expected = TRUE, imethod = 1)
 }
 %- maybe also 'usage' for other objects documented here.
 \arguments{
@@ -26,7 +26,7 @@ geometric(link = "logit", earg=list(), expected = TRUE, method.init = 1)
   Fisher scoring is used if \code{expected = TRUE}, else Newton-Raphson.
 
   }
-  \item{method.init}{
+  \item{imethod}{
   An integer with value \code{1} or \code{2} or \code{3} which
   specifies the initialization method for the probability.
   If failure to converge occurs try another value.
diff --git a/man/gev.Rd b/man/gev.Rd
index 59192db..d24a512 100644
--- a/man/gev.Rd
+++ b/man/gev.Rd
@@ -11,18 +11,18 @@
 \usage{
 gev(llocation = "identity", lscale = "loge", lshape = "logoff",
     elocation = list(), escale = list(),
-    eshape = if (lshape=="logoff") list(offset=0.5) else
-    if (lshape=="elogit") list(min=-0.5, max=0.5) else list(),
+    eshape = if (lshape == "logoff") list(offset = 0.5) else
+    if (lshape == "elogit") list(min = -0.5, max = 0.5) else list(),
     percentiles = c(95, 99), iscale=NULL, ishape = NULL,
-    method.init = 1, gshape=c(-0.45, 0.45), tolshape0=0.001,
-    giveWarning=TRUE, zero = 3)
+    imethod = 1, gshape=c(-0.45, 0.45), tolshape0 = 0.001,
+    giveWarning = TRUE, zero = 3)
 egev(llocation = "identity", lscale = "loge", lshape = "logoff",
      elocation = list(), escale = list(),
-     eshape = if (lshape=="logoff") list(offset=0.5) else
-     if (lshape=="elogit") list(min=-0.5, max=0.5) else list(),
+     eshape = if (lshape == "logoff") list(offset = 0.5) else
+     if (lshape == "elogit") list(min = -0.5, max = 0.5) else list(),
      percentiles = c(95, 99), iscale=NULL,  ishape = NULL,
-     method.init=1, gshape=c(-0.45, 0.45), tolshape0=0.001,
-     giveWarning=TRUE, zero = 3)
+     imethod = 1, gshape=c(-0.45, 0.45), tolshape0 = 0.001,
+     giveWarning = TRUE, zero = 3)
 }
 %- maybe also 'usage' for other objects documented here.
 \arguments{
@@ -40,19 +40,20 @@ egev(llocation = "identity", lscale = "loge", lshape = "logoff",
   called \eqn{A} below; and then the linear/additive predictor is
   \eqn{\log(\xi+A)}{log(xi+A)} which means that
   \eqn{\xi > -A}{xi > -A}.
-  For technical reasons (see \bold{Details}) it is a good idea for \eqn{A=0.5}.
+  For technical reasons (see \bold{Details}) it is a good idea
+  for \eqn{A = 0.5}.
 
   }
 
 %  \item{Offset}{
 %  Numeric, of length 1.
 %  Called \eqn{A} below.
-%  Offset value if \code{lshape="logoff"}.
+%  Offset value if \code{lshape = "logoff"}.
 %  Then the linear/additive predictor is
 %  \eqn{\log(\xi+A)}{log(xi+A)} which means that
 %  \eqn{\xi > -A}{xi > -A}.
 %  For technical reasons (see \bold{Details}) it is a good idea for
-%  \code{Offset=0.5}.
+%  \code{Offset = 0.5}.
 
 %  }
   \item{percentiles}{
@@ -62,6 +63,7 @@ egev(llocation = "identity", lscale = "loge", lshape = "logoff",
   \eqn{\mu + \sigma (\Gamma(1-\xi)-1) / \xi}{mu + sigma * (gamma(1-xi)-1)/xi}
   is returned, and this is only defined if \eqn{\xi<1}{xi<1}.
 
+
   }
   \item{iscale, ishape}{
   Numeric. Initial value for \eqn{\sigma}{sigma} and
@@ -74,10 +76,11 @@ egev(llocation = "identity", lscale = "loge", lshape = "logoff",
   Also, in general, a larger value of \code{iscale} is better than a
   smaller value.
 
+
   }
 %  \item{rshape}{
 %  Numeric, of length 2.
-%  Range of \eqn{\xi}{xi} if \code{lshape="elogit"} is chosen.
+%  Range of \eqn{\xi}{xi} if \code{lshape = "elogit"} is chosen.
 %  The rationale for the default values is given below.
 
 %  }
@@ -88,24 +91,27 @@ egev(llocation = "identity", lscale = "loge", lshape = "logoff",
 % See \bold{Details} for more details.
 
 % }
-  \item{method.init}{
+  \item{imethod}{
   Initialization method. Either the value 1 or 2.
   Method 1 involves choosing the best \eqn{\xi}{xi} on a course grid with 
   endpoints \code{gshape}.
   Method 2 is similar to the method of moments.
   If both methods fail try using \code{ishape}.
 
+
   }
   \item{gshape}{
   Numeric, of length 2.
   Range of \eqn{\xi}{xi} used for a grid search for a good initial value
   for \eqn{\xi}{xi}.
-  Used only if \code{method.init} equals 1.
+  Used only if \code{imethod} equals 1.
+
 
   }
   \item{tolshape0, giveWarning}{
   Passed into \code{\link{dgev}} when computing the log-likelihood.
 
+
   }
   \item{zero}{ 
   An integer-valued vector specifying which
@@ -114,7 +120,8 @@ egev(llocation = "identity", lscale = "loge", lshape = "logoff",
   respectively to \eqn{\mu}{mu}, \eqn{\sigma}{sigma}, \eqn{\xi}{xi}.
   If \code{zero=NULL} then all linear/additive predictors are modelled as
   a linear combination of the explanatory variables.
-  For many data sets having \code{zero=3} is a good idea.
+  For many data sets having \code{zero = 3} is a good idea.
+
 
   }
 }
@@ -131,12 +138,13 @@ egev(llocation = "identity", lscale = "loge", lshape = "logoff",
   The cases 
   \eqn{\xi>0}{xi>0},
   \eqn{\xi<0}{xi<0},
-  \eqn{\xi=0}{xi=0}
+  \eqn{\xi = 0}{xi = 0}
   correspond to the Frechet, Weibull, and Gumbel types respectively.
   It can be noted that the Gumbel (or Type I) distribution accommodates
   many commonly-used distributions such as the normal, lognormal,
   logistic, gamma, exponential and Weibull.
 
+
   For the GEV distribution, the \eqn{k}th moment about the mean exists
   if \eqn{\xi < 1/k}{xi < 1/k}.
   Provided they exist, the mean and variance are given by
@@ -147,23 +155,27 @@ egev(llocation = "identity", lscale = "loge", lshape = "logoff",
   respectively,
   where \eqn{\Gamma}{Gamma} is the gamma function.
 
+
   Smith (1985) established that when \eqn{\xi > -0.5}{xi > -0.5},
   the maximum likelihood estimators are completely regular.
   To have some control over the estimated \eqn{\xi}{xi} try
-  using \code{lshape="logoff"} and the \code{eshape=list(offset=0.5)}, say,
-  or \code{lshape="elogit"} and \code{eshape=list(min=-0.5, max=0.5)}, say.
+  using \code{lshape = "logoff"} and the \code{eshape=list(offset = 0.5)}, say,
+  or \code{lshape = "elogit"} and \code{eshape=list(min = -0.5, max = 0.5)}, say.
+
 
 % and when \eqn{-1 < \xi < -0.5}{-1 < xi < -0.5} they exist but are
 % non-regular; and when \eqn{\xi < -1}{xi < -1} then the maximum
 % likelihood estimators do not exist.  In most environmental data
 % sets \eqn{\xi > -1}{xi > -1} so maximum likelihood works fine.
 
+
 }
 \section{Warning }{
   Currently, if an estimate of \eqn{\xi}{xi} is too close to zero then
   an error will occur for \code{gev()} with multivariate responses.
   In general, \code{egev()} is more reliable than \code{gev()}.
 
+
   Fitting the GEV by maximum likelihood estimation can be numerically
   fraught. If \eqn{1 + \xi (y-\mu)/ \sigma \leq 0}{1 + xi*(y-mu)/sigma <=
   0} then some crude evasive action is taken but the estimation process
@@ -174,6 +186,7 @@ egev(llocation = "identity", lscale = "loge", lshape = "logoff",
   half-stepsizing whereas \code{\link{vgam}} doesn't (half-stepsizing
   helps handle the problem of straying outside the parameter space.)
 
+
 }
 \value{
   An object of class \code{"vglmff"} (see \code{\link{vglmff-class}}).
@@ -186,19 +199,23 @@ egev(llocation = "identity", lscale = "loge", lshape = "logoff",
   Vector generalized linear and additive extreme value models.
   \emph{Extremes}, \bold{10}, 1--19.
 
+
   Tawn, J. A. (1988)
   An extreme-value theory model for dependent observations.
   \emph{Journal of Hydrology}, \bold{101}, 227--250.
 
+
   Prescott, P. and Walden, A. T. (1980)
   Maximum likelihood estimation of the parameters of the
   generalized extreme-value distribution.
   \emph{Biometrika}, \bold{67}, 723--724.
 
+
   Smith, R. L. (1985)
   Maximum likelihood estimation in a class of nonregular cases.
   \emph{Biometrika}, \bold{72}, 67--90. 
 
+
 }
 \author{ T. W. Yee }
 
@@ -208,61 +225,68 @@ egev(llocation = "identity", lscale = "loge", lshape = "logoff",
   descending order and \code{NA}s are put last.
   With a vector or one-column matrix response using
   \code{egev} will give the same result but be faster and it handles
-  the \eqn{\xi=0}{xi=0} case.
+  the \eqn{\xi = 0}{xi = 0} case.
   The function \code{gev} implements Tawn (1988) while 
   \code{egev} implements Prescott and Walden (1980).
 
+
   The shape parameter \eqn{\xi}{xi} is difficult to estimate
   accurately unless there is a lot of data.
   Convergence is slow when \eqn{\xi}{xi} is near \eqn{-0.5}.
   Given many explanatory variables, it is often a good idea
-  to make sure \code{zero=3}. 
+  to make sure \code{zero = 3}. 
   The range restrictions of the parameter \eqn{\xi}{xi} are not
   enforced; thus it is possible for a violation to occur.
 
+
   Successful convergence often depends on having a reasonably good initial
   value for \eqn{\xi}{xi}. If failure occurs try various values for the
   argument \code{ishape}, and if there are covariates, 
-  having \code{zero=3} is advised.
+  having \code{zero = 3} is advised.
+
 
 }
 
 \seealso{ 
-%\code{\link{egev}},
-%\code{\link{ogev}},
-\code{\link{rgev}},
-\code{\link{gumbel}},
-\code{\link{egumbel}},
-\code{\link{guplot}},
-\code{\link{rlplot.egev}},
-\code{\link{gpd}},
-\code{\link{elogit}},
-\code{\link{oxtemp}},
-\code{\link{venice}}.
+  %\code{\link{egev}},
+  %\code{\link{ogev}},
+  \code{\link{rgev}},
+  \code{\link{gumbel}},
+  \code{\link{egumbel}},
+  \code{\link{guplot}},
+  \code{\link{rlplot.egev}},
+  \code{\link{gpd}},
+  \code{\link{frechet2}},
+  \code{\link{elogit}},
+  \code{\link{oxtemp}},
+  \code{\link{venice}}.
+
+
 }
 
 \examples{
 # Multivariate example
-fit1 = vgam(cbind(r1,r2) ~ s(year, df=3), gev(zero=2:3), venice, trace=TRUE)
-coef(fit1, matrix=TRUE)
+fit1 = vgam(cbind(r1, r2) ~ s(year, df = 3), gev(zero = 2:3),
+            venice, trace = TRUE)
+coef(fit1, matrix = TRUE)
 head(fitted(fit1))
 \dontrun{
-par(mfrow=c(1,2), las=1)
-plot(fit1, se=TRUE, lcol="blue", scol="forestgreen",
-     main="Fitted mu(year) function (centered)", cex.main=0.8)
-with(venice, matplot(year, y[,1:2], ylab="Sea level (cm)", col=1:2,
-     main="Highest 2 annual sea levels", cex.main=0.8))
-with(venice, lines(year, fitted(fit1)[,1], lty="dashed", col="blue"))
-legend("topleft", lty="dashed", col="blue", "Fitted 95 percentile") }
+par(mfrow=c(1,2), las = 1)
+plot(fit1, se = TRUE, lcol = "blue", scol = "forestgreen",
+     main = "Fitted mu(year) function (centered)", cex.main = 0.8)
+with(venice, matplot(year, y[,1:2], ylab = "Sea level (cm)", col = 1:2,
+     main = "Highest 2 annual sea levels", cex.main = 0.8))
+with(venice, lines(year, fitted(fit1)[,1], lty = "dashed", col = "blue"))
+legend("topleft", lty = "dashed", col = "blue", "Fitted 95 percentile") }
 
 
 # Univariate example
-(fit = vglm(maxtemp ~ 1, egev, oxtemp, trace=TRUE))
+(fit = vglm(maxtemp ~ 1, egev, oxtemp, trace = TRUE))
 head(fitted(fit))
-coef(fit, mat=TRUE)
+coef(fit, matrix = TRUE)
 Coef(fit)
 vcov(fit)
-vcov(fit, untransform=TRUE)
+vcov(fit, untransform = TRUE)
 sqrt(diag(vcov(fit)))   # Approximate standard errors
 \dontrun{ rlplot(fit) }
 }
diff --git a/man/gevUC.Rd b/man/gevUC.Rd
index 33498d2..7cfef1c 100644
--- a/man/gevUC.Rd
+++ b/man/gevUC.Rd
@@ -13,11 +13,11 @@
   shape parameter \code{shape}.
 }
 \usage{
-dgev(x, location=0, scale=1, shape=0, log=FALSE, tolshape0 =
+dgev(x, location = 0, scale = 1, shape = 0, log = FALSE, tolshape0 =
      sqrt(.Machine$double.eps), oobounds.log = -Inf, giveWarning = FALSE)
-pgev(q, location=0, scale=1, shape=0)
-qgev(p, location=0, scale=1, shape=0)
-rgev(n, location=0, scale=1, shape=0)
+pgev(q, location = 0, scale = 1, shape = 0)
+qgev(p, location = 0, scale = 1, shape = 0)
+rgev(n, location = 0, scale = 1, shape = 0)
 }
 \arguments{
   \item{x, q}{vector of quantiles.}
@@ -30,7 +30,7 @@ rgev(n, location=0, scale=1, shape=0)
   \item{shape}{the shape parameter \eqn{\xi}{xi}.}
   \item{log}{
   Logical.
-  If \code{log=TRUE} then the logarithm of the density is returned.
+  If \code{log = TRUE} then the logarithm of the density is returned.
 
   }
   \item{tolshape0}{
@@ -61,11 +61,15 @@ rgev(n, location=0, scale=1, shape=0)
   \code{pgev} gives the distribution function,
   \code{qgev} gives the quantile function, and
   \code{rgev} generates random deviates.
+
+
 }
 \references{
 Coles, S. (2001)
 \emph{An Introduction to Statistical Modeling of Extreme Values}.
 London: Springer-Verlag.
+
+
 }
 \author{ T. W. Yee }
 \details{
@@ -74,36 +78,41 @@ London: Springer-Verlag.
   for formulae and other details.
   Apart from \code{n}, all the above arguments may be vectors and
   are recyled to the appropriate length if necessary.
+
+
 }
 \note{
-  The default value of \eqn{\xi=0}{xi=0} means the default distribution
+  The default value of \eqn{\xi = 0}{xi = 0} means the default distribution
   is the Gumbel.
 
+
   Currently, these functions have different argument names compared with
   those in the \pkg{evd} package.
 
+
 }
 \seealso{
   \code{\link{gev}},
   \code{\link{egev}},
   \code{\link{vglm.control}}.
 
+
 }
 \examples{
 \dontrun{
-x = seq(-3, 3, by=0.01)
+x = seq(-3, 3, by = 0.01)
 loc = 0; sigma = 1; xi = -0.4
-plot(x, dgev(x, loc, sigma, xi), type="l", col="blue", ylim=c(0,1),
-     main="Blue is density, red is cumulative distribution function",
-     sub="Purple are 5,10,...,95 percentiles", ylab="", las=1)
-abline(h=0, col="blue", lty=2)
-lines(qgev(seq(0.05,0.95,by=0.05), loc, sigma, xi), 
-      dgev(qgev(seq(0.05,0.95,by=0.05), loc, sigma, xi), loc, sigma, xi),
-      col="purple", lty=3, type="h")
-lines(x, pgev(x, loc, sigma, xi), type="l", col="red")
-abline(h=0, lty=2)
-
-pgev(qgev(seq(0.05,0.95,by=0.05), loc, sigma, xi), loc, sigma, xi)
+plot(x, dgev(x, loc, sigma, xi), type = "l", col = "blue", ylim = c(0,1),
+     main = "Blue is density, red is cumulative distribution function",
+     sub = "Purple are 5,10,...,95 percentiles", ylab = "", las = 1)
+abline(h = 0, col = "blue", lty = 2)
+lines(qgev(seq(0.05, 0.95, by = 0.05), loc, sigma, xi), 
+      dgev(qgev(seq(0.05, 0.95, by = 0.05), loc, sigma, xi), loc, sigma, xi),
+      col = "purple", lty = 3, type = "h")
+lines(x, pgev(x, loc, sigma, xi), type = "l", col = "red")
+abline(h = 0, lty = 2)
+
+pgev(qgev(seq(0.05, 0.95, by = 0.05), loc, sigma, xi), loc, sigma, xi)
 }
 }
 \keyword{distribution}
diff --git a/man/gpd.Rd b/man/gpd.Rd
index 7887134..f491292 100644
--- a/man/gpd.Rd
+++ b/man/gpd.Rd
@@ -12,7 +12,7 @@ gpd(threshold = 0, lscale = "loge", lshape = "logoff", escale = list(),
     eshape = if (lshape == "logoff") list(offset = 0.5) else
              if (lshape == "elogit") list(min = -0.5, max = 0.5) else NULL,
     percentiles = c(90, 95), iscale = NULL, ishape = NULL,
-    tolshape0 = 0.001, giveWarning = TRUE, method.init = 1, zero = 2)
+    tolshape0 = 0.001, giveWarning = TRUE, imethod = 1, zero = 2)
 }
 %- maybe also 'usage' for other objects documented here.
 \arguments{
@@ -43,18 +43,18 @@ gpd(threshold = 0, lscale = "loge", lshape = "logoff", escale = list(),
   called \eqn{A} below; and then the second linear/additive predictor is
   \eqn{\log(\xi+A)}{log(xi+A)} which means that
   \eqn{\xi > -A}{xi > -A}.
-  The working weight matrices are positive definite if \eqn{A=0.5}.
+  The working weight matrices are positive definite if \eqn{A = 0.5}.
 
   }
 
 % \item{Offset}{
 % Numeric, of length 1.
 % Called \eqn{A} below.
-% Offset value if \code{lshape="logoff"}.
+% Offset value if \code{lshape = "logoff"}.
 % Then the second linear/additive predictor is
 % \eqn{\log(\xi+A)}{log(xi+A)} which means that
 % \eqn{\xi > -A}{xi > -A}.
-% The working weight matrices are positive definite if \code{Offset=0.5}.
+% The working weight matrices are positive definite if \code{Offset = 0.5}.
 
 % }
   \item{percentiles}{
@@ -69,7 +69,7 @@ gpd(threshold = 0, lscale = "loge", lshape = "logoff", escale = list(),
   \item{iscale, ishape}{
   Numeric. Optional initial values for \eqn{\sigma}{sigma}
   and \eqn{\xi}{xi}.
-  The default is to use \code{method.init} and compute a value internally for
+  The default is to use \code{imethod} and compute a value internally for
   each parameter.
   Values of \code{ishape} should be between \eqn{-0.5} and \eqn{1}.
   Values of \code{iscale} should be positive.
@@ -77,7 +77,7 @@ gpd(threshold = 0, lscale = "loge", lshape = "logoff", escale = list(),
   }
 % \item{rshape}{ 
 % Numeric, of length 2.
-% Range of \eqn{\xi}{xi} if \code{lshape="elogit"} is chosen.
+% Range of \eqn{\xi}{xi} if \code{lshape = "elogit"} is chosen.
 % The default values ensures the algorithm works (\eqn{\xi > -0.5}{xi > -0.5})
 % and the variance exists (\eqn{\xi < 0.5}{xi < 0.5}).
 
@@ -95,7 +95,7 @@ gpd(threshold = 0, lscale = "loge", lshape = "logoff", escale = list(),
 % derivatives etc. will be used.
 
 % }
-  \item{method.init}{
+  \item{imethod}{
    Method of initialization, either 1 or 2. The first is the method of
    moments, and the second is a variant of this.  If neither work, try
    assigning values to arguments \code{ishape} and/or \code{iscale}.
@@ -110,7 +110,7 @@ gpd(threshold = 0, lscale = "loge", lshape = "logoff", escale = list(),
   to be modelled through
   a linear combination of the explanatory variables because the
   shape parameter is probably best left as an intercept only:
-  \code{zero=2}.
+  \code{zero = 2}.
   Setting \code{zero=NULL} means both parameters are modelled with
   explanatory variables.
 
@@ -222,12 +222,12 @@ gpd(threshold = 0, lscale = "loge", lshape = "logoff", escale = list(),
 }
 
 \examples{
-# Simulated data from an exponential distribution (xi=0)
+# Simulated data from an exponential distribution (xi = 0)
 threshold = 0.5
-gdata = data.frame(y = threshold + rexp(n=3000, rate=2))
-fit = vglm(y ~ 1, gpd(threshold=threshold), gdata, trace=TRUE)
+gdata = data.frame(y = threshold + rexp(n = 3000, rate = 2))
+fit = vglm(y ~ 1, gpd(threshold = threshold), gdata, trace = TRUE)
 head(fitted(fit))
-coef(fit, matrix=TRUE)   # xi should be close to 0
+coef(fit, matrix = TRUE)   # xi should be close to 0
 Coef(fit)
 summary(fit)
 
@@ -241,27 +241,29 @@ ii = fit at y < fitted(fit)[1,"90\%"]
 ii = fit at y < fitted(fit)[1,"95\%"]
 100*table(ii)/sum(table(ii))   # Should be 95%
 
-\dontrun{
-plot(fit at y, col="blue", las=1, main="Fitted 90\% and 95\% quantiles")
-matlines(1:length(fit at y), fitted(fit), lty=2:3, lwd=2) }
+\dontrun{ plot(fit at y, col = "blue", las = 1,
+               main = "Fitted 90\% and 95\% quantiles")
+matlines(1:length(fit at y), fitted(fit), lty = 2:3, lwd = 2) }
 
 
 # Another example
 threshold = 0
-gdata = data.frame(x = runif(nn <- 2000))
-xi = exp(-0.8)-0.5
-gdata = transform(gdata, y = rgpd(nn, scale=exp(1+0.1*x), shape=xi))
-fit = vglm(y ~ x, gpd(threshold), gdata, trace=TRUE)
-coef(fit, matrix=TRUE)
+gdata = data.frame(x2 = runif(nn <- 2000))
+xi = exp(-0.8) - 0.5
+gdata = transform(gdata, y = rgpd(nn, scale = exp(1+0.1*x2), shape = xi))
+fit = vglm(y ~ x2, gpd(threshold), gdata, trace = TRUE)
+coef(fit, matrix = TRUE)
 
 
 \dontrun{ # Nonparametric fits
-gdata = transform(gdata, yy = y + rnorm(nn, sd=0.1))
-fit1 = vgam(yy ~ s(x), gpd(threshold), gdata, trace=TRUE) # Not so recommended
-par(mfrow=c(2,1))
-plotvgam(fit1, se=TRUE, scol="blue")
-fit2 = vglm(yy ~ bs(x), gpd(threshold), gdata, trace=TRUE) # More recommended
-plotvgam(fit2, se=TRUE, scol="blue") }
+gdata = transform(gdata, yy = y + rnorm(nn, sd = 0.1))
+# Not so recommended:
+fit1 = vgam(yy ~ s(x2), gpd(threshold), gdata, trace = TRUE)
+par(mfrow = c(2,1))
+plotvgam(fit1, se = TRUE, scol = "blue")
+# More recommended:
+fit2 = vglm(yy ~ bs(x2), gpd(threshold), gdata, trace = TRUE)
+plotvgam(fit2, se = TRUE, scol = "blue") }
 }
 \keyword{models}
 \keyword{regression}
diff --git a/man/gpdUC.Rd b/man/gpdUC.Rd
index 9a16f71..eb6f6a1 100644
--- a/man/gpdUC.Rd
+++ b/man/gpdUC.Rd
@@ -11,14 +11,15 @@
   location parameter \code{location},
   scale parameter \code{scale} and
   shape parameter \code{shape}.
+
 }
 \usage{
-dgpd(x, location=0, scale=1, shape=0, log=FALSE,
+dgpd(x, location = 0, scale = 1, shape = 0, log = FALSE,
      tolshape0 = sqrt(.Machine$double.eps),
-     oobounds.log = -Inf, giveWarning=FALSE)
-pgpd(q, location=0, scale=1, shape=0)
-qgpd(p, location=0, scale=1, shape=0)
-rgpd(n, location=0, scale=1, shape=0)
+     oobounds.log = -Inf, giveWarning = FALSE)
+pgpd(q, location = 0, scale = 1, shape = 0)
+qgpd(p, location = 0, scale = 1, shape = 0)
+rgpd(n, location = 0, scale = 1, shape = 0)
 }
 \arguments{
   \item{x, q}{vector of quantiles.}
@@ -30,7 +31,8 @@ rgpd(n, location=0, scale=1, shape=0)
   \item{shape}{the shape parameter \eqn{\xi}{xi}.}
   \item{log}{
   Logical.
-  If \code{log=TRUE} then the logarithm of the density is returned.
+  If \code{log = TRUE} then the logarithm of the density is returned.
+
 
   }
   \item{tolshape0}{
@@ -40,6 +42,7 @@ rgpd(n, location=0, scale=1, shape=0)
   this value then it will be assumed zero and an exponential distribution will
   be used.
 
+
   }
   \item{oobounds.log, giveWarning}{
   Numeric and logical.
@@ -56,6 +59,7 @@ rgpd(n, location=0, scale=1, shape=0)
   for half-stepping. Both arguments are in support of this.
   This argument and others match those of \code{\link{gpd}}.
 
+
   }
 
 }
@@ -69,6 +73,8 @@ rgpd(n, location=0, scale=1, shape=0)
 Coles, S. (2001)
 \emph{An Introduction to Statistical Modeling of Extreme Values}.
 London: Springer-Verlag.
+
+
 }
 \author{ T. W. Yee }
 \details{
@@ -77,31 +83,36 @@ London: Springer-Verlag.
   for formulae and other details.
   Apart from \code{n}, all the above arguments may be vectors and
   are recyled to the appropriate length if necessary.
+
+
 }
 \note{
   The default values of all three parameters, especially
-  \eqn{\xi=0}{xi=0}, means the default distribution is the exponential.
+  \eqn{\xi = 0}{xi = 0}, means the default distribution is the exponential.
+
 
   Currently, these functions have different argument names compared
   with those in the \pkg{evd} package.
+
+
 }
 \seealso{
   \code{\link{gpd}}.
 
+
 }
 \examples{
-\dontrun{
-x = seq(-0.2, 3, by=0.01)
+\dontrun{ x = seq(-0.2, 3, by = 0.01)
 loc = 0; sigma = 1; xi = -0.4
-plot(x, dgpd(x, loc, sigma, xi), type="l", col="blue", ylim=c(0,1),
-     main="Blue is density, red is cumulative distribution function",
-     sub="Purple are 5,10,...,95 percentiles", ylab="", las=1)
-abline(h=0, col="blue", lty=2)
-lines(qgpd(seq(0.05,0.95,by=0.05), loc, sigma, xi), 
-      dgpd(qgpd(seq(0.05,0.95,by=0.05), loc, sigma, xi), loc, sigma, xi),
-      col="purple", lty=3, type="h")
-lines(x, pgpd(x, loc, sigma, xi), type="l", col="red")
-abline(h=0, lty=2)
+plot(x, dgpd(x, loc, sigma, xi), type = "l", col = "blue", ylim = c(0, 1),
+     main = "Blue is density, red is cumulative distribution function",
+     sub = "Purple are 5,10,...,95 percentiles", ylab = "", las = 1)
+abline(h = 0, col = "blue", lty = 2)
+lines(qgpd(seq(0.05, 0.95, by = 0.05), loc, sigma, xi), 
+      dgpd(qgpd(seq(0.05, 0.95, by = 0.05), loc, sigma, xi), loc, sigma, xi),
+      col = "purple", lty = 3, type = "h")
+lines(x, pgpd(x, loc, sigma, xi), type = "l", col = "red")
+abline(h = 0, lty = 2)
 }
 }
 \keyword{distribution}
diff --git a/man/grc.Rd b/man/grc.Rd
index a8789b7..802d7fe 100644
--- a/man/grc.Rd
+++ b/man/grc.Rd
@@ -11,7 +11,7 @@
 \usage{
 grc(y, Rank = 1, Index.corner = 2:(1 + Rank),
     szero = 1, summary.arg = FALSE, h.step = 1e-04, ...)
-rcam(y, Rank = 0, family = poissonff, Musual = NULL,
+rcam(y, family = poissonff, Rank = 0, Musual = NULL,
      Index.corner = if (!Rank) NULL else 1 + Musual * (1:Rank),
      rprefix = "Row.", cprefix = "Col.",
      szero = if (!Rank) NULL else {
@@ -27,16 +27,7 @@ rcam(y, Rank = 0, family = poissonff, Musual = NULL,
   For \code{grc} a matrix of counts.
   For \code{rcam} a general matrix response depending on \code{family}.
   Output from \code{table()} is acceptable; it is converted into a matrix.
-  Note that \code{y} must be at least 3 by 3. 
-
-  }
-  \item{Rank}{
-  An integer from the set
-  \{0,\ldots,\code{min(nrow(y), ncol(y))}\}.
-  This is the dimension of the fit in terms of the interaction.
-  For \code{grc()} this argument must be positive.
-  A value of 0 means no interactions (i.e., main effects only);
-  each row and column is represented by an indicator variable.
+  Note that \code{y} should be at least 3 by 3 in dimension.
 
   }
   \item{family}{
@@ -51,12 +42,23 @@ rcam(y, Rank = 0, family = poissonff, Musual = NULL,
   \code{\link{zipoisson}} because of the ordering of the
   linear/additive predictors.
   If the \pkg{VGAM} family function does not have an \code{infos}
-  slot then \code{Musual} needs to be inputted.
+  slot then \code{Musual} needs to be inputted (the number of
+  linear predictors for an ordinary (usually univariate) response,
+  aka \eqn{M}).
   The \pkg{VGAM} family function also needs to be able to
   handle multiple responses; and not all of them can do this.
 
 
   }
+  \item{Rank}{
+  An integer from the set
+  \{0,\ldots,\code{min(nrow(y), ncol(y))}\}.
+  This is the dimension of the fit in terms of the interaction.
+  For \code{grc()} this argument must be positive.
+  A value of 0 means no interactions (i.e., main effects only);
+  each row and column is represented by an indicator variable.
+
+  }
   \item{Index.corner}{
   A vector of \code{Rank} integers.
   These are used to store the \code{Rank} by \code{Rank}
@@ -126,8 +128,6 @@ These are called \code{Row.} and \code{Col.} (by default) followed
 by the row or column number.
 
 
-
-
 The function \code{rcam()} is more general than \code{grc()}.
 Its default is a no-interaction model of \code{grc()}, i.e.,
 rank-0 and a Poisson distribution. This means that each
@@ -143,9 +143,9 @@ ANOVA with and without interactions,
 Others include
 \code{\link{zipoissonff}},
 \code{\link{negbinomial}}.
-Hopefully one day \emph{all} \pkg{VGAM} family functions will work when
-assigned to the \code{family} argument
-although the result may not have meaning.
+Hopefully one day \emph{all} \pkg{VGAM} family functions will
+work when assigned to the \code{family} argument, although the
+result may not have meaning.
 
 
 }
@@ -153,8 +153,12 @@ although the result may not have meaning.
   An object of class \code{"grc"}, which currently is the same as
   an \code{"rrvglm"} object.
   Currently,
-  a rank-0 \code{rcam()} object is of class \code{\link{vglm-class}},
-  but it may become of class \code{"rcam"} one day.
+  a rank-0 \code{rcam()} object is of class \code{\link{rcam0-class}},
+  else of class \code{"rcam"} (this may change in the future).
+
+% Currently,
+% a rank-0 \code{rcam()} object is of class \code{\link{vglm-class}},
+% but it may become of class \code{"rcam"} one day.
 
 
 }
@@ -180,7 +184,7 @@ indicator variables.
  
 }
 \author{
-Thomas W. Yee, with some
+Thomas W. Yee, with
 assistance from Alfian F. Hadi.
 
 
@@ -212,7 +216,7 @@ assistance from Alfian F. Hadi.
 
 \section{Warning}{
   The function \code{rcam()} is experimental at this stage and
-  may have some bugs.
+  may have bugs.
   Quite a lot of expertise is needed when fitting and in its
   interpretion thereof. For example, the constraint
   matrices applies the reduced-rank regression to the first linear
@@ -242,8 +246,11 @@ assistance from Alfian F. Hadi.
   \code{\link{rrvglm.control}},
   \code{\link{rrvglm-class}},
   \code{summary.grc},
+  \code{\link{moffset}},
   \code{\link{Rcam}},
   \code{\link{plotrcam0}},
+  \code{\link{alcoff}},
+  \code{\link{crashi}},
   \code{\link{auuc}},
   \code{\link{olympic}},
   \code{\link{poissonff}}.
@@ -273,11 +280,17 @@ Coef(oly1)
 # Roughly median polish
 rcam0 <- rcam(auuc, fam = alaplace2(tau = 0.5, intparloc = TRUE), trace = TRUE)
 round(fitted(rcam0), dig = 0)
+round(100 * (fitted(rcam0) - auuc) / auuc, dig = 0)   # Discrepancy
 rcam0 at y
 round(coef(rcam0, matrix = TRUE), dig = 2)
 print(Coef(rcam0, matrix = TRUE), dig = 3)
 # constraints(rcam0)
 names(constraints(rcam0))
+
+# Compare with medpolish():
+(med.a <- medpolish(auuc))
+fv <- med.a$overall + outer(med.a$row, med.a$col, "+")
+round(100 * (fitted(rcam0) - fv) / fv)   # Hopefully should be all 0s
 }
 \keyword{models}
 \keyword{regression}
diff --git a/man/gumbel.Rd b/man/gumbel.Rd
index d803997..c0052c7 100644
--- a/man/gumbel.Rd
+++ b/man/gumbel.Rd
@@ -46,19 +46,19 @@ egumbel(llocation = "identity", lscale = "loge", elocation = list(),
   Numeric vector of percentiles used
   for the fitted values. Values should be between 0 and 100.
   This argument uses the argument \code{R} if assigned.
-  If \code{percentiles=NULL} then the mean will be returned as the
+  If \code{percentiles = NULL} then the mean will be returned as the
   fitted values.
 
-% This argument is ignored if \code{mean=TRUE}.
+% This argument is ignored if \code{mean = TRUE}.
 
   }
   \item{mpv}{ 
-  Logical. If \code{mpv=TRUE} then the \emph{median predicted value} (MPV)
+  Logical. If \code{mpv = TRUE} then the \emph{median predicted value} (MPV)
   is computed and returned as the (last) column of the fitted values.
-  This argument is ignored if \code{percentiles=NULL}.
+  This argument is ignored if \code{percentiles = NULL}.
   See \bold{Details} for more details. 
 
-% This argument is ignored if \code{mean=TRUE}.
+% This argument is ignored if \code{mean = TRUE}.
 
   }
 % \item{mean}{ 
@@ -79,13 +79,14 @@ egumbel(llocation = "identity", lscale = "loge", elocation = list(),
 }
 \details{
   The Gumbel distribution is a generalized extreme value (GEV) 
-  distribution with \emph{shape} parameter \eqn{\xi=0}{xi=0}.
+  distribution with \emph{shape} parameter \eqn{\xi = 0}{xi = 0}.
   Consequently it is more easily estimated than the GEV.
   See \code{\link{gev}} for more details.
 
+
   The quantity \eqn{R} is the maximum number of observations possible,
   for example, in the Venice data below, the top 10 daily values
-  are recorded for each year, therefore  \eqn{R=365} because there are
+  are recorded for each year, therefore  \eqn{R = 365} because there are
   about 365 days per year.
   The MPV is the value of the response such that the probability
   of obtaining a value greater than the MPV is 0.5 out of
@@ -93,9 +94,10 @@ egumbel(llocation = "identity", lscale = "loge", elocation = list(),
   For  the Venice data, the MPV is the sea level such that there
   is an even chance that the highest level for a particular year
   exceeds the MPV.
-  When \code{mpv=TRUE}, the column labelled  \code{"MPV"} contains
+  When \code{mpv = TRUE}, the column labelled  \code{"MPV"} contains
   the MPVs when \code{fitted()} is applied to the fitted object.
 
+
   The formula for the mean of a response \eqn{Y} is
   \eqn{\mu+\sigma \times Euler} where \eqn{Euler} is a constant
   that has value approximately equal to 0.5772.
@@ -107,22 +109,27 @@ egumbel(llocation = "identity", lscale = "loge", elocation = list(),
   \eqn{\mu-\sigma \times \log[R(1-P/100)]}{location-
     scale*log[-log(R*(1-P/100))]}.
 
+
 }
 \value{
   An object of class \code{"vglmff"} (see \code{\link{vglmff-class}}).
   The object is used by modelling functions such as \code{\link{vglm}},
   and \code{\link{vgam}}.
+
+
 }
 \references{
   Yee, T. W. and Stephenson, A. G. (2007)
   Vector generalized linear and additive extreme value models.
   \emph{Extremes}, \bold{10}, 1--19.
 
+
   Smith, R. L. (1986)
   Extreme value theory based on the \emph{r} largest annual events.
   \emph{Journal of Hydrology},
   \bold{86}, 27--43.
 
+
   Rosen, O. and Cohen, A. (1996)
   Extreme percentile regression.
   In: Haerdle, W. and Schimek, M. G. (eds.), 
@@ -131,10 +138,12 @@ egumbel(llocation = "identity", lscale = "loge", elocation = list(),
   Semmering, Austria, 27--28 August 1994}, pp.200--214,
   Heidelberg: Physica-Verlag.
 
+
   Coles, S. (2001)
   \emph{An Introduction to Statistical Modeling of Extreme Values}.
   London: Springer-Verlag.
 
+
 }
 \author{ T. W. Yee }
 
@@ -152,11 +161,12 @@ egumbel(llocation = "identity", lscale = "loge", elocation = list(),
   \code{egumbel()} only handles a univariate response, and is
   preferred to \code{gumbel()} because it is faster.
 
+
   \code{gumbel()} can handle a multivariate response, i.e., a
   matrix with more than one column. Each row of the matrix is
   sorted into descending order.
   Missing values in the response are allowed but require
-  \code{na.action=na.pass}. The response matrix needs to be
+  \code{na.action = na.pass}. The response matrix needs to be
   padded with any missing values. With a multivariate response
   one has a matrix \code{y}, say, where
   \code{y[,2]} contains the second order statistics etc. 
@@ -177,61 +187,62 @@ egumbel(llocation = "identity", lscale = "loge", elocation = list(),
   \code{\link{egev}},
 %\code{\link{ogev}},
   \code{\link{venice}}.
+
+
 }
 
 \examples{
 # Example 1: Simulated data
-gdata = data.frame(y = rgumbel(n=1000, loc = 100, scale=exp(1)))
-fit = vglm(y ~ 1, egumbel(perc=NULL), gdata, trace=TRUE)
-coef(fit, matrix=TRUE)
+gdata = data.frame(y = rgumbel(n = 1000, loc = 100, scale = exp(1)))
+fit = vglm(y ~ 1, egumbel(perc = NULL), gdata, trace = TRUE)
+coef(fit, matrix = TRUE)
 Coef(fit)
 head(fitted(fit))
 with(gdata, mean(y))
 
-
 # Example 2: Venice data
-(fit = vglm(cbind(r1,r2,r3,r4,r5) ~ year, data=venice,
-            gumbel(R=365, mpv=TRUE), trace=TRUE))
+(fit = vglm(cbind(r1,r2,r3,r4,r5) ~ year, data = venice,
+            gumbel(R = 365, mpv = TRUE), trace = TRUE))
 head(fitted(fit))
-coef(fit, mat=TRUE)
+coef(fit, mat = TRUE)
 vcov(summary(fit))  
 sqrt(diag(vcov(summary(fit))))   # Standard errors
 
 
 # Example 3: Try a nonparametric fit ---------------------
 # Use the entire data set, including missing values
-y = as.matrix(venice[,paste("r",1:10,sep="")])
-fit1 = vgam(y ~ s(year, df=3), gumbel(R=365, mpv=TRUE),
-            data=venice, trace=TRUE, na.action=na.pass)
+y = as.matrix(venice[,paste("r",1:10,sep = "")])
+fit1 = vgam(y ~ s(year, df = 3), gumbel(R = 365, mpv = TRUE),
+            data = venice, trace = TRUE, na.action = na.pass)
 fit1 at y[4:5,]  # NAs used to pad the matrix
 
 \dontrun{
 # Plot the component functions
-par(mfrow=c(2,1), mar=c(5,4,.2,1)+0.1, xpd=TRUE)
-plot(fit1, se=TRUE, lcol="blue", scol="green", lty=1,
-     lwd=2, slwd=2, slty="dashed")
+par(mfrow = c(2,1), mar = c(5,4,.2,1)+0.1, xpd = TRUE)
+plot(fit1, se = TRUE, lcol = "blue", scol = "green", lty = 1,
+     lwd = 2, slwd = 2, slty = "dashed")
 
 # Quantile plot --- plots all the fitted values
-par(mfrow=c(1,1), bty="l", mar=c(4,4,.2,3)+0.1, xpd=TRUE, las=1)
-qtplot(fit1, mpv=TRUE, lcol=c(1,2,5), tcol=c(1,2,5), lwd=2,
-       pcol="blue", tadj=0.1, ylab="Sea level (cm)")
+par(mfrow = c(1,1), bty = "l", mar = c(4,4,.2,3)+0.1, xpd = TRUE, las = 1)
+qtplot(fit1, mpv = TRUE, lcol = c(1,2,5), tcol = c(1,2,5), lwd = 2,
+       pcol = "blue", tadj = 0.1, ylab = "Sea level (cm)")
 
 # Plot the 99 percentile only
-par(mfrow=c(1,1), mar=c(3,4,.2,1)+0.1, xpd=TRUE)
+par(mfrow = c(1,1), mar = c(3,4,.2,1)+0.1, xpd = TRUE)
 year = venice[["year"]]
-matplot(year, y, ylab="Sea level (cm)", type="n")
-matpoints(year, y, pch="*", col="blue")
-lines(year, fitted(fit1)[,"99\%"], lwd=2, col="red")
+matplot(year, y, ylab = "Sea level (cm)", type = "n")
+matpoints(year, y, pch = "*", col = "blue")
+lines(year, fitted(fit1)[,"99\%"], lwd = 2, col = "red")
 
 # Check the 99 percentiles with a smoothing spline.
 # Nb. (1-0.99) * 365 = 3.65 is approx. 4, meaning the 4th order 
 # statistic is approximately the 99 percentile.
-par(mfrow=c(1,1), mar=c(3,4,2,1)+0.1, xpd=TRUE, lwd=2)
-plot(year, y[,4], ylab="Sea level (cm)", type="n",
-     main="Red is 99 percentile, Green is a smoothing spline")
-points(year, y[,4], pch="4", col="blue")
-lines(year, fitted(fit1)[,"99\%"], lty=1, col="red")
-lines(smooth.spline(year, y[,4], df=4), col="darkgreen", lty=2)
+par(mfrow = c(1,1), mar = c(3,4,2,1)+0.1, xpd = TRUE, lwd = 2)
+plot(year, y[,4], ylab = "Sea level (cm)", type = "n",
+     main = "Red is 99 percentile, Green is a smoothing spline")
+points(year, y[,4], pch = "4", col = "blue")
+lines(year, fitted(fit1)[,"99\%"], lty = 1, col = "red")
+lines(smooth.spline(year, y[,4], df = 4), col = "darkgreen", lty = 2)
 }
 }
 \keyword{models}
diff --git a/man/gumbelIbiv.Rd b/man/gumbelIbiv.Rd
index 25899e2..5f4399e 100644
--- a/man/gumbelIbiv.Rd
+++ b/man/gumbelIbiv.Rd
@@ -8,7 +8,7 @@
 
 }
 \usage{
-gumbelIbiv(lapar="identity", earg=list(), iapar=NULL, method.init=1)
+gumbelIbiv(lapar="identity", earg=list(), iapar=NULL, imethod=1)
 }
 %- maybe also 'usage' for other objects documented here.
 \arguments{
@@ -27,10 +27,10 @@ gumbelIbiv(lapar="identity", earg=list(), iapar=NULL, method.init=1)
   Numeric. Optional initial value for \eqn{\alpha}{alpha}.
   By default, an initial value is chosen internally.
   If a convergence failure occurs try assigning a different value.
-  Assigning a value will override the argument \code{method.init}.
+  Assigning a value will override the argument \code{imethod}.
 
   }
-  \item{method.init}{
+  \item{imethod}{
   An integer with value \code{1} or \code{2} which
   specifies the initialization method. If failure to converge occurs
   try the other value, or else specify a value for \code{ia}.
diff --git a/man/gumbelUC.Rd b/man/gumbelUC.Rd
index 5371b11..f2ca2e1 100644
--- a/man/gumbelUC.Rd
+++ b/man/gumbelUC.Rd
@@ -12,10 +12,10 @@
   scale parameter \code{scale}.
 }
 \usage{
-dgumbel(x, location=0, scale=1, log=FALSE)
-pgumbel(q, location=0, scale=1)
-qgumbel(p, location=0, scale=1)
-rgumbel(n, location=0, scale=1)
+dgumbel(x, location = 0, scale = 1, log = FALSE)
+pgumbel(q, location = 0, scale = 1)
+qgumbel(p, location = 0, scale = 1)
+rgumbel(n, location = 0, scale = 1)
 }
 %- maybe also 'usage' for other objects documented here.
 \arguments{
@@ -88,9 +88,8 @@ rgumbel(n, location=0, scale=1)
   \code{\link{gev}}.
 }
 \examples{
-mu = 1
-sigma = 2
-y = rgumbel(n=100, loc=mu, scale=sigma)
+mu = 1; sigma = 2
+y = rgumbel(n = 100, loc=mu, scale=sigma)
 mean(y)
 mu - sigma * digamma(1)  # population mean
 var(y)
@@ -98,17 +97,17 @@ sigma^2 * pi^2 / 6       # population variance
 
 
 \dontrun{
-x = seq(-2.5, 3.5, by=0.01)
+x = seq(-2.5, 3.5, by = 0.01)
 loc = 0; sigma = 1
-plot(x, dgumbel(x, loc, sigma), type="l", col="blue", ylim=c(0,1),
-     main="Blue is density, red is cumulative distribution function",
-     sub="Purple are 5,10,...,95 percentiles", ylab="", las=1)
-abline(h=0, col="blue", lty=2)
-lines(qgumbel(seq(0.05,0.95,by=0.05), loc, sigma),
-      dgumbel(qgumbel(seq(0.05,0.95,by=0.05), loc, sigma), loc, sigma),
-      col="purple", lty=3, type="h")
-lines(x, pgumbel(x, loc, sigma), type="l", col="red")
-abline(h=0, lty=2)
+plot(x, dgumbel(x, loc, sigma), type = "l", col = "blue", ylim=c(0,1),
+     main = "Blue is density, red is cumulative distribution function",
+     sub = "Purple are 5,10,...,95 percentiles", ylab = "", las = 1)
+abline(h = 0, col = "blue", lty = 2)
+lines(qgumbel(seq(0.05, 0.95, by = 0.05), loc, sigma),
+      dgumbel(qgumbel(seq(0.05, 0.95, by = 0.05), loc, sigma), loc, sigma),
+      col = "purple", lty = 3, type = "h")
+lines(x, pgumbel(x, loc, sigma), type = "l", col = "red")
+abline(h = 0, lty = 2)
 }
 }
 \keyword{distribution}
diff --git a/man/guplot.Rd b/man/guplot.Rd
index 00a2361..c236557 100644
--- a/man/guplot.Rd
+++ b/man/guplot.Rd
@@ -8,6 +8,7 @@
   Produces a Gumbel plot,
   a diagnostic plot for checking whether the data appears to be
   from a Gumbel distribution.
+
 }
 \usage{
 guplot(object, ...)
@@ -25,29 +26,35 @@ guplot.vlm(object, ...)
     plotted. }
   \item{object}{ An object that inherits class \code{"vlm"},
     usually of class \code{\link{vglm-class}} or
-    \code{\link{vgam-class}}. }
+    \code{\link{vgam-class}}.
+
+  }
   \item{\dots}{ Graphical argument passed into
     \code{\link[graphics]{plot}}. See \code{\link[graphics]{par}}
     for an exhaustive list. The arguments \code{xlim} and
-  \code{ylim} are particularly useful. }
+    \code{ylim} are particularly useful.
+
+  }
 }
 \details{
   If \eqn{Y} has a Gumbel distribution then plotting the sorted
   values \eqn{y_i} versus the \emph{reduced values} \eqn{r_i} should
   appear linear. The reduced values are given by
   \deqn{r_i = -\log(-\log(p_i)) }{%
-        r_i = -\log(-\log(p_i)) }
+        r_i = - log(- log(p_i)) }
   where \eqn{p_i} is the \eqn{i}th plotting position, taken
-  here to be \eqn{(i-0.5)/n}. Here, \eqn{n} is the number of
-  observations.
+  here to be \eqn{(i-0.5)/n}.
+  Here, \eqn{n} is the number of observations.
   Curvature upwards/downwards may indicate a Frechet/Weibull
   distribution, respectively. Outliers may also be detected
   using this plot.
 
+  
   The function \code{guplot} is generic, and
   \code{guplot.default} and \code{guplot.vlm} are some
   methods functions for Gumbel plots.
 
+  
 }
 \value{
   A list is returned invisibly with the following components.
@@ -57,21 +64,37 @@ guplot.vlm(object, ...)
 
 %% zz not sure about the reference
 \references{
-Coles, S. (2001)
-\emph{An Introduction to Statistical Modeling of Extreme Values}.
-London: Springer-Verlag.
+
+  Coles, S. (2001)
+  \emph{An Introduction to Statistical Modeling of Extreme Values}.
+  London: Springer-Verlag.
+
+
+  Gumbel, E. J. (1958)
+  \emph{Statistics of Extremes}.
+  New York, USA: Columbia University Press.
+
+  
 }
 \author{ T. W. Yee }
-\note{ The Gumbel distribution is a special case of the
+\note{
+  The Gumbel distribution is a special case of the
   GEV distribution with shape parameter equal to zero.
+
+  
 }
 \seealso{
   \code{\link{gumbel}},
   \code{\link{egumbel}},
-  \code{\link{gev}}.
+  \code{\link{gev}},
+  \code{\link{venice}}.
+
+  
 }
-\examples{\dontrun{guplot(rnorm(500), las=1) -> i
-names(i)
+\examples{\dontrun{guplot(rnorm(500), las=1) -> ii
+names(ii)
+
+guplot(with(venice, r1), col = "blue")  # Venice sea levels data
 }}
 \keyword{models}
 \keyword{regression}
diff --git a/man/huber.Rd b/man/huber.Rd
index 7224db7..59ff513 100644
--- a/man/huber.Rd
+++ b/man/huber.Rd
@@ -9,7 +9,7 @@
 }
 \usage{
 huber(llocation = "identity", lscale = "loge", elocation = list(),
-      escale = list(), k = 0.862, method.init = 1, zero = 2)
+      escale = list(), k = 0.862, imethod = 1, zero = 2)
 }
 %- maybe also 'usage' for other objects documented here.
 \arguments{
@@ -28,7 +28,7 @@ huber(llocation = "identity", lscale = "loge", elocation = list(),
   See \code{\link{rhuber}} for more information.
 
   }
-  \item{method.init, zero}{ 
+  \item{imethod, zero}{ 
   See \code{\link{CommonVGAMffArguments}} for information.
   The default value of \code{zero} means the scale parameter is
   modelled as an intercept-only.
@@ -84,7 +84,7 @@ hdata = transform(hdata, y  = rhuber(NN, mu = coef1 + coef2 * x2))
 hdata$x2[1] = 0.0 # Add an outlier
 hdata$y[1] = 10  
 
-fit.huber <- vglm(y ~ x2, huber(meth = 3), hdata, trace = TRUE)
+fit.huber <- vglm(y ~ x2, huber(imethod = 3), hdata, trace = TRUE)
 
 coef(fit.huber, matrix = TRUE)
 summary(fit.huber)
diff --git a/man/hued.Rd b/man/hued.Rd
new file mode 100644
index 0000000..80a71f3
--- /dev/null
+++ b/man/hued.Rd
@@ -0,0 +1,55 @@
+\name{hued}
+\alias{hued}
+\docType{data}
+\title{
+Harvard University Degrees Conferred by Student Ethnicity
+
+%%   ~~ data name/kind ... ~~
+}
+\description{
+  A two-way table of counts; there are 7 ethnic groups by 12
+  degrees.
+
+}
+\usage{data(hued)}
+\format{
+  The format is:
+ chr "hued"
+
+}
+\details{
+  The rownames and colnames have been edited.
+  The full names are:
+Asian/Pacific Islander,
+Black/Non-Hispanic,
+Hispanic,
+International Students,
+Native American,
+White/Non-Hispanic,
+Unknown/Other.
+The academic year was 2009--2010.
+GSAS stands for Graduate School of Arts and Sciences.
+The Other group includes students reported as Two or More Races.
+See the URL below for more technical details supporting the data.
+
+
+
+%%  ~~ If necessary, more details than the __description__ above ~~
+}
+\source{
+  \url{http://www.provost.harvard.edu/institutional_research/factbook.php}
+
+}
+\seealso{
+  \code{\link{huie}},
+  \code{\link{huse}}.
+
+}
+
+%%\references{
+%%  ~~ possibly secondary sources and usages ~~
+%%}
+\examples{
+print(hued)
+}
+\keyword{datasets}
diff --git a/man/huggins91.Rd b/man/huggins91.Rd
new file mode 100644
index 0000000..97aa7c9
--- /dev/null
+++ b/man/huggins91.Rd
@@ -0,0 +1,181 @@
+\name{huggins91}
+\alias{huggins91}
+%- Also NEED an '\alias' for EACH other topic documented here.
+\title{ Huggins (1991) Capture-recapture Model Family Function
+        (approximation only) }
+\description{
+  Fits a Huggins (1991) capture-recapture model to a matrix of 0s
+  and 1s: animals sampled on several occasions and individual
+  animals caught at least once.
+
+}
+\usage{
+huggins91(link = "logit", earg = list(), parallel = TRUE,
+          iprob = NULL, eim.not.oim = TRUE)
+}
+%- maybe also 'usage' for other objects documented here.
+\arguments{
+  \item{link, earg, parallel, iprob}{
+  See \code{\link{CommonVGAMffArguments}} for information.
+  The \code{parallel} argument should generally be left alone since
+  parallelism is assumed by Huggins (1991).
+
+  }
+  \item{eim.not.oim}{
+  Logical. If \code{TRUE} use the EIM, else the OIM.
+
+  }
+}
+\details{
+  This model operates on a response matrix of 0s and 1s.  Each of
+  at least two columns is an occasion where animals are potentially
+  captured (e.g., a field trip), and each row is an individual
+  animal.  Capture is a 1, else a 0. Each row has at least one
+  capture.  It is well-known that animals are affected by capture,
+  e.g., trap-shy or trap-happy.  This \pkg{VGAM} family function
+  attempts to allow the capture history to be modelled. This
+  involves the use of the \code{xij} argument.  Ignoring capture
+  history effects would mean \code{\link{posbinomial}} could
+  be used by aggregating over the sampling occasions.
+
+
+  Huggins (1991) suggests a model involving maximizing a
+  conditional likelihood.
+  The form of this is a numerator divided by a denominator,
+  where the true model has part of the linear/additive predictor
+  modelling capture history applying to the numerator only,
+  so that part is set to zero in the denominator.
+  The numerator of the conditional likelihood corresponds
+  to a sequence of Bernoulli trials,
+  with at least one success,
+  for each animal.
+
+
+  Unfortunately the Huggins model is too difficult to fit in this
+  package, and one can only use the \emph{same} linear/additive
+  predictor in the numerator as the denominator. Hence this
+  \pkg{VGAM} family function does \emph{not} implement the model
+  properly.
+
+
+  The number of linear/additive predictors is twice the number
+  of sampling occasions, i.e., \eqn{M = 2T}, say.
+  The first two correspond to the first sampling occasion,
+  the next two correspond to the second sampling occasion, etc.
+  Even-numbered linear/additive predictors should correspond to what
+  would happen if no capture had occurred (they belong to
+  the denominator.)
+  Odd-numbered linear/additive predictors correspond to
+  what actually happened (they belong to the numerator.)
+
+
+  The fitted value for column \eqn{t} is the \eqn{t}th
+  numerator probability divided by the denominator.
+
+
+}
+\value{
+  An object of class \code{"vglmff"} (see \code{\link{vglmff-class}}).
+  The object is used by modelling functions such as \code{\link{vglm}},
+  and \code{\link{vgam}}.
+
+
+}
+\references{
+
+Huggins, R. M. (1991)
+Some practical aspects of a conditional likelihood
+approach to capture experiments.
+\emph{Biometrics},
+\bold{47}, 725--732.
+
+
+}
+\author{ Thomas W. Yee }
+
+\note{
+  The \code{weights} argument of \code{\link{vglm}} need not be
+  assigned, and the default is just a matrix of ones.
+
+
+  This \pkg{VGAM} family function is currently more complicated
+  than it needs to be, e.g., it is possible to
+  simplify \eqn{M = T}, say.
+
+
+}
+
+\section{Warning }{
+  This \pkg{VGAM} family function is experimental and does not
+  work properly because the linear/additive predictor in the
+  numerator and denominator must be the same.
+  The parameter estimates of the Huggins (1991) model ought to
+  be similar (probably in between, in some sense) to two models:
+  Model 1 is where the capture history variable is included,
+  Model 2 is where the capture history variable is not included.
+  See the example below.
+  A third model, called Model 3, allows for 'half' the capture
+  history to be put in both numerator and denominator. This
+  might be thought of as a compromise between Models 1 and 2,
+  and may be useful as a crude approximation.
+
+
+  Under- or over-flow may occur if the data is ill-conditioned.
+
+
+}
+\seealso{ 
+    \code{\link{vglm.control}} for \code{xij},
+    \code{\link{dhuggins91}},
+    \code{\link{rhuggins91}}.
+    \code{\link{posbinomial}}.
+
+}
+
+\examples{
+set.seed(123); nTimePts = 5
+hdata = rhuggins91(n = 1000, nTimePts = nTimePts, pvars = 2)
+
+# The truth: xcoeffs are c(-2, 1, 2) and capeffect = -1
+
+# Model 1 is where capture history information is used
+model1  = vglm(cbind(y1, y2, y3, y4, y5) ~ x2 + Chistory,
+               huggins91, data = hdata, trace  = TRUE,
+               xij = list(Chistory ~ ch0 + zch0 +
+                                     ch1 + zch1 + ch2 + zch2 +
+                                     ch3 + zch3 + ch4 + zch4 - 1),
+               form2 = ~ 1 + x2 + Chistory +
+                          ch0 +  ch1 +  ch2 +  ch3 +  ch4 +
+                         zch0 + zch1 + zch2 + zch3 + zch4)
+
+coef(model1, matrix = TRUE)  # Biased!!
+summary(model1)
+head(fitted(model1))
+head(model.matrix(model1, type = "vlm"), 21)
+head(hdata)
+
+# Model 2 is where no capture history information is used
+model2  = vglm(cbind(y1, y2, y3, y4, y5) ~ x2,
+               huggins91, data = hdata, trace  = TRUE)
+coef(model2, matrix = TRUE)  # Biased!!
+summary(model2)
+
+# Model 3 is where half the capture history is used in both
+# the numerator and denominator
+set.seed(123); nTimePts = 5
+hdata2 = rhuggins91(n = 1000, nTimePts = nTimePts, pvars = 2,
+                    double.ch = TRUE)
+head(hdata2)  # 2s have replaced the 1s in hdata
+model3  = vglm(cbind(y1, y2, y3, y4, y5) ~ x2 + Chistory,
+               huggins91, data = hdata2, trace  = TRUE,
+               xij = list(Chistory ~ ch0 + zch0 +
+                                     ch1 + zch1 + ch2 + zch2 +
+                                     ch3 + zch3 + ch4 + zch4 - 1),
+               form2 = ~ 1 + x2 + Chistory +
+                          ch0 +  ch1 +  ch2 +  ch3 +  ch4 +
+                         zch0 + zch1 + zch2 + zch3 + zch4)
+coef(model3, matrix = TRUE)  # Biased!!
+}
+\keyword{models}
+\keyword{regression}
+
diff --git a/man/huggins91UC.Rd b/man/huggins91UC.Rd
new file mode 100644
index 0000000..2281d9b
--- /dev/null
+++ b/man/huggins91UC.Rd
@@ -0,0 +1,127 @@
+\name{huggins91UC}
+\alias{huggins91UC}
+\alias{dhuggins91}
+\alias{rhuggins91}
+%- Also NEED an '\alias' for EACH other topic documented here.
+\title{ Huggins (1991) Capture-recapture Model }
+\description{
+  Density, and random generation
+  for the Huggins (1991) capture-recapture model.
+
+}
+\usage{
+rhuggins91(n, nTimePts = 5, pvars = length(xcoeff), xcoeff = c(-2, 1, 2),
+           capeffect = -1, double.ch = FALSE,
+           link = "logit", earg = list())
+dhuggins91(x, prob, prob0 = prob, log = FALSE)
+}
+%- maybe also 'usage' for other objects documented here.
+\arguments{
+  \item{x}{
+  response vector or matrix.
+  Should have values of 0s or 1s.
+  }
+
+  \item{nTimePts}{Number of sampling occasions.
+  Called \eqn{T} in \code{\link{huggins91}}.
+
+  }
+  \item{n}{number of observations.
+  Usually a single positive integer, else the length of the vector
+  is used.
+
+  }
+
+  \item{capeffect}{
+  Numeric, the capture effect. 
+  Added to the linear predictor if captured previously.
+  A positive or negative value corresponds to
+  a trap-happy and trap-shy effect respectively.
+
+
+  }
+
+  \item{double.ch}{
+  Logical.
+  If \code{TRUE} then the values of \code{ch0}, \code{ch1}, \ldots are
+  2 or 0, else 1 or 0.
+  Setting this argument \code{TRUE} means that a model can be fitted
+  with half the capture history in both denominator and numerator
+  (this is a compromise of the Huggins (1991) model where the full
+  capture history only appears in the numerator).
+
+  }
+
+  \item{pvars}{ Number of other numeric covariates that make up
+  the  linear predictor.
+  Labelled \code{x1}, \code{x2}, \ldots,
+  where the first is an intercept, and the others are
+  independent standard \code{\link[stats:Uniform]{runif}} random variates.
+  The first \code{pvars} elements of \code{xcoeff} are used.
+
+  }
+
+  \item{xcoeff}{
+  The regression coefficients of the linear predictor.
+  These correspond to \code{x1}, \code{x2}, \ldots,
+  and the first is for the intercept.
+  The length of \code{xcoeff} must be at least \code{pvars}.
+
+  }
+
+  \item{link, earg}{ 
+  Used to generate the probabilities for capture at each occasion.
+
+  }
+  \item{prob, prob0}{ 
+    Matrix of probabilities for the numerator and denominators
+    respectively.
+    The default does \emph{not} correspond to the
+    Huggins (1991) model since the denominator should
+    be free of any capture history, i.e., as if it had
+    never been caught before.
+
+  }
+  \item{log}{
+  Logical. Return the logarithm of the answer?
+  }
+
+}
+\details{
+  The form of the conditional likelihood is
+  described in \code{\link{huggins91}}.
+
+
+}
+\value{
+  \code{dhuggins91} gives the density,
+  \code{rhuggins91} returns a data frame with some attributes.
+  The function generates random deviates
+  (\eqn{T} columns labelled \code{y1}, \code{y2}, \ldots)
+  for the response.
+  Some indicator columns are also included
+  (those starting with \code{ch} are for previous capture history,
+  and those starting with \code{z} are zero),
+  and these are useful for the \code{xij} argument.
+
+
+  
+}
+%\references{ }
+\author{ Thomas W. Yee }
+\note{ 
+  These functions are experimental and do not follow the
+  usual conventions of \code{d}- and \code{r}-type R functions.
+
+}
+
+\seealso{ 
+  \code{\link{huggins91}}.
+
+}
+\examples{
+set.seed(123); rhuggins91(n = 10)
+set.seed(123); rhuggins91(n = 10, double.ch = TRUE)
+attributes(rhuggins91(n = 10))
+}
+\keyword{distribution}
diff --git a/man/huie.Rd b/man/huie.Rd
new file mode 100644
index 0000000..e64087d
--- /dev/null
+++ b/man/huie.Rd
@@ -0,0 +1,59 @@
+\name{huie}
+\alias{huie}
+\docType{data}
+\title{
+Harvard University International Enrollments
+
+%%   ~~ data name/kind ... ~~
+}
+\description{
+  A two-way table of counts; there are 12
+  degrees and 8 areas of the world.
+
+%%  ~~ A concise (1-5 lines) description of the dataset. ~~
+}
+\usage{data(huie)}
+\format{
+  The format is:
+ chr "huie"
+}
+\details{
+  The rownames and colnames have been edited.
+  The full colnames are:
+Africa,
+Asia,
+Europe,
+Caribbean and Central and and South America,
+Middle East,
+North America,
+Oceania,
+Stateless.
+
+The data was for the autumn (Fall) of 2010.
+GSAS stands for Graduate School of Arts and Sciences.
+See the URL below for more technical details supporting the data.
+
+
+
+%%  ~~ If necessary, more details than the __description__ above ~~
+}
+\source{
+  \url{http://www.provost.harvard.edu/institutional_research/factbook.php}
+
+
+%%  ~~ reference to a publication or URL from which the data were obtained ~~
+}
+\seealso{
+    \code{\link{hued}},
+    \code{\link{huse}}.
+
+}
+
+%%\references{
+%%  ~~ possibly secondary sources and usages ~~
+%%}
+\examples{
+print(huie)
+## maybe str(huie) ; plot(huie) ...
+}
+\keyword{datasets}
diff --git a/man/huse.Rd b/man/huse.Rd
new file mode 100644
index 0000000..8879d6d
--- /dev/null
+++ b/man/huse.Rd
@@ -0,0 +1,73 @@
+\name{huse}
+\alias{huse}
+\docType{data}
+\title{
+Harvard University Numbers of Ladder Faculty by School and Ethnicity
+
+%%   ~~ data name/kind ... ~~
+}
+\description{
+  A two-way table of counts; there are 14
+  schools and 5 race/ethnicities.
+
+%%  ~~ A concise (1-5 lines) description of the dataset. ~~
+}
+\usage{data(huse)}
+\format{
+  The format is:
+ chr "huse"
+}
+\details{
+  Ladder faculty members of Harvard University are cross-classified by
+  their school and their race/ethnicity.
+  This was for the period 2010--1.
+  Ladder Faculty are defined as Assistant Professors or Convertible
+  Instructors, Associate Professors, and Professors that have
+  been appointed in certain Schools.
+
+
+  Abbreviations:
+  FAS = Faculty of Arts and Sciences = Humanities + Social Sciences +
+  Natural Sciences + SEAS,
+  Natural Sciences = Life Sciences + Physical Sciences,
+  SEAS = School of Engineering and Applied Sciences,
+  HBS = Harvard Business School,
+  HMS = Harvard Medical School,
+  HSPH = Harvard School of Public Health,
+  HLS = Harvard Law School,
+  HKS = Harvard Kennedy School,
+  HGSE = Harvard Graduate School of Education,
+  GSD = Graduate School of Design ,
+  HDS = Harvard Divinity School,
+  HSDM = Harvard School of Dental Medicine.
+
+
+  See the URL below for many technical details supporting the data.
+  The table was constructed from pp.31--2 from the source.
+
+
+%%  ~~ If necessary, more details than the __description__ above ~~
+}
+\source{
+ \url{http://www.provost.harvard.edu/institutional_research/factbook.php}
+
+%%  ~~ reference to a publication or URL from which the data were obtained ~~
+}
+\references{
+  \emph{Harvard University Office of the Senior Vice Provost Faculty
+  Development \& Diversity: 2010 Annual Report}.
+
+
+%%  ~~ possibly secondary sources and usages ~~
+}
+\seealso{
+    \code{\link{hued}},
+    \code{\link{huie}}.
+
+}
+
+\examples{
+print(huse)
+## maybe str(huse) ; plot(huse) ...
+}
+\keyword{datasets}
diff --git a/man/inv.gaussianff.Rd b/man/inv.gaussianff.Rd
index 7c6678e..bf9b0f3 100644
--- a/man/inv.gaussianff.Rd
+++ b/man/inv.gaussianff.Rd
@@ -3,14 +3,14 @@
 %- Also NEED an '\alias' for EACH other topic documented here.
 \title{ Inverse Gaussian Distribution Family Function }
 \description{
-  Estimates the two parameters of the inverse Gaussian distribution by
-  maximum likelihood estimation.
+  Estimates the two parameters of the inverse Gaussian distribution
+  by maximum likelihood estimation.
 
 }
 \usage{
 inv.gaussianff(lmu = "loge", llambda = "loge",
                emu = list(), elambda = list(), 
-               method.init = 1, ilambda = 1,
+               imethod = 1, ilambda = 1,
                shrinkage.init = 0.99, zero = NULL)
 }
 %- maybe also 'usage' for other objects documented here.
@@ -30,7 +30,7 @@ inv.gaussianff(lmu = "loge", llambda = "loge",
   Initial value for the \eqn{\lambda}{lambda} parameter. 
 
   }
-  \item{method.init, shrinkage.init, zero}{ 
+  \item{imethod, shrinkage.init, zero}{ 
   See \code{\link{CommonVGAMffArguments}} for more information.
 
   }
@@ -66,9 +66,12 @@ Johnson, N. L. and Kotz, S. and Balakrishnan, N. (1994)
 \emph{Continuous Univariate Distributions},
 2nd edition, Volume 1, New York: Wiley.
 
+
 Evans, M., Hastings, N. and Peacock, B. (2000)
 \emph{Statistical Distributions},
 New York: Wiley-Interscience, Third edition.
+
+
 }
 \author{ T. W. Yee }
 \note{
diff --git a/man/koenker.Rd b/man/koenker.Rd
index 7a2e754..a36ac08 100644
--- a/man/koenker.Rd
+++ b/man/koenker.Rd
@@ -10,7 +10,7 @@
 \usage{
 koenker(percentile = 50, llocation = "identity", lscale = "loge",
         elocation = list(), escale = list(), ilocation = NULL,
-        iscale = NULL, method.init = 1, zero = 2)
+        iscale = NULL, imethod = 1, zero = 2)
 }
 %- maybe also 'usage' for other objects documented here.
 \arguments{
@@ -25,7 +25,7 @@ koenker(percentile = 50, llocation = "identity", lscale = "loge",
   and \code{\link{CommonVGAMffArguments}}.
 
   }
-  \item{ilocation, iscale, method.init, zero}{ 
+  \item{ilocation, iscale, imethod, zero}{ 
   See \code{\link{CommonVGAMffArguments}} for details.
 
   }
diff --git a/man/laplace.Rd b/man/laplace.Rd
index e748aa7..b39a348 100644
--- a/man/laplace.Rd
+++ b/man/laplace.Rd
@@ -10,7 +10,7 @@
 \usage{
 laplace(llocation = "identity", lscale = "loge", elocation = list(),
         escale = list(), ilocation = NULL, iscale = NULL,
-        method.init = 1, zero = 2)
+        imethod = 1, zero = 2)
 }
 %- maybe also 'usage' for other objects documented here.
 \arguments{
@@ -31,7 +31,7 @@ laplace(llocation = "identity", lscale = "loge", elocation = list(),
   appropriate length.
   The default is to choose the value internally.
   }
-  \item{method.init}{
+  \item{imethod}{
   Initialization method.
   Either the value 1 or 2.
 
@@ -109,7 +109,7 @@ with(lddat, median(y))
 
 lddat = data.frame(x = runif(nn <- 1001))
 lddat = transform(lddat, y = rlaplace(nn, loc = 2, scale = exp(-1+1*x)))
-coef(vglm(y ~ x, laplace(iloc = .2, meth = 2, zero = 1), lddat,
+coef(vglm(y ~ x, laplace(iloc = .2, imethod = 2, zero = 1), lddat,
           trace = TRUE), matrix = TRUE)
 }
 \keyword{models}
diff --git a/man/lgammaUC.Rd b/man/lgammaUC.Rd
index 55a9eba..e8242cf 100644
--- a/man/lgammaUC.Rd
+++ b/man/lgammaUC.Rd
@@ -46,6 +46,7 @@ Kotz, S. and Nadarajah, S. (2000)
 pages 48--49,
 London: Imperial College Press.
 
+
 }
 \author{ T. W. Yee }
 \details{
@@ -64,18 +65,20 @@ London: Imperial College Press.
 \seealso{
   \code{\link{lgammaff}},
   \code{\link{prentice74}}.
+
+
 }
 \examples{
 \dontrun{ loc = 1; Scale = 1.5; k = 1.4
 x = seq(-3.2, 5, by = 0.01)
 plot(x, dlgamma(x, loc, Scale, k), type = "l", col = "blue", ylim = 0:1,
-     main = "Blue is density, red is cumulative distribution function",
+     main = "Blue is density, orange is cumulative distribution function",
      sub = "Purple are 5,10,...,95 percentiles", las = 1, ylab = "")
 abline(h = 0, col = "blue", lty = 2)
 lines(qlgamma(seq(0.05, 0.95, by = 0.05), loc, Scale, k),
       dlgamma(qlgamma(seq(0.05, 0.95, by = 0.05), loc, Scale, k),
               loc, Scale, k), col = "purple", lty = 3, type = "h")
-lines(x, plgamma(x, loc, Scale, k), type = "l", col = "red")
+lines(x, plgamma(x, loc, Scale, k), type = "l", col = "orange")
 abline(h = 0, lty = 2) }
 }
 \keyword{distribution}
diff --git a/man/lgammaff.Rd b/man/lgammaff.Rd
index 409a0a1..46bb6a8 100644
--- a/man/lgammaff.Rd
+++ b/man/lgammaff.Rd
@@ -57,8 +57,8 @@ lgamma3ff(llocation = "identity", lscale = "loge", lshape = "loge",
 \details{
   The probability density function of the standard log-gamma distribution
   is given by
-  \deqn{f(y)=\exp[ky - \exp(y)] / \Gamma(k),}{%
-        f(y) = exp[ky - exp(y)]/gamma(k),}
+  \deqn{f(y;k)=\exp[ky - \exp(y)] / \Gamma(k),}{%
+        f(y;k) = exp[ky - exp(y)]/gamma(k),}
   for parameter \eqn{k>0}{k>0} and all real \eqn{y}.
   The mean of \eqn{Y} is \code{digamma(k)} (returned as
   the fitted values) and its variance is \code{trigamma(k)}.
@@ -112,25 +112,25 @@ New York: Wiley.
 
 }
 \seealso{
-\code{\link{rlgamma}},
-\code{\link{gengamma}},
-\code{\link{prentice74}},
-\code{\link{gamma1}},
-\code{\link[base:Special]{lgamma}}.
+  \code{\link{rlgamma}},
+  \code{\link{gengamma}},
+  \code{\link{prentice74}},
+  \code{\link{gamma1}},
+  \code{\link[base:Special]{lgamma}}.
 
 }
 \examples{
-ldat = data.frame(y = rlgamma(100, k = exp(1)))
-fit = vglm(y ~ 1, lgammaff, ldat, trace = TRUE, crit = "coef")
+ldata = data.frame(y = rlgamma(100, k = exp(1)))
+fit = vglm(y ~ 1, lgammaff, ldata, trace = TRUE, crit = "coef")
 summary(fit)
 coef(fit, matrix = TRUE)
 Coef(fit)
 
-ldat = data.frame(x = runif(nn <- 5000))     # Another example
-ldat = transform(ldat, loc = -1 + 2*x, Scale = exp(1))
-ldat = transform(ldat, y = rlgamma(nn, loc, scale = Scale, k = exp(0)))
-fit = vglm(y ~ x, lgamma3ff(zero = 2:3), ldat, trace = TRUE, crit = "c")
-coef(fit, matrix = TRUE)
+ldata = data.frame(x = runif(nn <- 5000))     # Another example
+ldata = transform(ldata, loc = -1 + 2 * x, Scale = exp(1))
+ldata = transform(ldata, y = rlgamma(nn, loc, scale = Scale, k = exp(0)))
+fit2 = vglm(y ~ x, lgamma3ff(zero = 2:3), ldata, trace = TRUE, crit = "c")
+coef(fit2, matrix = TRUE)
 }
 \keyword{models}
 \keyword{regression}
diff --git a/man/logff.Rd b/man/logff.Rd
index a110b16..c4a5488 100644
--- a/man/logff.Rd
+++ b/man/logff.Rd
@@ -39,12 +39,14 @@ logff(link = "logit", earg=list(), init.c = NULL)
   The mean is \eqn{a c/(1-c)}{a*c/(1-c)} (returned as the fitted values)
   and variance is \eqn{a c (1-ac) /(1-c)^2}{a*c*(1-a*c)/(1-c)^2}.
 
+
 }
 \value{
   An object of class \code{"vglmff"} (see \code{\link{vglmff-class}}).
   The object is used by modelling functions such as \code{\link{vglm}},
   and \code{\link{vgam}}.
 
+
 }
 \references{ 
 
@@ -68,39 +70,44 @@ New York: Wiley-Interscience, Third edition.
   In the \pkg{VGAM} library, a link function with option
   \code{\link{loge}} corresponds to this.
 
+
   The logarithmic distribution is sometimes confused with the log-series
   distribution. The latter was used by Fisher et al. for species abundance
   data, and has two parameters.
 
+
 }
 
 \seealso{ 
   \code{\link{rlog}},
   \code{\link[base:Log]{log}},
   \code{\link{loge}},
-  \code{\link{logoff}}.
+  \code{\link{logoff}},
+  \code{\link{explogarithmic}}.
+
 
 }
 \examples{
-ldat = data.frame(y = rlog(n=1000, prob=logit(0.2, inverse=TRUE)))
-fit = vglm(y ~ 1, logff, ldat, trace=TRUE, crit="c")
-coef(fit, matrix=TRUE)
+ldata = data.frame(y = rlog(n = 1000, prob = logit(0.2, inverse = TRUE)))
+fit = vglm(y ~ 1, logff, ldata, trace = TRUE, crit = "c")
+coef(fit, matrix = TRUE)
 Coef(fit)
-\dontrun{with(ldat,
-    hist(y, prob=TRUE, breaks=seq(0.5, max(y)+0.5, by=1), border="blue"))
-x = seq(1, with(ldat, max(y)), by=1)
-with(ldat, lines(x, dlog(x, Coef(fit)[1]), col="red", type="h", lwd=2)) }
+\dontrun{with(ldata,
+    hist(y, prob = TRUE, breaks = seq(0.5, max(y) + 0.5, by = 1),
+         border = "blue"))
+x = seq(1, with(ldata, max(y)), by=1)
+with(ldata, lines(x, dlog(x, Coef(fit)[1]), col = "orange", type = "h", lwd = 2)) }
 
 
 # Example: Corbet (1943) butterfly Malaya data
 corbet = data.frame(nindiv = 1:24,
                     ofreq = c(118, 74, 44, 24, 29, 22, 20, 19, 20, 15, 12,
                               14, 6, 12, 6, 9, 9, 6, 10, 10, 11, 5, 3, 3))
-fit = vglm(nindiv ~ 1, logff, data=corbet, weights=ofreq)
-coef(fit, matrix=TRUE)
+fit = vglm(nindiv ~ 1, logff, data = corbet, weights = ofreq)
+coef(fit, matrix = TRUE)
 chat = Coef(fit)["c"]
-pdf2 = dlog(x=with(corbet, nindiv), prob=chat)
-print(with(corbet, cbind(nindiv, ofreq, fitted=pdf2*sum(ofreq))), dig=1)
+pdf2 = dlog(x = with(corbet, nindiv), prob = chat)
+print(with(corbet, cbind(nindiv, ofreq, fitted = pdf2 * sum(ofreq))), dig = 1)
 }
 \keyword{models}
 \keyword{regression}
diff --git a/man/logistic.Rd b/man/logistic.Rd
index 9fadbe9..e93709f 100644
--- a/man/logistic.Rd
+++ b/man/logistic.Rd
@@ -11,10 +11,10 @@
 }
 \usage{
 logistic1(llocation = "identity", elocation = list(),
-          scale.arg = 1, method.init = 1)
+          scale.arg = 1, imethod = 1)
 logistic2(llocation = "identity", lscale = "loge",
           elocation = list(), escale = list(),
-          ilocation = NULL, iscale = NULL, method.init = 1, zero = NULL)
+          ilocation = NULL, iscale = NULL, imethod = 1, zero = NULL)
 }
 %- maybe also 'usage' for other objects documented here.
 \arguments{
@@ -38,7 +38,7 @@ logistic2(llocation = "identity", lscale = "loge",
   See \code{\link{CommonVGAMffArguments}} for more information.
 
   }
-  \item{method.init, zero}{
+  \item{imethod, zero}{
   See \code{\link{CommonVGAMffArguments}} for more information.
 
   }
diff --git a/man/loglaplace.Rd b/man/loglaplace.Rd
index d612327..051859b 100644
--- a/man/loglaplace.Rd
+++ b/man/loglaplace.Rd
@@ -18,11 +18,11 @@ loglaplace1(tau = NULL, llocation = "loge", elocation = list(),
     ilocation = NULL, kappa = sqrt(tau/(1 - tau)), Scale.arg = 1,
     shrinkage.init = 0.95, parallelLocation = FALSE, digt = 4,
     dfmu.init = 3, rep0 = 0.5, minquantile = 0, maxquantile = Inf,
-    method.init = 1, zero = NULL)
+    imethod = 1, zero = NULL)
 logitlaplace1(tau = NULL, llocation = "logit", elocation = list(),
     ilocation = NULL, kappa = sqrt(tau/(1 - tau)),
     Scale.arg = 1, shrinkage.init = 0.95, parallelLocation = FALSE,
-    digt = 4, dfmu.init = 3, rep01 = 0.5, method.init = 1, zero = NULL)
+    digt = 4, dfmu.init = 3, rep01 = 0.5, imethod = 1, zero = NULL)
 }
 %- maybe also 'usage' for other objects documented here.
 \arguments{
@@ -68,7 +68,7 @@ logitlaplace1(tau = NULL, llocation = "logit", elocation = list(),
 %   have different values for each \code{tau} value.
 % }
 
-  \item{method.init}{
+  \item{imethod}{
   Initialization method.
   Either the value 1, 2, or \ldots.
 
diff --git a/man/loglinb2.Rd b/man/loglinb2.Rd
index d7ee1dc..fc333a5 100644
--- a/man/loglinb2.Rd
+++ b/man/loglinb2.Rd
@@ -14,9 +14,11 @@ loglinb2(exchangeable = FALSE, zero = NULL)
 \arguments{
   \item{exchangeable}{ Logical.
     If \code{TRUE}, the two marginal probabilities are constrained to
-    be equal. Should be set \code{TRUE} for ears, eyes, etc. data. }
+    be equal. Should be set \code{TRUE} for ears, eyes, etc. data.
+  }
   \item{zero}{ Which linear/additive predictor is modelled as an
-    intercept only? A \code{NULL} means none of them. }
+    intercept only? A \code{NULL} means none of them.
+  }
 
 }
 \details{
@@ -41,9 +43,12 @@ loglinb2(exchangeable = FALSE, zero = NULL)
   \code{\link{rrvglm}}
   and \code{\link{vgam}}.
 
+
   When fitted, the \code{fitted.values} slot of the object contains the
   four joint probabilities, labelled as
   \eqn{(Y_1,Y_2)}{(Y1,Y2)} = (0,0), (0,1), (1,0), (1,1), respectively.
+
+
 }
 
 \references{
@@ -55,35 +60,35 @@ by Gao, F., Wahba, G., Klein, R., Klein, B.
 \emph{Journal of the American Statistical Association},
 \bold{96}, 127--160.
 
+
 McCullagh, P. and Nelder, J. A. (1989)
   \emph{Generalized Linear Models}, 2nd ed. London: Chapman & Hall.
 
-Documentation accompanying the \pkg{VGAM} package at
-\url{http://www.stat.auckland.ac.nz/~yee}
-contains further information and examples.
 
 }
 \author{ Thomas W. Yee }
 \note{
   The response must be a two-column matrix of ones and zeros only.
-  This is more restrictive than \code{\link{binom2.or}}, which can handle
-  more types of input formats.
+  This is more restrictive than \code{\link{binom2.or}},
+  which can handle more types of input formats.
   Note that each of the 4 combinations of the multivariate response
   need to appear in the data set.
 
+
 }
 
 \seealso{
   \code{\link{binom2.or}},
   \code{\link{binom2.rho}},
   \code{\link{loglinb3}}.
+
 }
 \examples{
-coalminers = transform(coalminers, Age=(age-42)/5)
+coalminers = transform(coalminers, Age = (age - 42) / 5)
 
 # Get the n x 4 matrix of counts 
 temp = vglm(cbind(nBnW,nBW,BnW,BW) ~ Age, binom2.or, coalminers)
-counts = round(c(weights(temp, type="prior")) * temp at y)
+counts = round(c(weights(temp, type = "prior")) * temp at y)
 
 # Create a n x 2 matrix response for loglinb2()
 # bwmat = matrix(c(0,0, 0,1, 1,0, 1,1), 4, 2, byrow=TRUE)
@@ -95,8 +100,8 @@ newminers = data.frame(bln = kronecker(matof1, bwmat[,1]),
                        Age = with(coalminers, rep(age, rep(4, length(age)))))
 newminers = newminers[with(newminers, wt) > 0,]
 
-fit = vglm(cbind(bln,wheeze) ~ Age, loglinb2, wei=wt, data=newminers)
-coef(fit, mat=TRUE)    # Same! (at least for the log odds-ratio) 
+fit = vglm(cbind(bln,wheeze) ~ Age, loglinb2, weight = wt, data = newminers)
+coef(fit, matrix = TRUE)    # Same! (at least for the log odds-ratio) 
 summary(fit)
 
 # Try reconcile this with McCullagh and Nelder (1989), p.234 
diff --git a/man/loglinb3.Rd b/man/loglinb3.Rd
index 8d45a3f..8974686 100644
--- a/man/loglinb3.Rd
+++ b/man/loglinb3.Rd
@@ -13,9 +13,11 @@ loglinb3(exchangeable = FALSE, zero = NULL)
 \arguments{
   \item{exchangeable}{ Logical.
     If \code{TRUE}, the three marginal probabilities are constrained to
-    be equal. }
+    be equal.
+  }
   \item{zero}{ Which linear/additive predictor is modelled as an
-    intercept only? A \code{NULL} means none. }
+    intercept only? A \code{NULL} means none.
+  }
 
 }
 \details{
@@ -23,19 +25,23 @@ loglinb3(exchangeable = FALSE, zero = NULL)
   \deqn{\exp(u_0+u_1 y_1+u_2 y_2+u_3 y_3+u_{12} y_1 y_2+
         u_{13} y_1 y_3+u_{23} y_2 y_3)}{%
         exp(u0 + u1*y1 + u2*y2 + u3*y3 + u12*y1*y2 + u13*y1*y3+ u23*y2*y3)}
-  where \eqn{y_1}{y1}, \eqn{y_2}{y2} and \eqn{y_3}{y3} are 0 or 1,
-  and the parameters are \eqn{u_1}{u1}, \eqn{u_2}{u2}, \eqn{u_3}{u3},
-  \eqn{u_{12}}{u12}, \eqn{u_{13}}{u13}, \eqn{u_{23}}{u23}.  The
-  normalizing parameter \eqn{u_0}{u0} can be expressed as a function of
-  the other parameters. Note that a third-order association parameter,
+  where \eqn{y_1}{y1}, \eqn{y_2}{y2} and \eqn{y_3}{y3} are 0
+  or 1, and the parameters are \eqn{u_1}{u1}, \eqn{u_2}{u2},
+  \eqn{u_3}{u3}, \eqn{u_{12}}{u12}, \eqn{u_{13}}{u13},
+  \eqn{u_{23}}{u23}.
+  The normalizing parameter \eqn{u_0}{u0} can be expressed as a
+  function of the other parameters.
+  Note that a third-order association parameter,
   \eqn{u_{123}}{u123} for the product \eqn{y_1 y_2 y_3}{y1*y2*y3},
   is assumed to be zero for this family function.
 
+
   The linear/additive predictors are
   \eqn{(\eta_1,\eta_2,\ldots,\eta_6)^T =
        (u_1,u_2,u_3,u_{12},u_{13},u_{23})^T}{(eta1,eta2,...,eta6) =
        (u1,u2,u3,u12,u13,u23)}.
 
+
 }
 
 \value{
@@ -43,11 +49,13 @@ loglinb3(exchangeable = FALSE, zero = NULL)
   The object is used by modelling functions such as \code{\link{vglm}},
   \code{\link{rrvglm}} and \code{\link{vgam}}.
 
+
   When fitted, the \code{fitted.values} slot of the object contains the
   eight joint probabilities, labelled as \eqn{(Y_1,Y_2,Y_3)}{(Y1,Y2,Y3)}
   = (0,0,0), (0,0,1), (0,1,0), (0,1,1), (1,0,0), (1,0,1), (1,1,0),
   (1,1,1), respectively.
 
+
 }
 
 \references{
@@ -59,20 +67,23 @@ by Gao, F., Wahba, G., Klein, R., Klein, B.
 \emph{Journal of the American Statistical Association},
 \bold{96}, 127--160.
 
+
 McCullagh, P. and Nelder, J. A. (1989)
   \emph{Generalized Linear Models}, 2nd ed. London: Chapman & Hall.
 
+
 Documentation accompanying the \pkg{VGAM} package at
 \url{http://www.stat.auckland.ac.nz/~yee}
 contains further information and examples.
 
+
 }
 \author{ Thomas W. Yee }
 \note{
-  The response must be a three-column matrix of ones and zeros only.
-  Note that each of the 8 combinations of the multivariate response
-  need to appear in the data set, therefore data sets will need to
-  be large in order for this family function to work.
+  The response must be a three-column matrix of ones and zeros
+  only. Note that each of the 8 combinations of the multivariate
+  response need to appear in the data set, therefore data sets
+  will need to be large in order for this family function to work.
 
 }
 
@@ -82,8 +93,8 @@ contains further information and examples.
 
 }
 \examples{
-fit = vglm(cbind(cyadea,beitaw,kniexc) ~ altitude, loglinb3, data=hunua)
-coef(fit, mat=TRUE)
+fit = vglm(cbind(cyadea, beitaw, kniexc) ~ altitude, loglinb3, hunua)
+coef(fit, matrix = TRUE)
 head(fitted(fit))
 summary(fit)
 }
diff --git a/man/lqnorm.Rd b/man/lqnorm.Rd
index 8e324c9..d242b9b 100644
--- a/man/lqnorm.Rd
+++ b/man/lqnorm.Rd
@@ -9,7 +9,7 @@
 }
 \usage{
 lqnorm(qpower=2, link="identity", earg=list(),
-       method.init=1, imu=NULL, shrinkage.init=0.95)
+       imethod=1, imu=NULL, shrinkage.init=0.95)
 }
 %- maybe also 'usage' for other objects documented here.
 \arguments{
@@ -26,7 +26,7 @@ lqnorm(qpower=2, link="identity", earg=list(),
   See \code{\link{Links}} for more details.
 
   }
-  \item{method.init}{
+  \item{imethod}{
   Must be 1, 2 or 3.
   See \code{\link{CommonVGAMffArguments}} for more information.
   Ignored if \code{imu} is specified.
@@ -34,7 +34,7 @@ lqnorm(qpower=2, link="identity", earg=list(),
   }
   \item{imu}{
   Numeric, optional initial values used for the fitted values.
-  The default is to use \code{method.init=1}.
+  The default is to use \code{imethod=1}.
 
   }
   \item{shrinkage.init}{
@@ -42,7 +42,7 @@ lqnorm(qpower=2, link="identity", earg=list(),
   The value must be between 0 and 1 inclusive, and
   a value of 0 means the individual response values are used,
   and a value of 1 means the median or mean is used.
-  This argument is used in conjunction with \code{method.init=3}.
+  This argument is used in conjunction with \code{imethod=3}.
 
   }
 }
diff --git a/man/meplot.Rd b/man/meplot.Rd
index ea86861..7642c51 100644
--- a/man/meplot.Rd
+++ b/man/meplot.Rd
@@ -7,46 +7,71 @@
 \description{
   Mean excess plot (also known as a mean residual life plot),
   a diagnostic plot for the generalized  Pareto distribution (GPD).
+
 }
 \usage{
 meplot(object, ...)
-meplot.default(y, main="Mean Excess Plot",
-    xlab="Threshold", ylab="Mean Excess", lty=c(2,1:2),
-    conf=0.95, col=c("blue","black","blue"), type="l", ...)
+meplot.default(y, main = "Mean Excess Plot",
+    xlab = "Threshold", ylab = "Mean Excess", lty = c(2, 1:2),
+    conf = 0.95, col = c("blue", "black", "blue"), type = "l", ...)
 meplot.vlm(object, ...)
 }
 %- maybe also 'usage' for other objects documented here.
 \arguments{
   \item{y}{ A numerical vector. \code{NA}s etc. are not allowed.}
-  \item{main}{Character. Overall title for the plot. }
-  \item{xlab}{Character. Title for the x axis. }
-  \item{ylab}{Character. Title for the y axis. }
-  \item{lty}{Line type. The second value is for the mean
-    excess value, the first and third values are for the envelope
-    surrounding the confidence interval.}
-  \item{conf}{Confidence level. The default results in approximate 95
-    percent confidence intervals for each mean excess value. }
-  \item{col}{Colour of the three lines. }
-  \item{type}{Type of plot. The default means lines are
-    joined between the mean excesses and also the upper and lower
-    limits of the confidence intervals. }
-  \item{object}{ An object that inherits class \code{"vlm"},
-    usually of class \code{\link{vglm-class}} or
-    \code{\link{vgam-class}}. }
+  \item{main, xlab, ylab}{Character.
+  Overall title for the plot,
+  and titles for the x- and y-axes.
+  }
+  \item{lty}{Line type.
+  The second value is for the mean
+  excess value, the first and third values are for the envelope
+  surrounding the confidence interval.
+
+
+  }
+  \item{conf}{Confidence level.
+    The default results in approximate 95 percent confidence
+    intervals for each mean excess value.
+
+
+  }
+  \item{col}{Colour of the three lines.
+
+
+  }
+  \item{type}{Type of plot.
+  The default means lines are
+  joined between the mean excesses and also the upper and lower
+  limits of the confidence intervals.
+
+
+  }
+  \item{object}{
+  An object that inherits class \code{"vlm"},
+  usually of class \code{\link{vglm-class}} or
+  \code{\link{vgam-class}}.
+
+
+  }
   \item{\dots}{ Graphical argument passed into
-    \code{\link[graphics]{plot}}. See \code{\link[graphics]{par}}
-    for an exhaustive list. The arguments \code{xlim} and
-  \code{ylim} are particularly useful. }
+  \code{\link[graphics]{plot}}.
+  See \code{\link[graphics]{par}}
+  for an exhaustive list.
+  The arguments \code{xlim} and \code{ylim} are particularly useful.
+
+
+  }
 }
 \details{
   If \eqn{Y} has a GPD with scale parameter
   \eqn{\sigma}{sigma} and shape parameter \eqn{\xi<1}{xi<1},
   and if \eqn{y>0}, then
   \deqn{E(Y-u|Y>u) = \frac{\sigma+\xi u}{1-\xi}.}{%
-        E(Y-u|Y>u) = \frac{\sigma+\xi u}{1-\xi}.}
+        E(Y-u|Y>u) = \frac{\sigma+ xi*u}{1- xi}.}
   It is a linear function in \eqn{u}, the threshold.
   Note that \eqn{Y-u} is called the \emph{excess} and
-  values of \eqn{Y} greater than \eqn{u} are called \emph{exceedences}.
+  values of \eqn{Y} greater than \eqn{u} are called \emph{exceedances}.
   The empirical versions used by these functions is to use
   sample means to estimate the left hand side of the equation.
   Values of \eqn{u} in the plot are the values of \eqn{y} itself.
@@ -55,17 +80,35 @@ meplot.vlm(object, ...)
   value. See \code{\link{gpd}} for more details.
   If the plot is flat then the data may be exponential,
   and if it is curved then it may be Weibull or gamma.
+  There is often a lot of variance/fluctuation at the RHS of the
+  plot due to fewer observations.
+
 
   The function \code{meplot} is generic, and
   \code{meplot.default} and \code{meplot.vlm} are some
   methods functions for mean excess plots.
 
+
 }
 \value{
   A list is returned invisibly with the following components.
-  \item{threshold }{The x axis values. }
-  \item{meanExcess }{The y axis values. Each value is a sample
-  mean minus a value \eqn{u}. }
+  \item{threshold }{The x axis values.
+
+
+  }
+  \item{meanExcess }{The y axis values.
+  Each value is a sample mean minus a value \eqn{u}.
+
+
+  }
+
+  \item{plusminus }{The amount which is added or subtracted
+  from the mean excess to give the confidence interval.
+  The last value is a \code{NA} because it is based on one observation.
+
+
+  }
+
 }
 \references{
 Davison, A. C. and Smith, R. L. (1990)
@@ -73,20 +116,37 @@ Models for exceedances over high thresholds (with discussion).
 \emph{Journal of the Royal Statistical Society, Series B, Methodological},
 \bold{52}, 393--442.
 
+
 Coles, S. (2001)
 \emph{An Introduction to Statistical Modeling of Extreme Values}.
 London: Springer-Verlag.
+
+
 }
 \author{ T. W. Yee }
-\note{ The function is designed for speed and not
-  accuracy, therefore huge data sets with extremely large values
-  may cause failure (the function \code{\link[base]{cumsum}}
-  is used.) Ties may not be well handled.
+\note{
+  The function is designed for speed and not accuracy, therefore
+  huge data sets with extremely large values may cause failure
+  (the function \code{\link[base]{cumsum}} is used.)  Ties may
+  not be well handled.
+
+
+}
+\seealso{
+  \code{\link{gpd}}.
+
+
+}
+\examples{
+\dontrun{meplot(with(venice90, sealevel), las = 1) -> ii
+names(ii)
+abline(h = ii$meanExcess[1], col = "orange", lty = "dashed")
+
+par(mfrow = c(2, 2))
+for (ii in 1:4)
+  meplot(rgpd(1000), col = c("orange", "blue", "orange"))
+}
 }
-\seealso{ \code{\link{gpd}}. }
-\examples{\dontrun{meplot(runif(500), las=1) -> i
-names(i)
-}}
 \keyword{models}
 \keyword{regression}
 
diff --git a/man/micmen.Rd b/man/micmen.Rd
index 865a1ab..c5064b7 100644
--- a/man/micmen.Rd
+++ b/man/micmen.Rd
@@ -8,7 +8,7 @@
 }
 \usage{
 micmen(rpar = 0.001, divisor = 10, init1 = NULL, init2 = NULL,
-       method.init = 1, oim = TRUE,
+       imethod = 1, oim = TRUE,
        link1 = "identity", link2 = "identity",
        firstDeriv = c("nsimEIM", "rpar"),
        earg1 = list(), earg2 = list(), prob.x = c(0.15, 0.85),
@@ -55,7 +55,7 @@ micmen(rpar = 0.001, divisor = 10, init1 = NULL, init2 = NULL,
   The first is the default.
 
   }
-  \item{method.init, prob.x}{
+  \item{imethod, prob.x}{
   See \code{\link{CommonVGAMffArguments}} for more information.
 
   }
diff --git a/man/moffset.Rd b/man/moffset.Rd
index eaa507d..9c2fa43 100644
--- a/man/moffset.Rd
+++ b/man/moffset.Rd
@@ -2,46 +2,75 @@
 \alias{moffset}
 
 \title{
-Makes an effective day data set 
+Matrix Offset
 
 }
 \description{
-  Modify a matrix by shitting successive elements.
+  Modify a matrix by shifting successive elements.
 
 }
 \usage{
-moffset(mat, roffset = 1, coffset = 1)
+moffset(mat, roffset = 0, coffset = 0, postfix = "")
 
 }
 \arguments{
 \item{mat}{
-  Data frame or matrix, which is considered to 24 hours of rows by 
-  7 days a week of columns, or can be any matrix.
+  Data frame or matrix.
+  This ought to have at least three rows and three columns.
+  The elements are shifted in the order of \code{c(mat)},
+  i.e., going down successive columns, as the columns go
+  from left to right. Wrapping of values is done.
 
 }
 \item{roffset, coffset}{
-  Numeric or character. The number or name of the row/column
-  of matrix input. rows/column start as the first cell in
-  matrix output. For example, for the \code{\link{alcoff}},
-  put \code{roffset = "6"} means that we make an effective days
-  dataset start from 6:00 am of the day, and from midnight to
-  05.59 am is part the previous days. Similarly \code{coffset}
-  for the column.
+  Numeric or character.
+  If numeric, the amount of shift (offset) for each row and column.
+  The default is no change to \code{mat}.
+  If character, the offset is computed by matching with
+  the row or column names.
+  For example, for the \code{\link{alcoff}},
+  put \code{roffset = "6"} means that we make an effective day's
+  dataset start from 6:00 am, and this wraps around to 
+  include midnight to 05.59 am on the next day.
+
+}
+\item{postfix}{
+  Character.
+  Modified rows and columns are renamed by pasting this argument
+  to the end of each name.
+  The default is no change.
 
 }
 }
 
 \details{
-  In \pkg{VGAM} there are crash data (e.g., see
-  \code{\link{crashi}}) and alcohol-related related
-  datasets, and also function of \code{\link{rcam}} and
-  \code{\link{plotrcam0}} available. In regression analysis of
-  main effect model or rank zero of row-column association model,
-  it becomes more realistic using the effective days dataset. Since
-  in the effective days datasets for example, partying on Friday
-  night includes Saturday morning.
+  This function allows a matrix to be rearranged so that
+  element (\code{roffset} + 1, \code{coffset} + 1)
+  becomes the (1, 1) element.
+  The elements are assumed to be ordered in the same way
+  as the elements of \code{c(mat)},
+
+
+  This function is applicable to, e.g.,
+  \code{\link{alcoff}},
+  where it is useful to define the \emph{effective day} as starting
+  at some other hour than midnight, e.g., 6.00am.
+  This is because partying on Friday night continues on into Saturday morning,
+  therefore it is more interpretable to use the effective day when
+  considering a daily effect.
 
 
+  This is a data preprocessing function for \code{\link{rcam}}
+  and \code{\link{plotrcam0}}.  The differences between
+  \code{\link{Rcam}} and \code{\link{moffset}} is that
+  \code{\link{Rcam}} only reorders the level of the rows and columns
+  so that the data is shifted but not moved.
+  That is, a value in one row stays in that row,
+  and ditto for column. 
+  But in \code{\link{moffset}}
+  values in one column can be moved to a previous column.
+  See the examples below.
+
 }
 
 \value{
@@ -51,42 +80,52 @@ moffset(mat, roffset = 1, coffset = 1)
 
 
 \author{
-  Alfian F. Hadi,
-  T. W. Yee.
+  T. W. Yee,
+  Alfian F. Hadi.
 
 }
 \note{
-  This function was specifically  24 x 7 dimensional matrix (24
-  hours of days of row by 7 days a week), \code{\link{alcoff}}.
-  Change into a matrix of "effective days" with flexible start of
-  first hour of in the effective day. But now can more generaly
-  applied into any dimensional matrix.
+% This function was originally for a 24 x 7 dimensional matrix
+% (24 hours of the day by 7 days per week) such as \code{\link{alcoff}}.
+% Of course, this function can be applied to any moderately
+% large matrix.
 
 
-  This is a data preprocessing function for \code{\link{rcam}}
-  and \code{\link{plotrcam0}}.  The differences between
-  \code{\link{Rcam}} and \code{\link{moffset}} is that the
-  \code{\link{Rcam}} only reordering the level of row and column
-  and marking the row/column base line, there is no change in
-  entire rows and column.  But here in \code{\link{moffset}}
-  values in row/column before the rstar/cstar will be moved to
-  previuous row/column. So if there is very similar matrix to
-  \code{\link{alcoff}}, but on other dimension 7 by 24, for example,
-  then the user can use this function very easy.
-
+  The input \code{mat} should have row names and column names.
 
 }
 \seealso{
   \code{\link{Rcam}}, 
   \code{\link{rcam}}, 
-  \code{\link{plotrcam0}}.
+  \code{\link{plotrcam0}},
+  \code{\link{alcoff}},
+  \code{\link{crashi}}.
 
 }
 \examples{
-alcoff.e <- moffset(alcoff, roffset = "6")
-fit0.orig <- rcam(alcoff) #default baselines are first row & col
-fit0 <- rcam(alcoff.e)    #default baselines are first roe & col 
+moffset(alcoff, 3, 2, "*")  # Some day's data is moved to previous day.
+Rcam(alcoff, 3 + 1, 2 + 1)  # Data does not move as much.
+alcoff  # Original data
+moffset(alcoff, 3, 2, "*") - Rcam(alcoff, 3+1, 2+1) # Note the differences
+
+# An 'effective day' data set:
+alcoff.e <- moffset(alcoff, roffset = "6", postfix = "*")
+fit.o <- rcam(alcoff)    # default baselines are first row and col
+fit.e <- rcam(alcoff.e)  # default baselines are first row and col 
+
+\dontrun{ par(mfrow = c(2, 2), mar = c(9,4,2,1))
+plot(fit.o, rsub = "Not very interpretable", csub = "Not very interpretable")
+plot(fit.e, rsub = "More interpretable", csub = "More interpretable")
+}
+
+# Some checking
+all.equal(moffset(alcoff), alcoff)      # Should be no change
+moffset(alcoff, 1, 1, "*")
+moffset(alcoff, 2, 3, "*")
+moffset(alcoff, 1, 0, "*")
+moffset(alcoff, 0, 1, "*")
+moffset(alcoff, "6", "Monday", "*")  # This one is good
 
-#customise rowbaseline
-fit0.based <- rcam(Rcam(alcoff.e, rbaseline="11", cbaseline="Monday"))
-} 
+# Customise row and column baselines
+fit2 <- rcam(Rcam(alcoff.e, rbaseline = "11", cbaseline = "Monday*"))
+}
diff --git a/man/morgenstern.Rd b/man/morgenstern.Rd
index e9bff0a..933ab3d 100644
--- a/man/morgenstern.Rd
+++ b/man/morgenstern.Rd
@@ -9,7 +9,7 @@
 }
 \usage{
 morgenstern(lapar="rhobit", earg=list(), iapar=NULL, tola0=0.01,
-            method.init=1)
+            imethod=1)
 }
 %- maybe also 'usage' for other objects documented here.
 \arguments{
@@ -28,7 +28,7 @@ morgenstern(lapar="rhobit", earg=list(), iapar=NULL, tola0=0.01,
   Numeric. Optional initial value for \eqn{\alpha}{alpha}.
   By default, an initial value is chosen internally.
   If a convergence failure occurs try assigning a different value.
-  Assigning a value will override the argument \code{method.init}.
+  Assigning a value will override the argument \code{imethod}.
 
   }
   \item{tola0}{
@@ -39,7 +39,7 @@ morgenstern(lapar="rhobit", earg=list(), iapar=NULL, tola0=0.01,
   is too close to zero.
 
   }
-  \item{method.init}{
+  \item{imethod}{
   An integer with value \code{1} or \code{2} which
   specifies the initialization method. If failure to converge occurs
   try the other value, or else specify a value for \code{ia}.
diff --git a/man/multinomial.Rd b/man/multinomial.Rd
index 39ab318..971ad37 100644
--- a/man/multinomial.Rd
+++ b/man/multinomial.Rd
@@ -233,11 +233,11 @@ coef(fit , matrix = TRUE) # Easy to reconcile this output with fit2
 
 # Example 3: The response is a factor.
 nn = 10
-dframe3 = data.frame(yfactor = gl(3, nn, labels=c("Control","Trt1","Trt2")),
-                     x = runif(3 * nn))
+dframe3 = data.frame(yfactor = gl(3, nn, labels = c("Control", "Trt1", "Trt2")),
+                     x2 = runif(3 * nn))
 myrefLevel = with(dframe3, yfactor[12])
-fit3a = vglm(yfactor ~ x, multinomial(refLevel = myrefLevel), dframe3)
-fit3b = vglm(yfactor ~ x, multinomial(refLevel = 2), dframe3)
+fit3a = vglm(yfactor ~ x2, multinomial(refLevel = myrefLevel), dframe3)
+fit3b = vglm(yfactor ~ x2, multinomial(refLevel = 2), dframe3)
 coef(fit3a, matrix = TRUE)  # "Treatment1" is the reference level
 coef(fit3b, matrix = TRUE)  # "Treatment1" is the reference level
 margeff(fit3b)
diff --git a/man/negbinomial.Rd b/man/negbinomial.Rd
index 9001fab..dda0f1c 100644
--- a/man/negbinomial.Rd
+++ b/man/negbinomial.Rd
@@ -1,40 +1,48 @@
 \name{negbinomial}
 \alias{negbinomial}
+\alias{polya}
 %- Also NEED an '\alias' for EACH other topic documented here.
 \title{ Negative Binomial Distribution Family Function }
 \description{
-  Maximum likelihood estimation of the two parameters of a negative binomial
-  distribution.
+  Maximum likelihood estimation of the two parameters of a negative
+  binomial distribution.
+
 }
 \usage{
-negbinomial(lmu = "loge", lk = "loge", emu = list(), ek = list(),
-            imu = NULL, ik = NULL, quantile.probs = 0.75,
+negbinomial(lmu = "loge", lsize = "loge", emu = list(), esize = list(),
+            imu = NULL, isize = NULL, quantile.probs = 0.75,
             nsimEIM = 100, cutoff = 0.995,
-            Maxiter = 5000, deviance.arg = FALSE, method.init = 1,
+            Maxiter = 5000, deviance.arg = FALSE, imethod = 1,
             parallel = FALSE, shrinkage.init = 0.95, zero = -2)
+polya(lprob = "logit", lsize = "loge", eprob = list(), esize = list(),
+    iprob = NULL, isize = NULL, quantile.probs = 0.75, nsimEIM = 100,
+    deviance.arg = FALSE, imethod = 1, shrinkage.init = 0.95, zero = -2)
 }
 %- maybe also 'usage' for other objects documented here.
 \arguments{
-  \item{lmu, lk}{
-  Link functions applied to the \eqn{\mu}{mu} and \eqn{k} parameters.
+  \item{lmu, lsize, lprob}{
+  Link functions applied to the \eqn{\mu}{mu}, \eqn{k}
+  and \eqn{p}  parameters.
   See \code{\link{Links}} for more choices.
-  Note that the \eqn{k} parameter is the \code{size} argument of 
-  \code{\link[stats:NegBinomial]{rnbinom}}.
-  Common alternatives for \code{lk} are
+  Note that the \eqn{\mu}{mu}, \eqn{k}
+  and \eqn{p}  parameters are the \code{mu},
+  \code{size} and \code{prob} arguments of 
+  \code{\link[stats:NegBinomial]{rnbinom}} respectively.
+  Common alternatives for \code{lsize} are
   \code{\link{nloge}} and
   \code{\link{reciprocal}}.
 
   }
-  \item{emu, ek}{
+  \item{emu, esize, eprob}{
   List. Extra argument for each of the links.
   See \code{earg} in \code{\link{Links}} for general information.
 
   }
-  \item{imu, ik}{
-  Optional initial values for the mean and \eqn{k}.
-  For the latter, if failure to converge occurs then try different values
-  (and/or use \code{method.init}).
-  For a \eqn{S}-column response, \code{ik} can be of length \eqn{S}.
+  \item{imu, isize, iprob}{
+  Optional initial values for the mean and \eqn{k} and \eqn{p}.
+  For \eqn{k}, if failure to converge occurs then try different values
+  (and/or use \code{imethod}).
+  For a \eqn{S}-column response, \code{isize} can be of length \eqn{S}.
   A value \code{NULL} means an initial value for each response is
   computed internally using a range of values.
   The last argument is ignored if used within \code{\link{cqo}}; see
@@ -44,7 +52,7 @@ negbinomial(lmu = "loge", lk = "loge", emu = list(), ek = list(),
   \item{quantile.probs}{
   Passed into the \code{probs} argument
   of \code{\link[stats:quantile]{quantile}}
-  when \code{method.init = 3} to obtain an initial value for the mean.
+  when \code{imethod = 3} to obtain an initial value for the mean.
 
   }
 
@@ -86,12 +94,12 @@ negbinomial(lmu = "loge", lk = "loge", emu = list(), ek = list(),
   under the fast algorithm.
 
   }
-  \item{method.init}{
+  \item{imethod}{
   An integer with value \code{1} or \code{2} or \code{3} which
   specifies the initialization method for the \eqn{\mu}{mu} parameter.
   If failure to converge occurs try another value
   and/or else specify a value for \code{shrinkage.init}
-  and/or else specify a value for \code{ik}.
+  and/or else specify a value for \code{isize}.
 
   }
   \item{parallel}{
@@ -109,7 +117,7 @@ negbinomial(lmu = "loge", lk = "loge", emu = list(), ek = list(),
   The value must be between 0 and 1 inclusive, and
   a value of 0 means the individual response values are used,
   and a value of 1 means the median or mean is used.
-  This argument is used in conjunction with \code{method.init}.
+  This argument is used in conjunction with \code{imethod}.
   If convergence failure occurs try setting this argument to 1.
 
   }
@@ -117,9 +125,9 @@ negbinomial(lmu = "loge", lk = "loge", emu = list(), ek = list(),
   Integer valued vector, usually assigned \eqn{-2} or \eqn{2} if used
   at all.  Specifies which of the two linear/additive predictors are
   modelled as an intercept only. By default, the \eqn{k} parameter
-  (after \code{lk} is applied) is modelled as a single unknown
+  (after \code{lsize} is applied) is modelled as a single unknown
   number that is estimated.  It can be modelled as a function of the
-  explanatory variables by setting \code{zero=NULL}. A negative value
+  explanatory variables by setting \code{zero = NULL}. A negative value
   means that the value is recycled, so setting \eqn{-2} means all \eqn{k}
   are intercept-only.
   See \code{\link{CommonVGAMffArguments}} for more information.
@@ -133,7 +141,8 @@ negbinomial(lmu = "loge", lk = "loge", emu = list(), ek = list(),
   distributed.
   There are several common parametrizations of the negative binomial
   distribution.
-  The one used here uses the mean \eqn{\mu}{mu} and an \emph{index} parameter
+  The one used by \code{negbinomial()} uses the
+  mean \eqn{\mu}{mu} and an \emph{index} parameter
   \eqn{k}, both which are positive.
   Specifically, the density of a random variable \eqn{Y} is 
   \deqn{f(y;\mu,k) ~=~ {y + k - 1 \choose y} \,
@@ -152,48 +161,64 @@ negbinomial(lmu = "loge", lk = "loge", emu = list(), ek = list(),
   \eqn{E(Y)}.
   It is common for some to use \eqn{\alpha=1/k}{alpha=1/k} as the
   ancillary or heterogeneity parameter;
-  so common alternatives for \code{lk} are
+  so common alternatives for \code{lsize} are
   \code{\link{nloge}} and
   \code{\link{reciprocal}}.
 
 
+  For \code{polya} the density is
+  \deqn{f(y;p,k) ~=~ {y + k - 1 \choose y} \,
+    \left( 1 - p \right)^y\,
+    p^k }{%
+    f(y;p,k) = C_{y}^{y + k - 1}
+    [1 - p]^y p^k}
+  where \eqn{y=0,1,2,\ldots},
+  and \eqn{0 < p < 1}{0 < p < 1} and \eqn{k > 0}.
+
+
   The negative binomial distribution can be coerced into the
-  classical GLM framework with one of the parameters being of
-  interest and the other treated as a nuisance/scale parameter
-  (this is implemented in the MASS library). This \pkg{VGAM}
-  family function \code{negbinomial} treats both parameters
-  on the same footing, and estimates them both by full maximum
-  likelihood estimation.  Simulated Fisher scoring is employed
-  as the default (see the \code{nsimEIM} argument).
+  classical GLM framework with one of the parameters being
+  of interest and the other treated as a nuisance/scale
+  parameter (this is implemented in the MASS library). The
+  \pkg{VGAM} family function \code{negbinomial} treats both
+  parameters on the same footing, and estimates them both
+  by full maximum likelihood estimation.  Simulated Fisher
+  scoring is employed as the default (see the \code{nsimEIM}
+  argument).
 
 
-  The parameters \eqn{\mu}{mu} and \eqn{k} are independent (diagonal EIM),
-  and the confidence region for \eqn{k} is extremely skewed so that its
-  standard error is often of no practical use. The parameter \eqn{1/k}
-  has been used as a measure of aggregation.
+  The parameters \eqn{\mu}{mu} and \eqn{k} are independent
+  (diagonal EIM), and the confidence region for \eqn{k}
+  is extremely skewed so that its standard error is often
+  of no practical use. The parameter \eqn{1/k} has been
+  used as a measure of aggregation.
 
 
-  This \pkg{VGAM} function handles \emph{multivariate} responses, so
-  that a matrix can be used as the response. The number of columns is the
-  number of species, say, and setting \code{zero=-2} means that \emph{all}
-  species have a \eqn{k} equalling a (different) intercept only.
+  These \pkg{VGAM} family functions handle
+  \emph{multivariate} responses, so that a matrix can be
+  used as the response. The number of columns is the number
+  of species, say, and setting \code{zero = -2} means that
+  \emph{all} species have a \eqn{k} equalling a (different)
+  intercept only.
 
 
 }
 \section{Warning}{
-  The Poisson model corresponds to \eqn{k} equalling infinity.
-  If the data is Poisson or close to Poisson, numerical
-  problems will occur. Possibly choosing a log-log link may
-  help in such cases, otherwise use \code{\link{poissonff}}
-  or \code{\link{quasipoissonff}}.
+  The Poisson model corresponds to \eqn{k} equalling
+  infinity.  If the data is Poisson or close to Poisson,
+  numerical problems will occur. Possibly choosing a
+  log-log link may help in such cases, otherwise use
+  \code{\link{poissonff}} or \code{\link{quasipoissonff}}.
 
 
-  This function is fragile; the maximum likelihood estimate of the
-  index parameter is fraught (see Lawless, 1987). In general, the
-  \code{\link{quasipoissonff}} is more robust than this function.
-  Other alternatives are to fit a NB-1 or RR-NB model; see Yee (2010).
-  Assigning values to the \code{ik} argument may lead to a local solution,
-  and smaller values are preferred over large values when using this argument.
+  These functions are fragile; the maximum likelihood
+  estimate of the index parameter is fraught (see Lawless,
+  1987). In general, the \code{\link{quasipoissonff}} is
+  more robust.  Other alternatives to \code{negbinomial} are
+  to fit a NB-1 or RR-NB model; see Yee (2011). Assigning
+  values to the \code{isize} argument may lead to a local
+  solution, and smaller values are preferred over large
+  values when using this argument.
 
 
   Yet to do: write a family function which uses the methods of moments
@@ -226,7 +251,7 @@ Fitting the negative binomial distribution to biological data.
 \bold{9}, 174--200.
 
 
-  Yee, T. W. (2010)
+  Yee, T. W. (2011)
   Two-parameter reduced-rank vector generalized linear models.
   \emph{In preparation}.
 
@@ -239,8 +264,24 @@ Fitting the negative binomial distribution to biological data.
 % negative binomial distribution. Currently, none of these others work
 % very well.
 
+
+  These two functions implement two common parameterizations
+  of the negative binomial (NB). Some people called the
+  NB with integer \eqn{k} the \emph{Pascal} distribution,
+  whereas if \eqn{k} is real then this is the \emph{Polya}
+  distribution. I don't. The one matching the details of
+  \code{\link[stats:NegBinomial]{rnbinom}} in terms of \eqn{p}
+  and \eqn{k} is \code{polya()}.
+
+
+  For \code{polya()} the code may fail when \eqn{p} is close
+  to 0 or 1. It is not yet compatible with \code{\link{cqo}}
+  or \code{\link{cao}}.
+
+
   Suppose the response is called \code{ymat}.
-  The diagonal element of the \emph{expected information matrix}
+  For \code{negbinomial()}
+  the diagonal element of the \emph{expected information matrix}
   (EIM) for parameter \eqn{k}
   involves an infinite series; consequently simulated Fisher scoring
   (see \code{nsimEIM}) is the default. This algorithm should definitely be
@@ -260,16 +301,16 @@ Fitting the negative binomial distribution to biological data.
   (in recommended decreasing order)
   \code{nsimEIM},
   \code{shrinkage.init},
-  \code{method.init},
+  \code{imethod},
   \code{Maxiter}, 
   \code{cutoff},
-  \code{ik},
+  \code{isize},
   \code{zero}.
 
 
-  This function can be used by the fast algorithm in
-  \code{\link{cqo}}, however, setting \code{EqualTolerances=TRUE} and
-  \code{ITolerances=FALSE} is recommended.
+  The function \code{negbinomial} can be used by the fast algorithm in
+  \code{\link{cqo}}, however, setting \code{EqualTolerances = TRUE} and
+  \code{ITolerances = FALSE} is recommended.
 
 
 % For \code{\link{cqo}} and \code{\link{cao}}, taking the square-root
@@ -278,7 +319,7 @@ Fitting the negative binomial distribution to biological data.
 
 
 % If the negative binomial family function \code{\link{negbinomial}}
-% is used for \code{cqo} then set \code{negbinomial(deviance=TRUE)}
+% is used for \code{cqo} then set \code{negbinomial(deviance = TRUE)}
 % is necessary. This means to minimize the deviance, which the fast
 % algorithm can handle.
 
@@ -290,8 +331,7 @@ Fitting the negative binomial distribution to biological data.
 
 
 
-  There are two special uses of this \pkg{VGAM} family function
-  for handling count data.
+  There are two special uses of \code{negbinomial} for handling count data.
   Firstly,
   when used by \code{\link{rrvglm}}  this 
   results in a continuum of models in between and
@@ -308,8 +348,8 @@ Fitting the negative binomial distribution to biological data.
 
 
   Secondly,
-  the use of this \pkg{VGAM} family function with \code{parallel = TRUE}
-  and by \code{\link{vglm}}
+  the use of \code{negbinomial} with \code{parallel = TRUE}
+  inside \code{\link{vglm}}
   can result in a model similar to \code{\link{quasipoissonff}}.
   This is named the \emph{NB-1} model.
   The dispersion parameter is estimated by MLE whereas
@@ -349,16 +389,16 @@ coef(fit, matrix = TRUE)
 Coef(fit)
 
 # Example 2: simulated data with multivariate response
-ndata <- data.frame(x = runif(nn <- 500))
-ndata <- transform(ndata, y1 = rnbinom(nn, mu = exp(3+x), size = exp(1)),
-                          y2 = rnbinom(nn, mu = exp(2-x), size = exp(0)))
-fit1 <- vglm(cbind(y1, y2) ~ x, negbinomial, ndata, trace = TRUE)
+ndata <- data.frame(x2 = runif(nn <- 500))
+ndata <- transform(ndata, y1 = rnbinom(nn, mu = exp(3+x2), size = exp(1)),
+                          y2 = rnbinom(nn, mu = exp(2-x2), size = exp(0)))
+fit1 <- vglm(cbind(y1, y2) ~ x2, negbinomial, ndata, trace = TRUE)
 coef(fit1, matrix = TRUE)
 
 # Example 3: large counts so definitely use the nsimEIM argument
-ndata <- transform(ndata, y3 = rnbinom(nn, mu = exp(12+x), size = exp(1)))
+ndata <- transform(ndata, y3 = rnbinom(nn, mu = exp(12+x2), size = exp(1)))
 with(ndata, range(y3))  # Large counts
-fit2 <- vglm(y3 ~ x, negbinomial(nsimEIM = 100), ndata, trace = TRUE)
+fit2 <- vglm(y3 ~ x2, negbinomial(nsimEIM = 100), ndata, trace = TRUE)
 coef(fit2, matrix = TRUE)
 
 # Example 4: a NB-1 to estimate a negative binomial with Var(Y) = phi0 * mu
@@ -375,7 +415,7 @@ nb1 <- vglm(y3 ~ x2 + x3, negbinomial(parallel = TRUE, zero = NULL),
             mydata, trace = TRUE)
 # Extracting out some quantities:
 cnb1 <- coef(nb1, matrix = TRUE)
-mydiff <- (cnb1["(Intercept)", "log(k)"] - cnb1["(Intercept)", "log(mu)"])
+mydiff <- (cnb1["(Intercept)", "log(size)"] - cnb1["(Intercept)", "log(mu)"])
 delta0.hat <- exp(mydiff)
 (phi.hat <- 1 + 1 / delta0.hat)  # MLE of phi
 summary(nb1)
diff --git a/man/normal1.Rd b/man/normal1.Rd
index 94701aa..0d7ca5a 100644
--- a/man/normal1.Rd
+++ b/man/normal1.Rd
@@ -1,7 +1,7 @@
 \name{normal1}
 \alias{normal1}
 %- Also NEED an '\alias' for EACH other topic documented here.
-\title{ Univariate normal distribution }
+\title{ Univariate Normal Distribution }
 \description{
   Maximum likelihood estimation of the two parameters of a univariate
   normal distribution.
@@ -9,7 +9,7 @@
 }
 \usage{
 normal1(lmean = "identity", lsd = "loge",
-        emean = list(), esd = list(), method.init = 1, zero = -2)
+        emean = list(), esd = list(), imethod = 1, zero = -2)
 }
 %- maybe also 'usage' for other objects documented here.
 \arguments{
@@ -25,8 +25,9 @@ normal1(lmean = "identity", lsd = "loge",
   See \code{earg} in \code{\link{Links}} for general information.
 
   }
-  \item{method.init, zero}{ 
+  \item{imethod, zero}{ 
   See \code{\link{CommonVGAMffArguments}} for more information.
+  If \code{lmean = loge} then try \code{imethod = 2}.
 
   }
 
@@ -67,12 +68,13 @@ New York: Wiley-Interscience, Third edition.
     \code{\link{posnormal1}},
     \code{\link{mix2normal1}},
     \code{\link{tobit}},
-    \code{\link{cnormal1}},
+    \code{\link{cennormal1}},
     \code{\link{fnormal1}},
     \code{\link{skewnormal1}},
-    \code{\link{dcnormal1}},
+    \code{\link{dcennormal1}},
     \code{\link{huber}},
     \code{\link{studentt}},
+    \code{\link{binormal}},
     \code{\link[stats:Normal]{dnorm}}.
 
 }
diff --git a/man/notdocumentedyet.Rd b/man/notdocumentedyet.Rd
index c702bb6..589a95f 100644
--- a/man/notdocumentedyet.Rd
+++ b/man/notdocumentedyet.Rd
@@ -5,12 +5,24 @@
 %
 %
 %
-% 20110202; James Lauder work
-\alias{dexpgeom}
-\alias{pexpgeom}
-\alias{qexpgeom}
-\alias{rexpgeom}
+% 20110202; 20110317; James Lauder work
+%\alias{dexpgeom}
+%\alias{pexpgeom}
+%\alias{qexpgeom}
+%\alias{rexpgeom}
+%\alias{expgeometric}
 %
+%\alias{dweibull3}
+%\alias{pweibull3}
+%\alias{qweibull3}
+%\alias{rweibull3}
+%\alias{weibull3}
+%
+%
+%
+% 20110321; misc. datasets.
+\alias{fibre1.5}
+\alias{fibre15}
 %
 %
 % 20110202; for Melbourne; these include datasets.
@@ -30,6 +42,9 @@
 %
 %
 %
+%20110411
+\alias{dbinorm}
+%
 %20090330
 \alias{dclogloglap}
 \alias{dlogitlap}
@@ -408,7 +423,7 @@
 % \alias{vgam.match}
 % \alias{vgam.nlchisq}
 % \alias{vgety}
-% \alias{vglm.fit}
+\alias{vglm.fit}
 \alias{vglm.garma.control}
 \alias{vglm.multinomial.control}
 \alias{vglm.multinomial.deviance.control}
@@ -439,6 +454,7 @@
 %
 \alias{Coef.uqo-class}
 \alias{cao-class}
+\alias{rcam0-class}
 \alias{rcam-class}
 \alias{grc-class}
 \alias{qrrvglm-class}
diff --git a/man/pareto1.Rd b/man/pareto1.Rd
index c6b0881..b407b0b 100644
--- a/man/pareto1.Rd
+++ b/man/pareto1.Rd
@@ -10,9 +10,9 @@
 
 }
 \usage{
-pareto1(lshape = "loge", earg=list(), location=NULL)
-tpareto1(lower, upper, lshape = "loge", earg=list(), ishape=NULL,
-         method.init=1)
+pareto1(lshape = "loge", earg = list(), location = NULL)
+tpareto1(lower, upper, lshape = "loge", earg = list(), ishape = NULL,
+         imethod = 1)
 }
 %- maybe also 'usage' for other objects documented here.
 \arguments{
@@ -21,11 +21,13 @@ tpareto1(lower, upper, lshape = "loge", earg=list(), ishape=NULL,
   See \code{\link{Links}} for more choices.
   A log link is the default because \eqn{k} is positive.
 
+
   }
   \item{earg}{
   List. Extra argument for the link.
   See \code{earg} in \code{\link{Links}} for general information.
 
+
   }
   \item{lower, upper}{
   Numeric.
@@ -40,6 +42,7 @@ tpareto1(lower, upper, lshape = "loge", earg=list(), ishape=NULL,
   A \code{NULL} means a value is obtained internally.
   If failure to converge occurs try specifying a value, e.g., 1 or 2.
 
+
   }
   \item{location}{
   Numeric. The parameter \eqn{\alpha}{alpha} below.
@@ -48,12 +51,14 @@ tpareto1(lower, upper, lshape = "loge", earg=list(), ishape=NULL,
   estimation, which means \code{min(y)} where \code{y} is the response
   vector.
 
+
   }
-  \item{method.init}{
+  \item{imethod}{
   An integer with value \code{1} or \code{2} which
   specifies the initialization method. If failure to converge occurs
   try the other value, or else specify a value for \code{ishape}.
 
+
   }
 }
 \details{
@@ -67,16 +72,16 @@ tpareto1(lower, upper, lshape = "loge", earg=list(), ishape=NULL,
 
   The Pareto distribution, which is used a lot in economics,
   has a probability density function that can be written
-  \deqn{f(y) = k \alpha^k / y^{k+1}}{%
+  \deqn{f(y) = k  \alpha^k / y^{k+1}}{%
         f(y) = k * alpha^k / y^(k+1)}
   for \eqn{0 < \alpha < y}{0< alpha < y} and \eqn{k>0}.
   The \eqn{\alpha}{alpha} is known as the location parameter, and 
   \eqn{k} is known as the shape parameter.
   The mean of \eqn{Y} is
-  \eqn{\alpha k/(k-1)}{alpha*k/(k-1)} provided \eqn{k>1}.
+  \eqn{\alpha k/(k-1)}{alpha*k/(k-1)} provided \eqn{k > 1}.
   Its variance is
   \eqn{\alpha^2 k /((k-1)^2 (k-2))}{alpha^2 k /((k-1)^2 (k-2))}
-  provided \eqn{k>2}.
+  provided \eqn{k > 2}.
 
 
   The upper truncated Pareto distribution
@@ -99,23 +104,26 @@ tpareto1(lower, upper, lshape = "loge", earg=list(), ishape=NULL,
   The object is used by modelling functions such as \code{\link{vglm}},
   and \code{\link{vgam}}.
 
+
 }
 \references{ 
   Evans, M., Hastings, N. and Peacock, B. (2000)
   \emph{Statistical Distributions},
   New York: Wiley-Interscience, Third edition.
 
+
   Aban, I. B., Meerschaert, M. M. and Panorska, A. K. (2006)
   Parameter estimation for the truncated Pareto distribution,
   \emph{Journal of the American Statistical Association},
   \bold{101}(473),
   270--277.
 
+
 }
 \author{ T. W. Yee }
 \note{
-  Outside of economics, the Pareto distribution is known as the Bradford
-  distribution.
+  Outside of economics, the Pareto distribution is known as the
+  Bradford distribution.
 
 
   For \code{pareto1},
@@ -123,8 +131,8 @@ tpareto1(lower, upper, lshape = "loge", earg=list(), ishape=NULL,
   then the fitted values will be \code{NA}s.
   Also, \code{pareto1} fits the Pareto(I) distribution.
   See \code{\link{paretoIV}} for the more general Pareto(IV/III/II)
-  distributions, but there is a slight change in notation: \eqn{s=k}
-  and \eqn{b=\alpha}{b=alpha}.
+  distributions, but there is a slight change in notation: \eqn{s = k}
+  and \eqn{b=\alpha}{b = alpha}.
 
 
   In some applications the Pareto law is truncated by a 
@@ -136,6 +144,7 @@ tpareto1(lower, upper, lshape = "loge", earg=list(), ishape=NULL,
   the usual properties of MLEs. 
   Aban (2006) discusses other inferential details.
 
+
 }
 \section{Warning }{
   The usual or unbounded Pareto distribution has two parameters
@@ -157,29 +166,30 @@ tpareto1(lower, upper, lshape = "loge", earg=list(), ishape=NULL,
   \code{\link{paretoIV}},
   \code{\link{gpd}}.
 
+
 }
 \examples{
-alpha = 2; k = exp(3)
-pdat = data.frame(y = rpareto(n=1000, location=alpha, shape=k))
-fit = vglm(y ~ 1, pareto1, pdat, trace=TRUE)
+alpha = 2; kay = exp(3)
+pdat = data.frame(y = rpareto(n = 1000, location = alpha, shape = kay))
+fit = vglm(y ~ 1, pareto1, pdat, trace = TRUE)
 fit at extra   # The estimate of alpha is here
 head(fitted(fit))
 with(pdat, mean(y))
-coef(fit, matrix=TRUE)
+coef(fit, matrix = TRUE)
 summary(fit)     # Standard errors are incorrect!!
 
 # Here, alpha is assumed known
-fit2 = vglm(y ~ 1, pareto1(location=alpha), pdat, trace=TRUE, crit="c")
+fit2 = vglm(y ~ 1, pareto1(location = alpha), pdat, trace = TRUE, crit = "c")
 fit2 at extra   # alpha stored here
 head(fitted(fit2))
-coef(fit2, matrix=TRUE)
-summary(fit2)    # Standard errors are ok
+coef(fit2, matrix = TRUE)
+summary(fit2)    # Standard errors are okay
 
 # Upper truncated Pareto distribution
-lower = 2; upper = 8; k = exp(2)
-pdat3 = data.frame(y = rtpareto(n=100, lower=lower, upper=upper, shape=k))
-fit3 = vglm(y ~ 1, tpareto1(lower, upper), pdat3, trace=TRUE, cri="c")
-coef(fit3, matrix=TRUE)
+lower = 2; upper = 8; kay = exp(2)
+pdat3 = data.frame(y = rtpareto(n = 100, lower = lower, upper = upper, shape = kay))
+fit3 = vglm(y ~ 1, tpareto1(lower, upper), pdat3, trace = TRUE, cri = "c")
+coef(fit3, matrix = TRUE)
 c(fit3 at misc$lower, fit3 at misc$upper)
 }
 \keyword{models}
diff --git a/man/paretoIV.Rd b/man/paretoIV.Rd
index 1ba2e8d..d060f73 100644
--- a/man/paretoIV.Rd
+++ b/man/paretoIV.Rd
@@ -13,7 +13,7 @@
 \usage{
 paretoIV(location=0, lscale="loge", linequality="loge", lshape="loge",
          escale=list(), einequality=list(), eshape=list(),
-         iscale=1, iinequality=1, ishape=NULL, method.init=1)
+         iscale=1, iinequality=1, ishape=NULL, imethod=1)
 paretoIII(location=0, lscale="loge", linequality="loge",
           escale=list(), einequality=list(),
           iscale=NULL, iinequality=NULL)
@@ -50,7 +50,7 @@ paretoII(location=0, lscale="loge", lshape="loge",
   some alternative initial values.
 
   }
-  \item{method.init}{
+  \item{imethod}{
   Method of initialization for the shape parameter.
   Currently only values 1 and 2 are available.
   Try the other value if convergence failure occurs.
@@ -69,29 +69,35 @@ paretoII(location=0, lscale="loge", lshape="loge",
   \eqn{g} the \emph{inequality} parameter, and 
   \eqn{s} the \emph{shape} parameter.
 
+
   The location parameter is assumed known otherwise the Pareto(IV)
   distribution will not be a regular family.  This assumption is not too
   restrictive in modelling because in typical applications this parameter
   is known, e.g., in insurance and  reinsurance it is pre-defined by a
   contract and can be represented as a deductible or a retention level.
 
+
   The inequality parameter is so-called because of its interpretation
   in the economics context. If we choose a unit shape parameter value
   and a zero location parameter value then the inequality parameter
   is the Gini index of inequality, provided \eqn{g \leq 1}{g<=1}.
 
+
   The fitted values are currently \code{NA} because I haven't worked
   out what the mean of \eqn{Y} is yet.
 
+
 % The mean of \eqn{Y} is
 % \eqn{\alpha k/(k-1)}{alpha*k/(k-1)} provided \eqn{k>1}.
 % Its variance is
 % \eqn{\alpha^2 k /((k-1)^2 (k-2))}{alpha^2 k /((k-1)^2 (k-2))}
 % provided \eqn{k>2}.
 
+
 % The maximum likelihood estimator for the location parameter is
 % \code{min(y)}, i.e., the smallest response value. 
 
+
   There are a number of special cases of the Pareto(IV) distribution.
   These include the Pareto(I), Pareto(II), Pareto(III), and Burr family
   of distributions.
@@ -108,12 +114,14 @@ paretoII(location=0, lscale="loge", lshape="loge",
   but there is a slight change in notation: \eqn{s=k} and
   \eqn{b=\alpha}{b=alpha}.
 
+
 }
 \value{
   An object of class \code{"vglmff"} (see \code{\link{vglmff-class}}).
   The object is used by modelling functions such as \code{\link{vglm}},
   and \code{\link{vgam}}.
 
+
 }
 \references{ 
 Brazauskas, V. (2003)
@@ -121,16 +129,19 @@ Information matrix for Pareto(IV), Burr, and related distributions.
 \emph{Comm.\ Statist.\ Theory and Methods}
 \bold{32}, 315--325.
 
+
 Arnold, B. C. (1983)
 \emph{Pareto Distributions}.
 Fairland, Maryland: International Cooperative Publishing House.
 
+
 }
 \author{ T. W. Yee }
 \note{ 
   The \code{extra} slot of the fitted object has a component called
   \code{"location"} which stores the location parameter value(s).
 
+
 }
 %\section{Warning }{
 %  The Pareto(IV) distribution is very general,
@@ -146,6 +157,8 @@ Fairland, Maryland: International Cooperative Publishing House.
   \code{\link{ParetoIV}},
   \code{\link{pareto1}},
   \code{\link{gpd}}.
+
+
 }
 \examples{
 pdat = data.frame(y=rparetoIV(2000, scal=exp(1), ineq=exp(-0.3), shap=exp(1)))
diff --git a/man/plackett.Rd b/man/plackett.Rd
index 64e37a3..b9ff39f 100644
--- a/man/plackett.Rd
+++ b/man/plackett.Rd
@@ -8,7 +8,7 @@
 
 }
 \usage{
-plackett(link="loge", earg=list(), ioratio=NULL, method.init=1, nsimEIM=200)
+plackett(link="loge", earg=list(), ioratio=NULL, imethod=1, nsimEIM=200)
 }
 %- maybe also 'usage' for other objects documented here.
 \arguments{
@@ -28,7 +28,7 @@ plackett(link="loge", earg=list(), ioratio=NULL, method.init=1, nsimEIM=200)
   If a convergence failure occurs try assigning a value or a different value.
 
   }
-  \item{method.init}{
+  \item{imethod}{
   An integer with value \code{1} or \code{2} which
   specifies the initialization method for the parameter.
   If failure to converge occurs try another value
diff --git a/man/plotrcam0.Rd b/man/plotrcam0.Rd
index 53bcfce..860aad9 100644
--- a/man/plotrcam0.Rd
+++ b/man/plotrcam0.Rd
@@ -6,97 +6,119 @@
 
 }
 \description{
-  Produces the main effects plot for Row-Column Association
-  Models (RCAMs) in \code{\link{rcam}} with rank zero for some
-  family functions.  The main result of the rank-zero \bold{RCAM}
-  models is the plot of main effects (row and column).
+  Produces a main effects plot for Row-Column Association
+  Models (RCAMs).
 
 }
 \usage{
-  plotrcam0(object, rfirst = 1, cfirst = 1,
+  plotrcam0(object, centered = TRUE, whichplots = c(1, 2),
+            hline0 = TRUE, hlty = "dashed", hcol = par()$col, hlwd = par()$lwd,
+            rfirst = 1, cfirst = 1,
             rtype = "h", ctype = "h",
-            rlas = 1, rcex.lab = 1,
-            rcex.axis = 1, rlabels = FALSE,
-            rtick = FALSE, clas = 1, ccex.lab = 1,
-            ccex.axis = 1, clabels = FALSE, ctick = FALSE,
+            rcex.lab = 1, rcex.axis = 1, rtick = FALSE,
+            ccex.lab = 1, ccex.axis = 1, ctick = FALSE,
             rmain = "Row effects", rsub = "",
-            rxlabel = "", rylabel = "Row effects",
-            cmain = "Column effects", csub = "", cxlabel= "",
-            cylabel = "Column effects",
-            rcol = par()$col, ccol = par()$col,
-            ...)
+            rxlab = "", rylab = "Row effects",
+            cmain = "Column effects", csub = "",
+            cxlab= "", cylab = "Column effects",
+            rcol = par()$col, ccol = par()$col, ...)
 
 }
 \arguments{
 \item{object}{   
-  An \code{\link{rcam}} object. 
+  An \code{\link{rcam}} object.
+  This should be of rank-0, i.e., main effects only and no
+  interactions.
 
 }
-\item{rfirst, cfirst}{  
-  \code{rfirst} is the level of row that is placed first in the
-  row effect plot, and \code{cfirst} for the column effect.
+\item{whichplots}{  
+  Numeric, describing which plots are to be plotted.
+  The row effects plot is 1 and the column effects plot is 2.
+  Set the value \code{0}, say, for no plots at all.
 
-} 
-\item{rmain, cmain}{  
-  \code{rmain} is a character of name for main label in row effect
-  plot, and \code{cmain} for the column one.
+}
+\item{centered}{  
+  Logical.
+  If \code{TRUE} then the row and column effects are centered
+  (but not scaled) by \code{\link[base]{scale}}.
+  If \code{FALSE} then the raw effects are used (of which
+  the first are zero by definition).
 
 }
-\item{rtype, ctype}{
-  See \code{type} argument of 
-  \code{\link[graphics:plot]{plot}}.
+\item{hline0, hlty, hcol, hlwd}{  
+  \code{hline0} is logical. If \code{TRUE} then a horizontal line is
+  plotted at 0 and the other arguments describe this line.
+  Probably having \code{hline0 = TRUE} only makes sense when
+  \code{centered = TRUE}.
 
 }
-\item{rlabels, clabels}{
-  Currently not functioning properly.
-  zz.
-  See \code{labels} argument of 
-  \code{\link[graphics:plot]{plot}}.
+\item{rfirst, cfirst}{  
+  \code{rfirst} is the level of row that is placed first in the
+  row effects plot, etc.
+
+} 
+\item{rmain, cmain}{  
+  Character.
+  \code{rmain} is the main label in the row effects plot, etc.
 
 }
-\item{rsub, csub}{
-  See \code{sub} argument of 
+\item{rtype, ctype, rsub, csub}{
+  See the \code{type} and \code{sub} arguments of 
   \code{\link[graphics:plot]{plot}}.
 
 }
-\item{rxlabel, rylabel, cxlabel, cylabel}{
-  \code{rxlabel} is a character of names for x-axis label and
-  \code{rylabel} is for the y-axis in the row effect plot.
-  And \code{cxlabel} and \code{ylabel} repectivrly name the
-  x and y label on the column effect plot.
+%\item{rlabels, clabels}{
+% rlabels = FALSE, clabels = FALSE,
+%  Currently not functioning properly.
+%  zz.
+%  See \code{labels} argument of 
+%  \code{\link[graphics:plot]{plot}}.
+%
+%}
+\item{rxlab, rylab, cxlab, cylab}{
+  Character.
+  For the row effects plot,
+  \code{rxlab} is \code{xlab} and
+  \code{rylab} is \code{ylab};
+  see \code{\link[graphics:par]{par}}.
+  Ditto for \code{cxlab} and \code{cylab} for the column effects plot.
 
 }
 \item{rcex.lab, ccex.lab}{  
-  Both are numeric.
-  \code{rcex.lab} is number of character expansion for row effect
-  label, and \code{ccex.lab} for the column one.
+  Numeric.
+  \code{rcex.lab} is \code{cex} for the row effects plot label,
+  etc.
 
 }
 \item{rcex.axis, ccex.axis}{
-  Both are numeric.
-  \code{rcex.axis} is number of character expansion for the row
-  axis label, and \code{ccex.axis } for the column one.
+  Numeric.
+  \code{rcex.axis} is the \code{cex} argument for the row effects axis label,
+  etc.
 
 }
 
 \item{rtick, ctick}{
-  Logical. \code{rtick = TRUE}  means give ticks in row effect
-  plot, and \code{ctick} for the column one.
+  Logical.
+  If \code{rtick = TRUE} then add ticks to the row effects plot, etc.
 
 }
 \item{rcol, ccol}{
-  \code{rcol} give a colour for the row effect, and \code{ccol}
-  for the column one.
+  \code{rcol} give a colour for the row effects plot,
+  etc.
 
 }
 %\item{llwd}{
 %  Fed into \code{lwd} of \code{\link[graphics:par]{par}}.
 %
 %}
-\item{rlas, clas}{
-  Fed into \code{las} of \code{\link[graphics:par]{par}}.
-
-}
+%\item{rlas, clas}{
+%  Fed into \code{las} of \code{\link[graphics:par]{par}}.
+%
+%}
+%\item{main}{
+%  Character. A common title.
+%
+%}
 %\item{type}{
 %  Fed into \code{type} of \code{\link[graphics:plot]{plot}}.
 %
@@ -107,32 +129,53 @@
 }
 
 }
+\details{
+  This function plots the row and column effects of a rank-0 RCAM.
+  As the result is a main effects plot of a regression analysis, its
+  interpretation when \code{centered = FALSE} is relative
+  to the baseline (reference level) of a row and column, and
+  should also be considered in light of the link function used.
+  Many arguments that start with \code{"r"} refer to the row
+  effects plot, and \code{"c"} for the column
+  effects plot.
+
+
+}
+\value{
+  The original object with the \code{post} slot
+  assigned additional information from the plot.
+
+
+}
+
+
 
 \note{
-  This function plots the rows and columns effect of a rank-0 RCAM.
-  As the result is a main effect plot of a regression analysis, its
-  interpretation relative to the baseline or reference level of row
-  and column and should be considered the link function was used.
+  This function should be only used to plot the object of rank-0 RCAM.
+  If the rank is positive then it will issue a warning. 
 
 
-  This function should be only used to plots the object of rank-0 RCAM.
-  If it use to plot non-rank-0 RCAM object, it will issue a warning. 
+  Using an argument \code{ylim} will mean the row and column
+  effects are plotted on a common scale;
+  see \code{\link[graphics]{plot.window}}.
 
 
+% This function is not finished yet.
+% There may be several bugs!
+
 }
 
 
 \author{
   T. W. Yee,
   A. F. Hadi.
-}
-
-\section{Warning}{
-  This function is not finished yet.
-  There are many bugs!
 
 }
 
+%\section{Warning}{
+%
+%}
+
 
 \seealso{
   \code{\link{moffset}} 
@@ -141,33 +184,33 @@
 
 }
 \examples{
-# poissonff example
-fit0 <- rcam(Rcam(moffset(alcoff), rbaseline = "11", cbaseline = "Monday"),
-             fam = poissonff)
-\dontrun{par(oma = c(0,0,4,0), mfrow = c(1, 2))
-plotrcam0(fit0) }
-
-# negbinomial example
-fit1 <- rcam(Rcam(moffset(alcoff), rbaseline = "11", cbaseline = "Monday"),
-             fam = negbinomial)
-\dontrun{par(oma = c(0,0,4,0), mfrow = c(1, 2))
-plotrcam0(fit1) }
-
-# normal1 example
-fit2 <- rcam(Rcam(moffset(alcoff), rbaseline = "11", cbaseline = "Monday"),
-             fam = normal1)
-\dontrun{par(oma = c(0,0,4,0), mfrow = c(1, 2))
-plotrcam0(fit2) }
-
-# medpolish example
-fit3 <- rcam(Rcam(moffset(alcoff), rbaseline = "11", cbaseline = "Monday"),
-             fam  =  alaplace2(tau  =  0.5, intparloc  =  TRUE))
-\dontrun{par(oma = c(0,0,4,0), mfrow = c(1, 2))
-plotrcam0(fit3) }
-
-# zipoissonff example
-fit4 <- rcam(Rcam(moffset(crashp), rbaseline = "11", cbaseline = "Monday"),
-             fam  =  zipoissonff, Rank  =  0, trace = TRUE, crit = "l")
-\dontrun{par(oma = c(0,0,4,0), mfrow = c(1, 2))
-plotrcam0(fit4) }
+alcoff.e <- moffset(alcoff, "6", "Monday", postfix = "*") # Effective day
+fit0 <- rcam(alcoff.e, family = poissonff)
+\dontrun{par(oma = c(0, 0, 4, 0), mfrow = 1:2) # For all plots below too
+ii = plot(fit0, rcol = "blue", ccol = "orange",
+          lwd = 4, ylim = c(-2, 2),  # A common ylim
+          cylab = "Effective daily effects", rylab = "Hourly effects",
+          rxlab = "Hour", cxlab = "Effective day")
+ii at post # Endowed with additional information
+}
+
+# Negative binomial example
+fit1 <- rcam(alcoff.e, negbinomial, trace = TRUE)
+\dontrun{ plot(fit1, ylim = c(-2, 2)) }
+
+# Univariate normal example
+fit2 <- rcam(alcoff.e, normal1, trace = TRUE)
+\dontrun{ plot(fit2, ylim = c(-200, 400)) }
+
+# Median-polish example
+fit3 <- rcam(alcoff.e, alaplace2(tau  =  0.5, intparloc  =  TRUE),
+             trace = TRUE)
+\dontrun{ plot(fit3, ylim = c(-200, 250)) }
+
+# Zero-inflated Poisson example on "crashp" (no 0s in alcoff)
+cbind(rowSums(crashp))  # Easy to see the data
+cbind(colSums(crashp))  # Easy to see the data
+fit4 <- rcam(Rcam(crashp, rbaseline = "5", cbaseline = "Sunday"),
+             zipoissonff, trace = TRUE)
+\dontrun{ plot(fit4, ylim = c(-3, 3)) }
 }
diff --git a/man/poissonff.Rd b/man/poissonff.Rd
index c272a3c..29c2602 100644
--- a/man/poissonff.Rd
+++ b/man/poissonff.Rd
@@ -11,7 +11,7 @@
 }
 \usage{
 poissonff(link = "loge", earg=list(), dispersion = 1, onedpar = FALSE,
-          imu=NULL, method.init=1, parallel = FALSE, zero = NULL)
+          imu=NULL, imethod=1, parallel = FALSE, zero = NULL)
 }
 %- maybe also 'usage' for other objects documented here.
 \arguments{
@@ -46,7 +46,7 @@ poissonff(link = "loge", earg=list(), dispersion = 1, onedpar = FALSE,
   A logical or formula. Used only if the response is a matrix.
 
   }
-  \item{imu, method.init}{
+  \item{imu, imethod}{
   See \code{\link{CommonVGAMffArguments}} for more information.
 
   }
diff --git a/man/poissonp.Rd b/man/poissonp.Rd
index 798c6ec..24d1fd1 100644
--- a/man/poissonp.Rd
+++ b/man/poissonp.Rd
@@ -9,7 +9,7 @@
 }
 \usage{
 poissonp(ostatistic, dimension=2, link="loge", earg=list(),
-         idensity=NULL, method.init=1)
+         idensity=NULL, imethod=1)
 }
 %- maybe also 'usage' for other objects documented here.
 \arguments{
@@ -40,7 +40,7 @@ poissonp(ostatistic, dimension=2, link="loge", earg=list(),
   Use this argument if convergence failure occurs.
 
   }
-  \item{method.init}{
+  \item{imethod}{
   An integer with value \code{1} or \code{2} which
   specifies the initialization method for \eqn{\lambda}{lambda}.
   If failure to converge occurs try another value
diff --git a/man/posbinomUC.Rd b/man/posbinomUC.Rd
index 0681db3..0f73356 100644
--- a/man/posbinomUC.Rd
+++ b/man/posbinomUC.Rd
@@ -74,7 +74,7 @@ rposbinom(n, size, prob)
 }
 \examples{
 prob = 0.2; size = 10
-y = rposbinom(n=1000, size, prob)
+y = rposbinom(n = 1000, size, prob)
 
 table(y)
 mean(y)  # Sample mean
@@ -93,6 +93,22 @@ round(dposbinom(1:10, size, prob) * 1000) # Should be similar
         main=paste("Positive-binomial(", size, ",", prob, ") (blue) vs",
         " Binomial(", size, ",", prob, ") (green)", sep=""),
         names.arg = as.character(0:size), las=1) }
+
+# Simulated data example
+nn = 1000; sizeval1 = 10; sizeval2 = 20
+pdat <- data.frame(x2 = seq(0, 1, length = nn))
+pdat <- transform(pdat, prob1  = logit(-2 + 2 * x2, inverse = TRUE),
+                        prob2  = logit(-1 + 1 * x2, inverse = TRUE),
+                        sizev1 = rep(sizeval1, len = nn),
+                        sizev2 = rep(sizeval2, len = nn))
+pdat <- transform(pdat, y1 = rposbinom(nn, size = sizev1, prob = prob1),
+                        y2 = rposbinom(nn, size = sizev2, prob = prob2))
+with(pdat, table(y1))
+with(pdat, table(y2))
+# Multivariate response
+fit2  = vglm(cbind(y1, y2) ~ x2, posbinomial(mv = TRUE),
+             trace  = TRUE, pdat, weight = cbind(sizev1, sizev2))
+coef(fit2, matrix = TRUE)
 }
 \keyword{distribution}
 
diff --git a/man/posbinomial.Rd b/man/posbinomial.Rd
index 7c5ebee..f243fd6 100644
--- a/man/posbinomial.Rd
+++ b/man/posbinomial.Rd
@@ -6,18 +6,18 @@
   Fits a positive binomial distribution.
 }
 \usage{
-posbinomial(link = "logit", earg=list())
+posbinomial(link = "logit", earg = list(),
+            mv = FALSE, parallel = FALSE, zero = NULL)
 }
 %- maybe also 'usage' for other objects documented here.
 \arguments{
-  \item{link}{
-  Link function for the usual probability parameter.   
-  See \code{\link{Links}} for more choices.
+  \item{link, earg}{
+  Link function and its extra argument for the usual probability parameter.
+  See \code{\link{CommonVGAMffArguments}} for more information.
 
   }
-  \item{earg}{
-  List. Extra argument for the link.
-  See \code{earg} in \code{\link{Links}} for general information.
+  \item{mv, parallel, zero}{
+  See \code{\link{CommonVGAMffArguments}} for more information.
 
   }
 }
@@ -26,6 +26,9 @@ posbinomial(link = "logit", earg=list())
   but with the probability of zero being zero.
   Thus the other probabilities are scaled up
   (i.e., divided by \eqn{1-P(Y=0)}{1-P(Y=0)}).
+  The fitted values are the ordinary binomial distribution
+  fitted values, i.e., the usual mean.
+
 
 }
 \value{
@@ -33,6 +36,7 @@ posbinomial(link = "logit", earg=list())
   The object is used by modelling functions such as \code{\link{vglm}},
   and \code{\link{vgam}}.
 
+
 }
 \references{
 Patil, G. P. (1962)
@@ -42,32 +46,50 @@ truncated binomial distribution.
 \emph{Biometrika},
 \bold{49}, 227--237.
 
+
 Documentation accompanying the \pkg{VGAM} package at
 \url{http://www.stat.auckland.ac.nz/~yee}
 contains further information and examples.
 
+
 }
 \author{ Thomas W. Yee }
+
 \note{
-The input for this family function is the same as
-\code{\link{binomialff}}.
+  The input for this family function is the same as
+  \code{\link{binomialff}}.
+
+
+  If \code{mv = TRUE} then each column of the matrix response
+  should be a count (the number of successes), and the
+  \code{weights} argument should be a matrix of the same dimension
+  as the response containing the number of trials.
+  If \code{mv = FALSE} then the response input should be the same
+  as \code{\link{binomialff}}.
+
+
+
+  Yet to be done: a \code{quasi.posbinomial} which estimates a
+  dispersion parameter.
+
 
-Yet to be done: a \code{quasi.posbinomial} which estimates a dispersion
-parameter.
 
 }
 
 \section{Warning }{
     Under- or over-flow may occur if the data is ill-conditioned.
 
+
 }
 \seealso{ 
     \code{\link{binomialff}}.
+
 }
 
 \examples{
 # Number of albinotic children in families with 5 kids (from Patil, 1962)
-akids = data.frame(y = c(rep(1,25), rep(2,23), rep(3,10), 4,5), n=rep(5,60))
+akids = data.frame(y = c(rep(1, 25), rep(2, 23), rep(3, 10), 4, 5),
+                   n = rep(5, 60))
 fit1 = vglm(cbind(y, n-y) ~ 1, posbinomial, akids, trace = TRUE)
 summary(fit1)
 Coef(fit1)   # = MLE of p = 0.3088
diff --git a/man/posnegbinomial.Rd b/man/posnegbinomial.Rd
index edfcee4..cc915e2 100644
--- a/man/posnegbinomial.Rd
+++ b/man/posnegbinomial.Rd
@@ -8,9 +8,9 @@
 
 }
 \usage{
-posnegbinomial(lmunb = "loge", lk = "loge", emunb = list(), ek = list(),
-               ik = NULL, zero = -2, cutoff = 0.995, shrinkage.init = 0.95,
-               method.init = 1)
+posnegbinomial(lmunb = "loge", lsize = "loge", emunb = list(), esize = list(),
+               isize = NULL, zero = -2, cutoff = 0.995, shrinkage.init = 0.95,
+               imethod = 1)
 }
 %- maybe also 'usage' for other objects documented here.
 \arguments{
@@ -20,22 +20,22 @@ posnegbinomial(lmunb = "loge", lk = "loge", emunb = list(), ek = list(),
   See \code{\link{Links}} for more choices.
 
   }
-  \item{lk}{ 
+  \item{lsize}{ 
   Parameter link function applied to the dispersion parameter,
   called \code{k}.
   See \code{\link{Links}} for more choices.
 
   }
-  \item{emunb, ek}{
+  \item{emunb, esize}{
   List. Extra argument for the respective links.
   See \code{earg} in \code{\link{Links}} for general information.
 
   }
-  \item{ik}{ 
+  \item{isize}{ 
   Optional initial value for \code{k}, an index parameter.
   The value \code{1/k} is known as a dispersion parameter.
   If failure to converge occurs try different values (and/or use
-  \code{method.init}).
+  \code{imethod}).
   If necessary this vector is recycled to length equal to the number
   of responses. 
   A value \code{NULL} means an initial value for each response is
@@ -46,13 +46,14 @@ posnegbinomial(lmunb = "loge", lk = "loge", emunb = list(), ek = list(),
   Integer valued vector, usually assigned \eqn{-2} or \eqn{2} if used
   at all.  Specifies which of the two linear/additive predictors are
   modelled as an intercept only. By default, the \code{k} parameter
-  (after \code{lk} is applied) is modelled as a single unknown
+  (after \code{lsize} is applied) is modelled as a single unknown
   number that is estimated.  It can be modelled as a function of
   the explanatory variables by setting \code{zero = NULL}.  A negative
   value means that the value is recycled, so setting \eqn{-2} means
   all \code{k} are intercept only.
   See \code{\link{CommonVGAMffArguments}} for more information.
 
+
   }
   \item{cutoff}{ 
   A numeric which is close to 1 but never exactly 1.  Used to
@@ -62,7 +63,7 @@ posnegbinomial(lmunb = "loge", lk = "loge", emunb = list(), ek = list(),
   \code{qnegbin(p)}.
 
   }
-  \item{shrinkage.init, method.init}{
+  \item{shrinkage.init, imethod}{
   See \code{\link{negbinomial}}.
 
   }
@@ -170,7 +171,7 @@ corbet <- data.frame(nindiv = 1:24,
 fit <- vglm(nindiv ~ 1, posnegbinomial, weights = ofreq, data = corbet)
 coef(fit, matrix = TRUE)
 Coef(fit)
-(khat <- Coef(fit)["k"])
+(khat <- Coef(fit)["size"])
 pdf2 <- dposnegbin(x = with(corbet, nindiv), mu = fitted(fit), size = khat)
 print( with(corbet, cbind(nindiv, ofreq, fitted = pdf2*sum(ofreq))), dig = 1)
 }
diff --git a/man/posnormUC.Rd b/man/posnormUC.Rd
index 7a1f72a..2fd914b 100644
--- a/man/posnormUC.Rd
+++ b/man/posnormUC.Rd
@@ -11,23 +11,29 @@
 
 }
 \usage{
-dposnorm(x, mean=0, sd=1, log=FALSE)
-pposnorm(q, mean=0, sd=1)
-qposnorm(p, mean=0, sd=1)
-rposnorm(n, mean=0, sd=1)
+dposnorm(x, mean = 0, sd = 1, log = FALSE)
+pposnorm(q, mean = 0, sd = 1)
+qposnorm(p, mean = 0, sd = 1)
+rposnorm(n, mean = 0, sd = 1)
 }
 \arguments{
   \item{x, q}{vector of quantiles.}
   \item{p}{vector of probabilities.}
   \item{n}{number of observations.
-  If \code{length(n) > 1} then the length is taken to be the number required. }
-  \item{mean, sd, log}{ see \code{\link[stats:Normal]{rnorm}}. }
+  If \code{length(n) > 1} then the length is taken to be the number required.
+
+  }
+  \item{mean, sd, log}{ see \code{\link[stats:Normal]{rnorm}}.
+
+  }
+
 }
 \value{
   \code{dposnorm} gives the density,
   \code{pposnorm} gives the distribution function,
   \code{qposnorm} gives the quantile function, and
   \code{rposnorm} generates random deviates.
+
 }
 \author{ T. W. Yee }
 \details{
@@ -44,20 +50,19 @@ rposnorm(n, mean=0, sd=1)
 
 }
 \examples{
-\dontrun{
-m =  0.8; x = seq(-1, 4, len=501)
-plot(x, dposnorm(x, m=m), type="l", ylim=0:1, las=1,
-     ylab=paste("posnorm(m=",m,", sd=1)"), col="blue",
-     main="Blue is density, red is cumulative distribution function",
-     sub="Purple lines are the 10,20,...,90 percentiles")
-lines(x, pposnorm(x, m=m), col="red")
-abline(h=0)
-probs = seq(0.1, 0.9, by=0.1)
-Q = qposnorm(probs, m=m)
-lines(Q, dposnorm(Q, m=m), col="purple", lty=3, type="h")
-lines(Q, pposnorm(Q, m=m), col="purple", lty=3, type="h")
-abline(h=probs, col="purple", lty=3)
-max(abs(pposnorm(Q, m=m) - probs)) # Should be 0
+\dontrun{ m =  0.8; x = seq(-1, 4, len = 501)
+plot(x, dposnorm(x, m = m), type = "l", ylim = 0:1, las = 1,
+     ylab = paste("posnorm(m = ", m, ", sd = 1)"), col = "blue",
+     main = "Blue is density, red is cumulative distribution function",
+     sub = "Purple lines are the 10,20,...,90 percentiles")
+lines(x, pposnorm(x, m = m), col = "red")
+abline(h = 0)
+probs = seq(0.1, 0.9, by = 0.1)
+Q = qposnorm(probs, m = m)
+lines(Q, dposnorm(Q, m = m), col = "purple", lty = 3, type = "h")
+lines(Q, pposnorm(Q, m = m), col = "purple", lty = 3, type = "h")
+abline(h = probs, col = "purple", lty = 3)
+max(abs(pposnorm(Q, m = m) - probs)) # Should be 0
 }
 }
 \keyword{distribution}
diff --git a/man/posnormal1.Rd b/man/posnormal1.Rd
index e03f6fb..d2109aa 100644
--- a/man/posnormal1.Rd
+++ b/man/posnormal1.Rd
@@ -6,8 +6,8 @@
   Fits a positive (univariate) normal distribution.
 }
 \usage{
-posnormal1(lmean="identity", lsd="loge", emean=list(), esd=list(),
-           imean=NULL, isd=NULL, nsimEIM = 100, zero=NULL)
+posnormal1(lmean = "identity", lsd = "loge", emean = list(), esd = list(),
+           imean = NULL, isd = NULL, nsimEIM = 100, zero = NULL)
 }
 %- maybe also 'usage' for other objects documented here.
 \arguments{
@@ -37,9 +37,9 @@ posnormal1(lmean="identity", lsd="loge", emean=list(), esd=list(),
   linear/additive predictors are modelled as intercepts only.
   The values must be from the set \{1,2\} corresponding
   respectively to \eqn{\mu}{mu}, \eqn{\sigma}{sigma}.
-  If \code{zero=NULL} then all linear/additive predictors are modelled as
+  If \code{zero = NULL} then all linear/additive predictors are modelled as
   a linear combination of the explanatory variables.
-  For many data sets having \code{zero=2} is a good idea.
+  For many data sets having \code{zero = 2} is a good idea.
 
   }
 }
@@ -97,20 +97,23 @@ posnormal1(lmean="identity", lsd="loge", emean=list(), esd=list(),
 
 }
 \seealso{ 
-    \code{\link{normal1}}.
+    \code{\link{normal1}},
+    \code{\link{tobit}}.
+
+
 }
 
 \examples{
-pndat = data.frame(m =  1.0, SD = exp(1.0))
-pndat = transform(pndat, y = rposnorm(n <- 1000, m=m, sd=SD))
+pdata = data.frame(m = 1.0, SD = exp(1.0))
+pdata = transform(pdata, y = rposnorm(n <- 1000, m = m, sd = SD))
 
-\dontrun{with(pndat, hist(y, prob=TRUE, border="blue",
-         main=paste("posnorm(m=",m[1],", sd=",round(SD[1],2),")"))) }
-fit = vglm(y ~ 1, fam=posnormal1, pndat, trace=TRUE)
-coef(fit, mat=TRUE)
+\dontrun{with(pdata, hist(y, prob = TRUE, border = "blue",
+         main = paste("posnorm(m =", m[1], ", sd =", round(SD[1], 2),")"))) }
+fit = vglm(y ~ 1, fam = posnormal1, pdata, trace = TRUE)
+coef(fit, matrix = TRUE)
 (Cfit = Coef(fit))
-mygrid = with(pndat, seq(min(y), max(y), len=200)) # Add the fit to the histogram
-\dontrun{lines(mygrid, dposnorm(mygrid, Cfit[1], Cfit[2]), col="red")}
+mygrid = with(pdata, seq(min(y), max(y), len = 200)) # Add the fit to the histogram
+\dontrun{lines(mygrid, dposnorm(mygrid, Cfit[1], Cfit[2]), col = "red")}
 }
 \keyword{models}
 \keyword{regression}
diff --git a/man/pospoisson.Rd b/man/pospoisson.Rd
index 0399f89..ff6fcac 100644
--- a/man/pospoisson.Rd
+++ b/man/pospoisson.Rd
@@ -7,7 +7,7 @@
 }
 \usage{
 pospoisson(link = "loge", earg = list(),
-           expected = TRUE, ilambda = NULL, method.init = 1)
+           expected = TRUE, ilambda = NULL, imethod = 1)
 }
 %- maybe also 'usage' for other objects documented here.
 \arguments{
@@ -32,7 +32,7 @@ pospoisson(link = "loge", earg = list(),
   A \code{NULL} means a value is computed internally.
 
   }
-  \item{method.init}{
+  \item{imethod}{
   An integer with value \code{1} or \code{2} or \code{3} which 
   specifies the initialization method for \eqn{\lambda}{lambda}.
   If failure to converge occurs try another value
diff --git a/man/propodds.Rd b/man/propodds.Rd
index 5518c10..f7af884 100644
--- a/man/propodds.Rd
+++ b/man/propodds.Rd
@@ -7,7 +7,7 @@
 
 }
 \usage{
-propodds(reverse=TRUE)
+propodds(reverse = TRUE)
 }
 \arguments{
 
@@ -28,7 +28,7 @@ propodds(reverse=TRUE)
   the \emph{parallelism} assumption ought to be checked,
   e.g., via a likelihood ratio test.
   This \pkg{VGAM} family function is merely a shortcut for
-  \code{cumulative(reverse=reverse, link="logit", parallel = TRUE)}.
+  \code{cumulative(reverse = reverse, link = "logit", parallel = TRUE)}.
   Please see \code{\link{cumulative}} for more details on this model.
 
 }
@@ -39,10 +39,6 @@ propodds(reverse=TRUE)
 
 }
 \references{
-Agresti, A. (2002)
-\emph{Categorical Data Analysis},
-2nd ed. New York: Wiley.
-
 
 Agresti, A. (2010)
 \emph{Analysis of Ordinal Categorical Data},
@@ -61,10 +57,12 @@ Vector generalized additive models.
 \emph{Journal of the Royal Statistical Society, Series B, Methodological},
 \bold{58}, 481--493.
 
+
 Documentation accompanying the \pkg{VGAM} package at
 \url{http://www.stat.auckland.ac.nz/~yee}
 contains further information and examples.
 
+
 }
 \author{ Thomas W. Yee }
 
@@ -95,8 +93,8 @@ fit2 = vgam(cbind(normal, mild, severe) ~ s(let, df = 2), propodds, pneumo)
 # Check the proportional odds assumption with a LRT ----------
 (fit3 = vglm(cbind(normal, mild, severe) ~ let,
              cumulative(parallel = FALSE, reverse = TRUE), pneumo))
-pchisq(2*(logLik(fit3)-logLik(fit)),
-       df = length(coef(fit3))-length(coef(fit)), lower.tail = FALSE)
+pchisq(deviance(fit) - deviance(fit3),
+       df = df.residual(fit) - df.residual(fit3), lower.tail = FALSE)
 }
 \keyword{models}
 \keyword{regression}
diff --git a/man/prplot.Rd b/man/prplot.Rd
index 15f0182..3b5a29b 100644
--- a/man/prplot.Rd
+++ b/man/prplot.Rd
@@ -4,10 +4,12 @@
 %- Also NEED an '\alias' for EACH other topic documented here.
 \title{
 Probability Plots for Categorical Data Analysis
+
 }
 \description{
 Plots the fitted probabilities for some very simplified special
 cases of categorical data analysis models.
+
 }
 \usage{
 prplot(object, control = prplot.control(...), ...)
@@ -26,7 +28,7 @@ prplot.control(xlab = NULL, ylab = "Probability", main = NULL, xlim = NULL,
 
 }
   \item{control}{
-List containing some basic graphical parameters.
+  List containing some basic graphical parameters.
 
 }
   \item{xlab, ylab, main, xlim, ylim, lty }{
@@ -39,23 +41,27 @@ List containing some basic graphical parameters.
   Argument \code{rug.arg} is logical: add a rug for the distinct values of the
   explanatory variable?
 
+
 }
   \item{\dots}{
   Arguments such as \code{xlab} which are fed into \code{prplot.control()}.
   Only a small selection of graphical arguments from
   \code{\link[graphics]{par}} are offered.
 
+
 }
 }
 \details{
   For models involving one term in the RHS of the formula this function
   plots the fitted probabilities against the single explanatory variable.
 
+
 }
 \value{
   The object is returned invisibly with the \code{preplot} slot assigned.
   This is obtained by a call to \code{plotvgam()}.
 
+
 }
 %\references{
 %% ~put references to the literature/web site here ~
@@ -65,6 +71,8 @@ List containing some basic graphical parameters.
 %}
 \note{
   This function is rudimentary.
+
+
 }
 
 %% ~Make other sections like Warning with \section{Warning }{....} ~
@@ -72,14 +80,15 @@ List containing some basic graphical parameters.
 \seealso{
   \code{\link{cumulative}}.
 
+
 }
 \examples{
-pneumo = transform(pneumo, let=log(exposure.time))
+pneumo = transform(pneumo, let = log(exposure.time))
 fit = vglm(cbind(normal, mild, severe) ~ let, propodds, pneumo)
 M = fit at misc$M
-\dontrun{
-prplot(fit)
-prplot(fit, lty=1:M, col=(1:M)+2, rug=TRUE, las=1, ylim=c(0,1), rlwd=2) }
+\dontrun{ prplot(fit)
+prplot(fit, lty = 1:M, col = (1:M)+2, rug = TRUE, las = 1,
+       ylim = c(0,1), rlwd = 2) }
 }
 % Add one or more standard keywords, see file 'KEYWORDS' in the
 % R documentation directory.
diff --git a/man/qrrvglm.control.Rd b/man/qrrvglm.control.Rd
index 6ec8968..2757cc9 100644
--- a/man/qrrvglm.control.Rd
+++ b/man/qrrvglm.control.Rd
@@ -26,7 +26,7 @@ qrrvglm.control(Rank = 1,
                 iShape = 0.1,
                 ITolerances = FALSE,
                 maxitl = 40,
-                method.init = 1,
+                imethod = 1,
                 Maxit.optim = 250,
                 MUXfactor = rep(7, length=Rank),
                 Norrr = ~ 1,
@@ -188,7 +188,7 @@ qrrvglm.control(Rank = 1,
     Most users should ignore this argument.
 
   } 
-  \item{method.init}{
+  \item{imethod}{
     Method of initialization. A positive integer 1 or 2 or 3 etc.
     depending on the \pkg{VGAM} family function.
     Currently it is used for \code{\link{negbinomial}} and 
diff --git a/man/rayleigh.Rd b/man/rayleigh.Rd
index 365d825..8dad6d0 100644
--- a/man/rayleigh.Rd
+++ b/man/rayleigh.Rd
@@ -1,6 +1,6 @@
 \name{rayleigh}
 \alias{rayleigh}
-\alias{crayleigh}
+\alias{cenrayleigh}
 %- Also NEED an '\alias' for EACH other topic documented here.
 \title{Rayleigh Distribution Family Function }
 \description{
@@ -9,8 +9,8 @@
 
 }
 \usage{
- rayleigh(lscale = "loge", escale = list(), nrfs = 1/3 + 0.01)
-crayleigh(lscale = "loge", escale = list(), oim = TRUE)
+   rayleigh(lscale = "loge", escale = list(), nrfs = 1/3 + 0.01)
+cenrayleigh(lscale = "loge", escale = list(), oim = TRUE)
 }
 %- maybe also 'usage' for other objects documented here.
 \arguments{
@@ -54,7 +54,7 @@ crayleigh(lscale = "loge", escale = list(), oim = TRUE)
   \eqn{b^2 (4-\pi)/2}{b^2 (4-pi)/2}.
 
 
-  The \pkg{VGAM} family function \code{crayleigh} handles right-censored
+  The \pkg{VGAM} family function \code{cenrayleigh} handles right-censored
   data (the true value is greater than the observed value). To indicate
   which type of censoring, input \code{extra = list(rightcensored = vec2)}
   where \code{vec2} is a logical vector the same length as the response.
@@ -109,7 +109,7 @@ rdata <- transform(rdata, U = runif(nn, 5, 15))
 rdata <- transform(rdata, y = pmin(U, ystar))
 \dontrun{ par(mfrow = c(1,2)); hist(with(rdata, ystar)); hist(with(rdata, y)) }
 extra <- with(rdata, list(rightcensored = ystar > U))
-fit <- vglm(y ~ 1, crayleigh, rdata, trace = TRUE, extra = extra)
+fit <- vglm(y ~ 1, cenrayleigh, rdata, trace = TRUE, extra = extra)
 table(fit at extra$rightcen)
 coef(fit, matrix = TRUE)
 head(fitted(fit))
diff --git a/man/recexp1.Rd b/man/recexp1.Rd
index 3a9239d..71a5f89 100644
--- a/man/recexp1.Rd
+++ b/man/recexp1.Rd
@@ -8,7 +8,7 @@
   record values.
 }
 \usage{
-recexp1(lrate="loge", irate=NULL, method.init=1)
+recexp1(lrate="loge", irate=NULL, imethod=1)
 }
 %- maybe also 'usage' for other objects documented here.
 \arguments{
@@ -20,10 +20,10 @@ recexp1(lrate="loge", irate=NULL, method.init=1)
   \item{irate}{
   Numeric. Optional initial values for the rate.
   The default value \code{NULL} means they are computed internally,
-  with the help of \code{method.init}.
+  with the help of \code{imethod}.
 
   }
-  \item{method.init}{
+  \item{imethod}{
   Integer, either 1 or 2 or 3. Initial method, three algorithms are
   implemented. Choose the another value if convergence fails, or use
   \code{irate}.
diff --git a/man/recnormal1.Rd b/man/recnormal1.Rd
index eaf01ba..919e9a2 100644
--- a/man/recnormal1.Rd
+++ b/man/recnormal1.Rd
@@ -6,10 +6,11 @@
   Maximum likelihood estimation of the two parameters of a
   univariate normal distribution when the observations are upper 
   record values.
+
 }
 \usage{
-recnormal1(lmean="identity", lsd="loge",
-           imean=NULL, isd=NULL, method.init=1, zero=NULL)
+recnormal1(lmean = "identity", lsd = "loge",
+           imean = NULL, isd = NULL, imethod = 1, zero = NULL)
 }
 %- maybe also 'usage' for other objects documented here.
 \arguments{
@@ -21,10 +22,10 @@ recnormal1(lmean="identity", lsd="loge",
   \item{imean, isd}{
   Numeric. Optional initial values for the mean and sd.
   The default value \code{NULL} means they are computed internally,
-  with the help of \code{method.init}.
+  with the help of \code{imethod}.
 
   }
-  \item{method.init}{
+  \item{imethod}{
   Integer, either 1 or 2 or 3. Initial method, three algorithms are
   implemented. Choose the another value if convergence fails, or use
   \code{imean} and/or \code{isd}.
@@ -33,7 +34,7 @@ recnormal1(lmean="identity", lsd="loge",
   \item{zero}{
   An integer vector, containing the value 1 or 2. If so, the mean or
   standard deviation respectively are modelled as an intercept only.
-  Usually, setting \code{zero=2} will be used, if used at all.
+  Usually, setting \code{zero = 2} will be used, if used at all.
   The default value \code{NULL} means both linear/additive predictors
   are modelled as functions of the explanatory variables.
 
@@ -43,47 +44,55 @@ recnormal1(lmean="identity", lsd="loge",
   The response must be a vector or one-column matrix with strictly
   increasing values.
 
+
 }
 \value{
   An object of class \code{"vglmff"} (see \code{\link{vglmff-class}}).
   The object is used by modelling functions such as \code{\link{vglm}},
   and \code{\link{vgam}}.
+
+
 }
 \references{
     Arnold, B. C. and Balakrishnan, N. and Nagaraja, H. N. (1998)
     \emph{Records},
     New York: John Wiley & Sons.
 
+
 }
 \author{ T. W. Yee }
 \note{
   This family function tries to solve a difficult problem, and the
   larger the data set the better.
   Convergence failure can commonly occur, and 
-  convergence may be very slow, so set \code{maxit=200, trace=TRUE}, say.
+  convergence may be very slow, so set \code{maxit = 200, trace = TRUE}, say.
   Inputting good initial values are advised.
 
-  This family function uses the BFGS quasi-Newton update formula for the
-  working weight matrices.  Consequently the estimated variance-covariance
-  matrix may be inaccurate or simply wrong! The standard errors must be
-  therefore treated with caution; these are computed in functions such
-  as \code{vcov()} and \code{summary()}.
+
+  This family function uses the BFGS quasi-Newton update formula
+  for the working weight matrices.  Consequently the estimated
+  variance-covariance matrix may be inaccurate or simply wrong! The
+  standard errors must be therefore treated with caution; these are
+  computed in functions such as \code{vcov()} and \code{summary()}.
+
 
 }
 
 \seealso{
     \code{\link{normal1}},
-    \code{\link{dcnormal1}}.
+    \code{\link{dcennormal1}}.
+
+
 }
 \examples{
-n = 10000
-mymean = 100
+nn = 10000; mymean = 100
 # First value is reference value or trivial record
-rawy = c(mymean, rnorm(n, me=mymean, sd=exp(3)))
-(y = unique(cummax(rawy))) # Keep only observations that are records
+Rdata = data.frame(rawy = c(mymean, rnorm(nn, me = mymean, sd = exp(3))))
+# Keep only observations that are records:
+rdata = data.frame(y = unique(cummax(with(Rdata, rawy))))
 
-fit = vglm(y ~ 1, recnormal1, trace=TRUE, maxit=200)
-coef(fit, matrix=TRUE)
+fit = vglm(y ~ 1, recnormal1, rdata, trace = TRUE, maxit = 200)
+coef(fit, matrix = TRUE)
 Coef(fit)
 summary(fit)
 }
@@ -91,7 +100,7 @@ summary(fit)
 \keyword{regression}
 
 %# Keep only observations that are records
-%delete = c(FALSE, rep(TRUE, len=n))
+%delete = c(FALSE, rep(TRUE, len = n))
 %for(i in 2:length(rawy))
 %    if (rawy[i] > max(rawy[1:(i-1)])) delete[i] = FALSE
 %(y = rawy[!delete])
diff --git a/man/rlplot.egev.Rd b/man/rlplot.egev.Rd
index 44fc64a..fc3e680 100644
--- a/man/rlplot.egev.Rd
+++ b/man/rlplot.egev.Rd
@@ -5,6 +5,7 @@
 \title{ Return Level Plot for GEV Fits }
 \description{
   A return level plot is constructed for a GEV-type model.
+
 }
 \usage{
 rlplot.egev(object, plot.it = TRUE,
@@ -14,7 +15,7 @@ rlplot.egev(object, plot.it = TRUE,
     pch = par()$pch, pcol.arg = par()$col, pcex = par()$cex,
     llty.arg = par()$lty, lcol.arg = par()$col, llwd.arg = par()$lwd,
     slty.arg = par()$lty, scol.arg = par()$col, slwd.arg = par()$lwd,
-    ylim = NULL, Log = TRUE, CI = TRUE, epsilon = 1e-05, ...)
+    ylim = NULL, log = TRUE, CI = TRUE, epsilon = 1e-05, ...)
 }
 %- maybe also 'usage' for other objects documented here.
 \arguments{
@@ -33,6 +34,7 @@ rlplot.egev(object, plot.it = TRUE,
   \item{probability}{
     Numeric vector of probabilities used.
 
+
   }
   \item{add.arg}{ Logical. Add the plot to an existing plot? }
   \item{xlab}{ Caption for the x-axis. See \code{\link[graphics]{par}}. }
@@ -54,10 +56,12 @@ rlplot.egev(object, plot.it = TRUE,
   \item{slty.arg, scol.arg, slwd.arg}{
     Correponding arguments for the lines used for the
     confidence intervals. Used only if \code{CI=TRUE}.
+
   }
   \item{ylim}{ Limits for the y-axis. Numeric of length 2. }
-  \item{Log}{ Logical. If \code{TRUE} then \code{log=""} otherwise
+  \item{log}{ Logical. If \code{TRUE} then \code{log=""} otherwise
     \code{log="x"}. This changes the labelling of the x-axis only.
+
   }
   \item{CI}{ Logical. Add in a 95 percent confidence interval? }
   \item{epsilon}{
@@ -65,21 +69,25 @@ rlplot.egev(object, plot.it = TRUE,
     approximation to the first derivatives with respect to
     each parameter. If too small, numerical problems will occur.
 
+
   }
   \item{\dots}{
     Arguments passed into the \code{plot} function
     when setting up the entire plot. Useful arguments here include
     \code{sub} and \code{las}.
+
     
   }
 }
 \details{
   A return level plot plots \eqn{z_p}{zp} versus
-  \eqn{\log(y_p)}{log(yp)}. It is linear if the shape parameter
-  \eqn{\xi=0}{xi=0}. If \eqn{\xi<0}{xi<0} then the plot is convex
+  \eqn{\log(y_p)}{log(yp)}.
+  It is linear if the shape parameter \eqn{\xi=0}{xi=0}.
+  If \eqn{\xi<0}{xi<0} then the plot is convex
   with asymptotic limit as \eqn{p} approaches zero at
-  \eqn{\mu-\sigma / \xi}{mu-sigma/xi}. And if
-  \eqn{\xi>0}{xi>0} then the plot is concave and has no finite bound.
+  \eqn{\mu-\sigma / \xi}{mu-sigma/xi}.
+  And if \eqn{\xi>0}{xi>0} then the plot is concave and has
+  no finite bound.
   Here, \eqn{G(z_p) = 1-p}{G(zp) = 1-p} where \eqn{0<p<1}
   (\eqn{p} corresponds to the argument \code{probability})
   and \eqn{G} is the cumulative distribution function of the
@@ -89,6 +97,7 @@ rlplot.egev(object, plot.it = TRUE,
   is exceeded by the annual
   maximum in any particular year with probability \eqn{p}.
 
+
   The points in the plot are the actual data.
   
   
@@ -104,9 +113,12 @@ rlplot.egev(object, plot.it = TRUE,
 }
 \references{
 
+
 Coles, S. (2001)
 \emph{An Introduction to Statistical Modeling of Extreme Values}.
 London: Springer-Verlag.
+
+
 }
 
 \author{ T. W. Yee }
@@ -118,19 +130,23 @@ London: Springer-Verlag.
 
 \seealso{
   \code{\link{egev}}.
+
+
 }
 
 \examples{
-y = rgev(n <- 100, scale=exp(1), shape = -0.1)
-fit = vglm(y ~ 1, egev, trace=TRUE)
+gdata = data.frame(y = rgev(n <- 100, scale = 2, shape = -0.1))
+fit = vglm(y ~ 1, egev, gdata, trace = TRUE)
 
 # Identity link for all parameters:
-fit2 = vglm(y ~ 1, egev(lsh=identity, lsc=identity, isc=10), trace=TRUE)
+fit2 = vglm(y ~ 1, egev(lshape = identity, lscale = identity,
+                        iscale = 10), gdata, trace = TRUE)
+coef(fit2, matrix = TRUE)
 \dontrun{
-par(mfrow=c(1,2))
+par(mfrow = c(1, 2))
 rlplot(fit) -> i1
-rlplot(fit2, pcol="darkorange", lcol="blue", Log=FALSE,
-       scol="darkgreen", slty="dashed") -> i2
+rlplot(fit2, pcol = "darkorange", lcol = "blue", log = FALSE,
+       scol = "darkgreen", slty = "dashed", las = 1) -> i2
 range(i2 at post$rlplot$upper - i1 at post$rlplot$upper) # Should be near 0
 range(i2 at post$rlplot$lower - i1 at post$rlplot$lower) # Should be near 0
 }
diff --git a/man/rrar.Rd b/man/rrar.Rd
index 5b5cba1..45722a1 100644
--- a/man/rrar.Rd
+++ b/man/rrar.Rd
@@ -7,6 +7,7 @@ time series }
   Estimates the parameters of a 
   nested reduced-rank autoregressive model for multiple
   time series.
+
 }
 \usage{
 rrar(Ranks = 1, coefstart = NULL)
@@ -17,35 +18,42 @@ rrar(Ranks = 1, coefstart = NULL)
   Each value must be at least one and no more than \code{M},
   where \code{M} is the number of response variables in the time series. 
   The length of \code{Ranks} is the \emph{lag}, which is often denoted by
-  the symbol \emph{L} in the literature. }
+  the symbol \emph{L} in the literature.
+
+  }
   \item{coefstart}{ Optional numerical vector of initial values for the
   coefficients. 
-  By default, the family function chooses these automatically. }
+  By default, the family function chooses these automatically.
+
+  }
 }
 \details{
    Full details are given in Ahn and Reinsel (1988).
-   Convergence may be very slow, so setting \code{maxits=50}, say, may help.
+   Convergence may be very slow, so setting \code{maxits = 50}, say, may help.
    If convergence is not obtained, you might like to try inputting different 
    initial values. 
 
-   Setting \code{trace=TRUE} in \code{\link{vglm}} is useful for monitoring
+
+   Setting \code{trace = TRUE} in \code{\link{vglm}} is useful for monitoring
    the progress at each iteration.
+
+
 }
 \value{
   An object of class \code{"vglmff"} (see \code{\link{vglmff-class}}).
   The object is used by modelling functions such as \code{\link{vglm}}
   and \code{\link{vgam}}.
+
+
 }
 \references{
+
 Ahn, S. and Reinsel, G. C. (1988)
 Nested reduced-rank autoregressive models for multiple
 time series.
 \emph{Journal of the American Statistical Association},
 \bold{83}, 849--856.
 
-Documentation accompanying the \pkg{VGAM} package at
-\url{http://www.stat.auckland.ac.nz/~yee}
-contains further information and examples.
 
 }
 \author{ T. W. Yee }
@@ -56,6 +64,7 @@ not with \code{\link{rrvglm}} because
 it does not fit into the RR-VGLM framework exactly. Instead, the
 reduced-rank model is formulated as a VGLM!
 
+
 A methods function \code{Coef.rrar}, say, has yet to be written.
 It would return the quantities 
 \code{Ak1},
@@ -66,37 +75,39 @@ It would return the quantities
 etc. as slots, and then \code{print.Coef.rrar} would also need to be
 written.
 
+
 }
 
 \seealso{
-\code{\link{vglm}},
-\code{\link{usagrain}}.
+  \code{\link{vglm}},
+  \code{\link{usgrain}}.
+
 }
 \examples{
 \dontrun{
-year = seq(1961+1/12, 1972+10/12, by=1/12)
-par(mar=c(4,4,2,2)+0.1, mfrow=c(2,2))
+year = seq(1961 + 1/12, 1972 + 10/12, by = 1/12)
+par(mar = c(4, 4, 2, 2) + 0.1, mfrow = c(2, 2))
 for(ii in 1:4) {
-    plot(year, usagrain[,ii], main=names(usagrain)[ii],
-         type="l", xlab="", ylab="")
-    points(year, usagrain[,ii], pch="*")
+    plot(year, usgrain[, ii], main = names(usgrain)[ii],
+         type = "l", xlab = "", ylab = "")
+    points(year, usgrain[,ii], pch = "*")
 }
-apply(usagrain, 2, mean)     # mu vector
-cgrain = scale(usagrain, scale=FALSE) # Center the time series only
-fit = vglm(cgrain ~ 1, rrar(Ranks=c(4,1)), trace=TRUE)
+apply(usgrain, 2, mean)     # mu vector
+cgrain = scale(usgrain, scale = FALSE) # Center the time series only
+fit = vglm(cgrain ~ 1, rrar(Ranks = c(4, 1)), trace = TRUE)
 summary(fit)
 
-print(fit at misc$Ak1, dig=2)
-print(fit at misc$Cmatrices, dig=3)
-print(fit at misc$Dmatrices, dig=3)
-print(fit at misc$omegahat, dig=3)
-print(fit at misc$Phimatrices, dig=2)
+print(fit at misc$Ak1, dig = 2)
+print(fit at misc$Cmatrices, dig = 3)
+print(fit at misc$Dmatrices, dig = 3)
+print(fit at misc$omegahat, dig = 3)
+print(fit at misc$Phimatrices, dig = 2)
 
-par(mar=c(4,4,2,2)+0.1, mfrow=c(4,1))
+par(mar = c(4, 4, 2, 2) + 0.1, mfrow = c(4, 1))
 for(ii in 1:4) {
-    plot(year, fit at misc$Z[,ii], main=paste("Z", ii, sep=""),
-         type="l", xlab="", ylab="")
-    points(year, fit at misc$Z[,ii], pch="*")
+  plot(year, fit at misc$Z[,ii], main = paste("Z", ii, sep = ""),
+       type = "l", xlab = "", ylab = "")
+  points(year, fit at misc$Z[,ii], pch = "*")
 }
 }
 }
diff --git a/man/rrvglm-class.Rd b/man/rrvglm-class.Rd
index 83eef97..c797301 100644
--- a/man/rrvglm-class.Rd
+++ b/man/rrvglm-class.Rd
@@ -124,7 +124,7 @@ Objects can be created by calls to \code{\link{rrvglm}}.
   }
   \item{\code{prior.weights}:}{
   Object of class
-  \code{"numeric"}, from class \code{ "vlm"} 
+  \code{"matrix"}, from class \code{ "vlm"} 
   holding the initially supplied weights.
   }
   \item{\code{qr}:}{
diff --git a/man/rrvglm.Rd b/man/rrvglm.Rd
index cef717f..9b5dcd1 100644
--- a/man/rrvglm.Rd
+++ b/man/rrvglm.Rd
@@ -243,9 +243,9 @@ plot(y2 ~ x2, data = mydata, pch = "+", col = 'blue', las = 1,
      main = paste("Var(Y) = mu + ", delta1, " * mu^", delta2, sep = "")) }
 rrnb2 <- rrvglm(y2 ~ x2 + x3, negbinomial(zero = NULL), mydata, trace = TRUE)
 
-a21.hat <- (Coef(rrnb2)@A)["log(k)", 1]
+a21.hat <- (Coef(rrnb2)@A)["log(size)", 1]
 beta11.hat <- Coef(rrnb2)@B1["(Intercept)", "log(mu)"]
-beta21.hat <- Coef(rrnb2)@B1["(Intercept)", "log(k)"]
+beta21.hat <- Coef(rrnb2)@B1["(Intercept)", "log(size)"]
 (delta1.hat <- exp(a21.hat * beta11.hat - beta21.hat))
 (delta2.hat <- 2 - a21.hat)
 # exp(a21.hat * predict(rrnb2)[1,1] - predict(rrnb2)[1,2]) # delta1.hat
diff --git a/man/simplex.Rd b/man/simplex.Rd
index 1b4f473..f5f37c4 100644
--- a/man/simplex.Rd
+++ b/man/simplex.Rd
@@ -11,7 +11,7 @@
 \usage{
 simplex(lmu = "logit", lsigma = "loge", emu=list(), esigma=list(),
         imu = NULL, isigma = NULL,
-        method.init = 1, shrinkage.init = 0.95, zero = 2)
+        imethod = 1, shrinkage.init = 0.95, zero = 2)
 
 }
 %- maybe also 'usage' for other objects documented here.
@@ -31,7 +31,7 @@ simplex(lmu = "logit", lsigma = "loge", emu=list(), esigma=list(),
   A \code{NULL} means a value is obtained internally.
 
   }
-  \item{method.init, shrinkage.init, zero}{
+  \item{imethod, shrinkage.init, zero}{
   See \code{\link{CommonVGAMffArguments}} for more information.
 
   }
diff --git a/man/studentt.Rd b/man/studentt.Rd
index 104823a..dbf4c50 100644
--- a/man/studentt.Rd
+++ b/man/studentt.Rd
@@ -10,17 +10,17 @@
 }
 \usage{
 studentt(ldf = "loglog", edf = list(), idf = NULL, tol1 = 0.1,
-         method.init = 1)
+         imethod = 1)
 studentt2(df = Inf,
           llocation = "identity", elocation = list(),
           lscale = "loge", escale = list(),
           ilocation = NULL, iscale = NULL,
-          method.init = 1, zero = -2)
+          imethod = 1, zero = -2)
 studentt3(llocation = "identity", elocation = list(),
           lscale = "loge", escale = list(),
           ldf = "loglog", edf = list(),
           ilocation = NULL, iscale = NULL, idf = NULL,
-          method.init = 1, zero = -(2:3))
+          imethod = 1, zero = -(2:3))
 }
 %- maybe also 'usage' for other objects documented here.
 \arguments{
@@ -58,7 +58,7 @@ studentt3(llocation = "identity", elocation = list(),
   matrix.
 
   }
-  \item{method.init, zero}{
+  \item{imethod, zero}{
   See \code{\link{CommonVGAMffArguments}}.
 
   }
diff --git a/man/tobit.Rd b/man/tobit.Rd
index 95dddc7..08d7460 100644
--- a/man/tobit.Rd
+++ b/man/tobit.Rd
@@ -3,11 +3,15 @@
 %- Also NEED an '\alias' for EACH other topic documented here.
 \title{ Tobit Model }
 \description{
-  Fits a Tobit model to a univariate response. 
+  Fits a Tobit model.
+
 }
 \usage{
 tobit(Lower = 0, Upper = Inf, lmu = "identity", lsd = "loge",
-      emu = list(), esd = list(), method.init = 1, zero = 2)
+      emu = list(), esd = list(), nsimEIM = 250,
+      imu = NULL, isd = NULL, 
+      type.fitted = c("uncensored", "censored", "mean.obs"),
+      imethod = 1, zero = -2)
 }
 %- maybe also 'usage' for other objects documented here.
 \arguments{
@@ -15,39 +19,58 @@ tobit(Lower = 0, Upper = Inf, lmu = "identity", lsd = "loge",
   Numeric of length 1, it is the value \eqn{L} described below.
   Any value of the linear model 
   \eqn{x_i^T \beta}{x_i^T beta} that
-  is less than this value is assigned this value.
-  Hence this should be the smallest possible value in the response variable.
+  is less than this lowerbound is assigned this value.
+  Hence this should be the smallest possible value in the response
+  variable.
 
   }
   \item{Upper}{
   Numeric of length 1, it is the value \eqn{U} described below. 
   Any value of the linear model 
   \eqn{x_i^T \beta}{x_i^T beta} that
-  is greater than this value is assigned this value.
-  Hence this should be the largest possible value in the response variable.
+  is greater than this upperbound is assigned this value.
+  Hence this should be the largest possible value in the response
+  variable.
 
   }
-  \item{lmu, lsd}{
-  Parameter link functions applied to the mean and
+  \item{lmu, lsd, emu, esd}{
+  Parameter link functions and extra arguments for the mean and
   standard deviation parameters.
   See \code{\link{Links}} for more choices.
   The standard deviation is a positive quantity, therefore a log link 
   is its default.
 
   }
-  \item{emu, esd}{
-  List. Extra argument for each of the links.
-  See \code{earg} in \code{\link{Links}} for general information.
+  \item{imu, isd}{
+  See \code{\link{CommonVGAMffArguments}} for information.
+
+  }
+  \item{type.fitted}{
+  Type of fitted value returned.
+  The first choice is default and is the ordinary uncensored or
+  unbounded linear model.
+  If \code{"censored"} then the fitted values in the interval \eqn{[L, U]}.
+  If \code{"mean.obs"} then the mean of the observations is returned;
+  this is a doubly truncated normal distribution
+  augmented by point masses at the truncation points
+  (see \code{\link{dtobit}}).
+
 
   }
-  \item{method.init}{
+  \item{imethod}{
   Initialization method. Either 1 or 2, this specifies
   two methods for obtaining initial values for the parameters.
 
   }
+  \item{nsimEIM}{
+  Used if nonstandard Tobit model.
+  See \code{\link{CommonVGAMffArguments}} for information.
+
+  }
   \item{zero}{
   An integer vector, containing the value 1 or 2. If so,
-  the mean or standard deviation respectively are modelled as an intercept only.
+  the mean or standard deviation respectively are modelled
+  as an intercept-only.
   Setting \code{zero = NULL} means both linear/additive predictors
   are modelled as functions of the explanatory variables.
 
@@ -57,8 +80,8 @@ tobit(Lower = 0, Upper = Inf, lmu = "identity", lsd = "loge",
   The Tobit model can be written
   \deqn{y_i^* = x_i^T \beta + \varepsilon_i}{%
         y_i^* = x_i^T  beta +  e_i}
-  where the \eqn{e_i \sim N(0,\sigma^2)}{e_i ~ N(0,sigma^2)} independently and
-  \eqn{i=1,\ldots,n}{i=1,...,n}.
+  where the \eqn{e_i \sim N(0,\sigma^2)}{e_i ~ N(0,sigma^2)}
+  independently and \eqn{i=1,\ldots,n}{i=1,...,n}.
   However, we measure \eqn{y_i = y_i^*} only if \eqn{y_i^* > L} and
   \eqn{y_i^* < U} for some
   cutpoints \eqn{L} and \eqn{U}. Otherwise we let \eqn{y_i=L} or
@@ -66,66 +89,130 @@ tobit(Lower = 0, Upper = Inf, lmu = "identity", lsd = "loge",
   The Tobit model is thus a multiple linear regression but with censored
   responses if it is below or above certain cutpoints.
 
-  The defaults for \code{Lower} and \code{Upper} correspond to the
-  classical Tobit model.  By default, the mean \eqn{x_i^T \beta}{x_i^T
-  beta} is the first linear/additive predictor, and the log of the
-  standard deviation is the second linear/additive predictor.  The Fisher
-  information matrix for uncensored data is diagonal.
-  The fitted values are the estimates of \eqn{x_i^T \beta}{x_i^T beta}.
+
+  The defaults for \code{Lower} and \code{Upper} and
+  \code{lmu} correspond to the \emph{standard} Tobit model.
+  Then Fisher scoring is used, else simulated Fisher scoring.
+  By default, the mean \eqn{x_i^T \beta}{x_i^T beta} is
+  the first linear/additive predictor, and the log of
+  the standard deviation is the second linear/additive
+  predictor. The Fisher information matrix for uncensored
+  data is diagonal. The fitted values are the estimates
+  of \eqn{x_i^T \beta}{x_i^T beta}.
+
 
 }
-%\section{Warning }{
+\section{Warning }{
+  Convergence is often slow. Setting \code{crit = "coeff"}
+  is recommended since premature convergence of the log-likelihood
+  is common.
+  Simulated Fisher scoring is implemented for the nonstandard
+  Tobit model. For this, the working weight matrices for
+  some observations are prone to not being positive-definite;
+  if so then some checking of the final model is recommended
+  and/or try inputting some initial values.
+
+
 %  The working weight matrices for most observations 
 %  are not positive-definite. These responses would otherwise have a
 %  fitted value much less than the cutpoint.
-%}
+}
+
 \value{
   An object of class \code{"vglmff"} (see \code{\link{vglmff-class}}).
   The object is used by modelling functions such as \code{\link{vglm}},
   and \code{\link{vgam}}.
+
+
 }
 \references{
-Tobin, J. (1958)
-Estimation of relationships for limited dependent variables.
-\emph{Econometrica} \bold{26}, 24--36.
+  Tobin, J. (1958)
+  Estimation of relationships for limited dependent variables.
+  \emph{Econometrica} \bold{26}, 24--36.
+
+
 }
 
 \author{ Thomas W. Yee }
 \note{
-    The response must be univariate.  If there is no censoring then
-    \code{\link{normal1}} is recommended instead.  Any value of the
-    response less than \code{Lower} or greater than \code{Upper} will
-    be assigned the value \code{Lower} and \code{Upper} respectively,
-    and a warning will be issued.
-    The fitted object has components \code{censoredL} and \code{censoredU}
-    in the \code{extra} slot which specifies whether observations
-    are censored in that direction.
+  The response can be a matrix. Then \code{Lower} and \code{Upper}
+  are recycled to the number of columns.
+  If there is no censoring then
+  \code{\link{normal1}} is recommended instead. Any value of the
+  response less than \code{Lower} or greater than \code{Upper} will
+  be assigned the value \code{Lower} and \code{Upper} respectively,
+  and a warning will be issued.
+  The fitted object has components \code{censoredL} and \code{censoredU}
+  in the \code{extra} slot which specifies whether observations
+  are censored in that direction.
+  The function \code{\link{cennormal1}} is an alternative
+  to \code{tobit()}.
+
 
 }
 \seealso{
-    \code{\link{normal1}},
-    \code{\link{cnormal1}}.
-    \code{\link{dcnormal1}}.
+  \code{\link{rtobit}},
+  \code{\link{cennormal1}},
+  \code{\link{normal1}},
+  \code{\link{dcennormal1}},
+  \code{\link{posnormal1}},
+  \code{\link[stats:Normal]{rnorm}}.
+
+
 }
 \examples{
-tdata = data.frame(x = seq(-1, 1, len = (nn <- 1000)))
-foo = function(x) 1 + 4*x
-tdata = transform(tdata, ystar = foo(x) + rnorm(nn))
-Lower = 1; Upper = 4
-tdata = transform(tdata, y = pmax(ystar, Lower))
-tdata = transform(tdata, y = pmin(y, Upper))
-with(tdata, table(y == Lower | y == Upper)) # How many censored values?
-
-fit = vglm(y ~ x, tobit(Lower = Lower, Upper = Upper), tdata, trace = TRUE)
-table(fit at extra$censoredL)
-table(fit at extra$censoredU)
-coef(fit, matrix = TRUE)
-summary(fit)
-\dontrun{
-with(tdata, plot(x, y, main = "Tobit model", las=1))
-legend(-0.9, 3, c("Truth", "Estimate"), col=c("blue", "red"), lwd=2)
-with(tdata, lines(x, foo(x), col="blue", lwd=2))
-with(tdata, lines(x, fitted(fit), col="red", lwd=2, lty="dashed")) }
+# Here, fit1 is a standard Tobit model and fit2 is a nonstandard Tobit model
+Lower = 1; Upper = 4; set.seed(1)  # For the nonstandard Tobit model
+tdata = data.frame(x2 = seq(-1, 1, len = (nn <- 100)))
+meanfun1 = function(x) 0 + 2*x
+meanfun2 = function(x) 2 + 2*x
+tdata = transform(tdata,
+  y1 = rtobit(nn, mean = meanfun1(x2)),  # Standard Tobit model 
+  y2 = rtobit(nn, mean = meanfun2(x2), Lower = Lower, Upper = Upper))
+with(tdata, table(y1 == 0)) # How many censored values?
+with(tdata, table(y2 == Lower | y2 == Upper)) # How many censored values?
+with(tdata, table(attr(y2, "cenL")))
+with(tdata, table(attr(y2, "cenU")))
+
+fit1 = vglm(y1 ~ x2, tobit, tdata, trace = TRUE,
+            crit = "coeff")  # crit = "coeff" is recommended
+coef(fit1, matrix = TRUE)
+summary(fit1)
+
+fit2 = vglm(y2 ~ x2, tobit(Lower = Lower, Upper = Upper, type.f = "cens"),
+            tdata, crit = "coeff", trace = TRUE) # ditto
+table(fit2 at extra$censoredL)
+table(fit2 at extra$censoredU)
+coef(fit2, matrix = TRUE)
+
+\dontrun{ # Plot the results
+par(mfrow = c(2, 1))
+plot(y1 ~ x2, tdata, las = 1, main = "Standard Tobit model",
+     col = as.numeric(attr(y1, "cenL")) + 3,
+     pch = as.numeric(attr(y1, "cenL")) + 1)
+legend(x = "topleft", leg = c("censored", "uncensored"),
+       pch = c(2, 1), col = c("blue", "green"))
+legend(-1.0, 2.5, c("Truth", "Estimate", "Naive"),
+       col = c("purple", "orange", "black"), lwd = 2, lty = c(1, 2, 2))
+lines(meanfun1(x2) ~ x2, tdata, col = "purple", lwd = 2)
+lines(fitted(fit1) ~ x2, tdata, col = "orange", lwd = 2, lty = 2)
+lines(fitted(lm(y1 ~ x2, tdata)) ~ x2, tdata, col = "black",
+      lty = 2, lwd = 2) # This is simplest but wrong!
+
+plot(y2 ~ x2, tdata, las = 1, main = "Tobit model",
+     col = as.numeric(attr(y2, "cenL")) + 3 +
+           as.numeric(attr(y2, "cenU")),
+     pch = as.numeric(attr(y2, "cenL")) + 1 +
+           as.numeric(attr(y2, "cenU")))
+legend(x = "topleft", leg = c("censored", "uncensored"),
+       pch = c(2, 1), col = c("blue", "green"))
+legend(-1.0, 3.5, c("Truth", "Estimate", "Naive"),
+       col = c("purple", "orange", "black"), lwd = 2, lty = c(1, 2, 2))
+lines(meanfun2(x2) ~ x2, tdata, col = "purple", lwd = 2)
+lines(fitted(fit2) ~ x2, tdata, col = "orange", lwd = 2, lty = 2)
+lines(fitted(lm(y2 ~ x2, tdata)) ~ x2, tdata, col = "black",
+      lty = 2, lwd = 2) # This is simplest but wrong!
+}
 }
 \keyword{models}
 \keyword{regression}
diff --git a/man/tobitUC.Rd b/man/tobitUC.Rd
new file mode 100644
index 0000000..710e474
--- /dev/null
+++ b/man/tobitUC.Rd
@@ -0,0 +1,90 @@
+\name{Tobit}
+\alias{Tobit}
+\alias{dtobit}
+\alias{ptobit}
+\alias{qtobit}
+\alias{rtobit}
+\title{The Tobit Distribution}
+\description{
+  Density, distribution function, quantile function and random
+  generation for the Tobit model.
+
+}
+\usage{
+dtobit(x, mean = 0, sd = 1, Lower = 0, Upper = Inf, log = FALSE)
+ptobit(q, mean = 0, sd = 1, Lower = 0, Upper = Inf,
+       lower.tail = TRUE, log.p = FALSE)
+qtobit(p, mean = 0, sd = 1, Lower = 0, Upper = Inf)
+rtobit(n, mean = 0, sd = 1, Lower = 0, Upper = Inf)
+}
+\arguments{
+  \item{x, q}{vector of quantiles.}
+  \item{p}{vector of probabilities.}
+  \item{n}{number of observations.
+  If \code{length(n) > 1} then the length is taken to be the number required.
+
+  }
+  \item{Lower, Upper}{vector of lower and upper
+  thresholds. 
+
+  }
+  \item{mean, sd, lower.tail, log, log.p}{
+  see \code{\link[stats:Normal]{rnorm}}.
+
+  }
+
+}
+\value{
+  \code{dtobit} gives the density,
+  \code{ptobit} gives the distribution function,
+  \code{qtobit} gives the quantile function, and
+  \code{rtobit} generates random deviates.
+
+}
+\author{ T. W. Yee }
+\details{
+  See \code{\link{tobit}}, the \pkg{VGAM} family function
+  for estimating the parameters, 
+  for details.
+  Note that the density at \code{Lower} and \code{Upper} is the
+  value of \code{\link[stats:Normal]{dnorm}} evaluated there plus
+  the area to the left/right of that point too.
+  Thus there are two spikes; see the example below.
+
+}
+%\note{
+
+%}
+\seealso{
+  \code{\link{tobit}}.
+
+}
+\examples{
+\dontrun{ m = 0.5; x = seq(-2, 4, len = 501)
+Lower = -1; Upper = 2.5
+plot(x, ptobit(x, m = m, Lower = Lower, Upper = Upper),
+     type = "l", ylim = 0:1, las = 1, col = "orange",
+     ylab = paste("ptobit(m = ", m, ", sd = 1, Lower =", Lower,
+                  ", Upper =", Upper, ")"),
+     main = "Orange is cumulative distribution function; blue is density",
+     sub = "Purple lines are the 10,20,...,90 percentiles")
+abline(h = 0)
+lines(x, dtobit(x, m = m, Lower = Lower, Upper = Upper), col = "blue")
+
+probs = seq(0.1, 0.9, by = 0.1)
+Q = qtobit(probs, m = m, Lower = Lower, Upper = Upper)
+lines(Q, ptobit(Q, m = m, Lower = Lower, Upper = Upper),
+      col = "purple", lty = "dashed", type = "h")
+lines(Q, dtobit(Q, m = m, Lower = Lower, Upper = Upper),
+      col = "darkgreen", lty = "dashed", type = "h")
+abline(h = probs, col = "purple", lty = "dashed")
+max(abs(ptobit(Q, m = m, Lower = Lower, Upper = Upper) - probs)) # Should be 0
+
+endpts = c(Lower, Upper) # Endpoints have a spike
+lines(endpts, dtobit(endpts, m = m, Lower = Lower, Upper = Upper),
+      col = "blue", lwd = 2, type = "h")
+}
+}
+\keyword{distribution}
+
+
diff --git a/man/tparetoUC.Rd b/man/tparetoUC.Rd
index f050b7e..b96c16c 100644
--- a/man/tparetoUC.Rd
+++ b/man/tparetoUC.Rd
@@ -12,7 +12,7 @@
 
 }
 \usage{
-dtpareto(x, lower, upper, shape)
+dtpareto(x, lower, upper, shape, log = FALSE)
 ptpareto(q, lower, upper, shape)
 qtpareto(p, lower, upper, shape)
 rtpareto(n, lower, upper, shape)
@@ -20,17 +20,19 @@ rtpareto(n, lower, upper, shape)
 \arguments{
   \item{x, q}{vector of quantiles.}
   \item{p}{vector of probabilities.}
-  \item{n}{number of observations. Must be a single positive integer. }
+  \item{n, log}{Same meaning as \code{\link[stats:Uniform]{runif}}. }
   \item{lower, upper, shape}{
   the lower, upper and shape (\eqn{k}) parameters.
   If necessary, values are recycled.
   }
+
 }
 \value{
   \code{dtpareto} gives the density,
   \code{ptpareto} gives the distribution function,
   \code{qtpareto} gives the quantile function, and
   \code{rtpareto} generates random deviates.
+
 }
 \references{
   Aban, I. B., Meerschaert, M. M. and Panorska, A. K. (2006)
@@ -39,6 +41,7 @@ rtpareto(n, lower, upper, shape)
   \bold{101}(473),
   270--277.
 
+
 }
 \author{ T. W. Yee }
 \details{
@@ -47,6 +50,7 @@ rtpareto(n, lower, upper, shape)
   for the formula of the probability density function and the
   range restrictions imposed on the parameters.
 
+
 }
 %%\note{
 %%  The truncated Pareto distribution is 
@@ -54,24 +58,27 @@ rtpareto(n, lower, upper, shape)
 \seealso{
   \code{\link{tpareto1}}.
 
+
 }
-\examples{
-lower = 3; upper = 8; k = exp(0.5)
-\dontrun{
-x = seq(lower, upper, len=200)
-plot(x, dtpareto(x, lo=lower, up=upper, shape=k), type="l",
-     main="Truncated Pareto density split into 10 equal areas")
-abline(h=0, col="blue", lty=2)
-qq = qtpareto(seq(0.1,0.9,by=0.1),lo=lower, up=upper,shape=k)
-lines(qq, dtpareto(qq, lo=lower, up=upper, shape=k),
-      col="purple", lty=3, type="h")
+\examples{ lower = 3; upper = 8; kay = exp(0.5)
+\dontrun{ xx = seq(lower - 0.5, upper + 0.5, len = 401)
+plot(xx, dtpareto(xx, low = lower, upp = upper, shape = kay),
+     main = "Truncated Pareto density split into 10 equal areas",
+     type = "l", ylim = 0:1, xlab = "x")
+abline(h = 0, col = "blue", lty = 2)
+qq = qtpareto(seq(0.1, 0.9, by = 0.1), low = lower, upp = upper, shape = kay)
+lines(qq, dtpareto(qq, low = lower, upp = upper, shape = kay),
+      col = "purple", lty = 3, type = "h")
+lines(xx, ptpareto(xx, low = lower, upp = upper, shape = kay), col = "orange")
 }
-pp = seq(0.1,0.9,by=0.1)
-qq = qtpareto(pp, lo=lower, up=upper, shape=k)
-ptpareto(qq, lo=lower, up=upper, shape=k)
-qtpareto(ptpareto(qq, lo=lower, up=upper, shape=k),
-         lo=lower, up=upper, shape=k) - qq # Should be all 0
+pp = seq(0.1, 0.9,by = 0.1)
+qq = qtpareto(pp, low = lower, upp = upper, shape = kay)
+
+ptpareto(qq, low = lower, upp = upper, shape = kay)
+qtpareto(ptpareto(qq, low = lower, upp = upper, shape = kay),
+         low = lower, upp = upper, shape = kay) - qq # Should be all 0
 }
 \keyword{distribution}
 
 
+
diff --git a/man/ugss.Rd b/man/ugss.Rd
new file mode 100644
index 0000000..05169e1
--- /dev/null
+++ b/man/ugss.Rd
@@ -0,0 +1,98 @@
+\name{ugss}
+\alias{ugss}
+\docType{data}
+\title{
+  Undergraduate Statistics Students Lifestyle Questionnaire
+
+%%   ~~ data name/kind ... ~~
+}
+\description{
+  About 800 students studying undergraduate statistics
+  were asked many lifestyle questions.
+  
+%%  ~~ A concise (1-5 lines) description of the dataset. ~~
+}
+\usage{data(ugss)}
+\format{
+  A data frame with 804 observations on the following 29 variables.
+\describe{
+    \item{\code{sex}}{Gender, a factor, (female or male) }
+    \item{\code{age}}{age in years, a numeric vector}
+    \item{\code{eyes}}{eye colour, a factor,
+                       (blue, brown, green, hazel or other)}
+    \item{\code{piercings}}{Number of body piercings, a numeric vector}
+    \item{\code{pierced}}{Any body piercings? a factor, (Yes or No)}
+    \item{\code{tattoos}}{Number of tattoos, a numeric vector}
+    \item{\code{tattooed}}{Any tattoos? a factor, (Yes or No) }
+    \item{\code{glasses}}{Wears glasses etc.? a factor, (Yes or No)}
+    \item{\code{sleep}}{Average number of hours of sleep per night,
+                        a numeric vector}
+    \item{\code{study}}{Average number of hours of study per week,
+                        a numeric vector}
+    \item{\code{tv}}{Average number of hours watching TV per week,
+                        a numeric vector}
+    \item{\code{movies}}{Number of movies seen at a cinema during the last 3 months,
+                         a numeric vector}
+    \item{\code{movies3m}}{Seen movies in last 3 months? 
+                           a factor, (Yes or No)}
+    \item{\code{sport}}{Favourite sport, a factor,
+                        about 19 of them }
+    \item{\code{entertainment}}{Favourite entertainment, a factor,
+                        about 15 of them }
+    \item{\code{fruit}}{Favourite fruit a factor,
+                        about 13 of them }
+    \item{\code{income}}{Average income during semester per week,
+                         a numeric vector }
+    \item{\code{rent}}{Amount spent on rent or room and board per week,
+                         a numeric vector  }
+    \item{\code{clothes}}{Average amount spent on clothes per month,
+                         a numeric vector }
+    \item{\code{hair}}{Average cost to get a hair-cut,
+                         a numeric vector }
+    \item{\code{tobacco}}{Average amount spent on tobacco per week,
+                          a numeric vector}
+    \item{\code{smokes}}{Smokes? a factor, (Yes or No) }
+    \item{\code{alcohol}}{Average amount spent on alcohol per week,
+                          a numeric vector }
+    \item{\code{purchase.alcohol}}{Purchases alcohol? a factor, (Yes or No) }
+    \item{\code{sendtxt}}{Average number text messages sent per day,
+                          a numeric vector.}
+    \item{\code{receivetxt}}{Average number text messages received per day,
+                          a numeric vector.}
+    \item{\code{txts}}{Uses text messaging? a factor, (Yes or No) }
+    \item{\code{country}}{Country of birth,  a factor,
+                          about 54 of them  }
+    \item{\code{status}}{Student status, a factor,
+                         (International, NZ.Citizen, NZ.Resident) }
+  }
+}
+%%\format{
+%%  The format is:
+%% chr "ugss"
+%%}
+\details{
+  This data was collected online and anonymously in 2010.
+  The respondents were students studying an undergraduate statistics
+  course at a New Zealand university.
+  Possibly there are duplicate students (due to failing and
+  re-enrolling).
+  All monies are in NZD.
+  Note the data has had minimal checking.
+  Most numerical variables tend to have measurement error, and all of
+  them happen to be all integer-valued.
+
+
+%%  ~~ If necessary, more details than the __description__ above
+}
+
+
+%%\source{
+%%  ~~ reference to a publication or URL from which the data were obtained ~~
+%%}
+%%\references{
+%%  ~~ possibly secondary sources and usages ~~
+%%}
+\examples{
+summary(ugss)
+}
+\keyword{datasets}
diff --git a/man/undocumented-methods.Rd b/man/undocumented-methods.Rd
index cf1c936..487d988 100644
--- a/man/undocumented-methods.Rd
+++ b/man/undocumented-methods.Rd
@@ -91,6 +91,8 @@
 \alias{guplot,vlm-method}
 %\alias{model.frame,ANY-method}
 \alias{model.frame,vlm-method}
+\alias{plot,rcam0,ANY-method}
+\alias{plot,rcam,ANY-method}
 \alias{plot,cao,ANY-method}
 \alias{plot,vlm,ANY-method}
 \alias{plot,vglm,ANY-method}
@@ -210,6 +212,7 @@
 \alias{summary,cao-method}
 \alias{summary,qrrvglm-method}
 \alias{summary,rcam-method}
+\alias{summary,rcam0-method}
 \alias{summary,rrvglm-method}
 \alias{summary,vgam-method}
 \alias{summary,vglm-method}
diff --git a/man/usagrain.Rd b/man/usagrain.Rd
deleted file mode 100644
index 88f76a8..0000000
--- a/man/usagrain.Rd
+++ /dev/null
@@ -1,42 +0,0 @@
-\name{usagrain}
-\alias{usagrain}
-\docType{data}
-\title{USA Grain Prices Data}
-\description{
-A 4-column matrix.
-
-}
-\usage{data(usagrain)}
-\format{
-  The columns are:
-  \describe{
-    \item{wheat.flour}{numeric}
-    \item{corn}{numeric}
-    \item{wheat}{numeric}
-    \item{rye}{numeric}
-  }
-}
-\details{
-Monthly averages of grain prices
-in the United States for wheat flour, corn, wheat, and rye for the
-period January 1961 through October 1972.
-The units are US dollars per 100 pound sack for wheat flour, and
-per bushel for corn, wheat and rye.
-}
-\source{
-Ahn and Reinsel (1988) 
-}
-\references{
-Ahn, S. K  and Reinsel, G. C. (1988)
-Nested reduced-rank autoregressive models for multiple time series.
-\emph{Journal of the American Statistical Association}, 
-\bold{83}, 849--856.
-}
-\examples{
-cgrain = scale(usagrain, scale=FALSE)   # Center the time series only
-fit = vglm(cgrain ~ 1, rrar(Rank=c(4,1)),
-           eps=1e-3, step=0.5, trace=TRUE, maxit=40)
-summary(fit)
-}
-\keyword{datasets}
-
diff --git a/man/uscrime.Rd b/man/uscrime.Rd
new file mode 100644
index 0000000..8e7a2f3
--- /dev/null
+++ b/man/uscrime.Rd
@@ -0,0 +1,81 @@
+\name{uscrime}
+\alias{uscrime}
+\docType{data}
+\title{
+Estimated Crime in 2009 in USA
+
+}
+\description{
+Crime totals and rates, cross-classified by US state, during 2009.
+
+}
+\usage{data(uscrime)}
+\format{
+  A data frame with 50 observations on the following 22 variables.
+  \describe{
+    \item{\code{State}}{a character vector. White spaces have been
+    replaced by underscores. }
+    \item{\code{Population}}{a numeric vector}
+    \item{\code{ViolentCrimeTotal}}{a numeric vector}
+    \item{\code{Murder}}{a numeric vector}
+    \item{\code{Rape}}{a numeric vector}
+    \item{\code{Robbery}}{a numeric vector}
+    \item{\code{Assault}}{a numeric vector}
+    \item{\code{PropertyCrimeTotal}}{a numeric vector}
+    \item{\code{Burglary}}{a numeric vector}
+    \item{\code{LarcenyTheft}}{a numeric vector}
+    \item{\code{MotorVehicleTheft}}{a numeric vector}
+    \item{\code{ViolentCrimeRate}}{a numeric vector}
+    \item{\code{MurderRate}}{a numeric vector}
+    \item{\code{RapeRate}}{a numeric vector}
+    \item{\code{RobberyRate}}{a numeric vector}
+    \item{\code{AssaultRate}}{a numeric vector}
+    \item{\code{PropertyCrimeRate}}{a numeric vector}
+    \item{\code{BurglaryRate}}{a numeric vector}
+    \item{\code{LarcenyTheftRate}}{a numeric vector}
+    \item{\code{MotorVehicleTheftRate}}{a numeric vector}
+    \item{\code{stateNumber}}{a numeric vector, running from 1 to 50.}
+    \item{\code{abbrev}}{State name as a character vector}
+  }
+}
+\details{
+  Each row is a state of the United States of America.
+  The first half of the columns tend to be totals,
+  and the second half are crime rates per 100,000 population.
+
+
+  The data frame was downloaded as a \code{.csv} file and edited.
+  The full column names are:
+  State, Population, Violent crime total, Murder and nonnegligent
+  Manslaughter, Forcible rape, Robbery, Aggravated assault, Property
+  crime total, Burglary, Larceny-theft, Motor vehicle theft, Violent
+  Crime rate, Murder and nonnegligent manslaughter rate, Forcible
+  rape rate, Robbery rate, Aggravated assault rate, Property crime
+  rate, Burglary rate, Larceny-theft rate, Motor vehicle theft rate,
+  state Number, abbreviation.
+  Technical details governing the data set are given in the URL.
+
+
+
+%%  ~~ If necessary, more details than the __description__ above ~~
+}
+\source{
+  \url{http://www.ucrdatatool.gov},
+  \url{http://www.ucrdatatool.gov/Search/Crime/State/RunCrimeOneYearofData.cfm}
+
+}
+%%\references{
+%%  ~~ possibly secondary sources and usages ~~
+%%}
+\examples{
+\dontrun{  # Louisiana is the one outlier
+plot(MurderRate ~ stateNumber, uscrime,
+     axes = FALSE, type = "h", col = 1:6,
+     main = "USA murder rates in 2009 (per 100,000 population)")
+axis(1, with(uscrime, abbrev), at = with(uscrime, stateNumber),
+     col = 1:6, col.tick = 1:6, cex.lab = 0.5)
+axis(2) }
+tail(uscrime[ sort.list(with(uscrime, MurderRate)), ])
+}
+\keyword{datasets}
+% data(uscrime)
diff --git a/man/usgrain.Rd b/man/usgrain.Rd
new file mode 100644
index 0000000..33afbfb
--- /dev/null
+++ b/man/usgrain.Rd
@@ -0,0 +1,48 @@
+\name{usgrain}
+\alias{usgrain}
+\docType{data}
+\title{Grain Prices Data in USA }
+\description{
+A 4-column matrix.
+
+}
+\usage{data(usgrain)}
+\format{
+  The columns are:
+  \describe{
+    \item{wheat.flour}{numeric}
+    \item{corn}{numeric}
+    \item{wheat}{numeric}
+    \item{rye}{numeric}
+  }
+}
+\details{
+  Monthly averages of grain prices
+  in the United States for wheat flour, corn, wheat, and rye for the
+  period January 1961 through October 1972.
+  The units are US dollars per 100 pound sack for wheat flour, and
+  per bushel for corn, wheat and rye.
+
+
+}
+\source{
+Ahn and Reinsel (1988).
+
+
+}
+\references{
+
+Ahn, S. K  and Reinsel, G. C. (1988)
+Nested reduced-rank autoregressive models for multiple time series.
+\emph{Journal of the American Statistical Association}, 
+\bold{83}, 849--856.
+
+}
+\examples{
+cgrain = scale(usgrain, scale = FALSE) # Center the time series only
+fit = vglm(cgrain ~ 1, rrar(Rank = c(4, 1)),
+           eps = 1e-3, step = 0.5, trace = TRUE, maxit = 40)
+summary(fit)
+}
+\keyword{datasets}
+
diff --git a/man/venice.Rd b/man/venice.Rd
index 0f990fc..2e2ed0f 100644
--- a/man/venice.Rd
+++ b/man/venice.Rd
@@ -1,64 +1,142 @@
 \name{venice}
 \alias{venice}
+\alias{venice90}
 \docType{data}
 \title{ Venice Maximum Sea Levels Data}
 \description{
-  The maximum heights of sea levels recorded at Venice, Italy, between
-  1931 and 1981.
+  Some sea levels data sets recorded at Venice, Italy.
+
+}
+\usage{
+data(venice)
+data(venice90)
 }
-\usage{data(venice)}
 \format{
-  A data frame with 51 observations on the following 11 variables.
+  \code{venice} is a data frame with 51 observations on the following 11
+  variables.
+  It concerns the maximum heights of sea levels between
+  1931 and 1981.
   \describe{
     \item{year}{a numeric vector. }
-    \item{r1}{a numeric vector; the highest recorded value. }
-    \item{r2,r3,r4,r5,r6,r7,r8,r9,r10}{numeric vectors; the second highest recorded value
-     down to the tenth highest recorded value. }
+    \item{r1,r2,r3,r4,r5,r6,r7,r8,r9,r10}{numeric vectors;
+     \code{r1} is the highest recorded value,
+     \code{r2} is the second highest recorded value, etc.
+
+     }
+  }
+
+  \code{venice90} is a data frame with 455 observations on the following
+  7 variables.
+  \describe{
+    \item{year, month, day, hour }{numeric vectors;
+    actual time of the recording. }
+    \item{sealevel}{numeric; sea level. }
+
+    \item{ohour}{numeric;
+   number of hours since the midnight of 31 Dec 1939 and 1 Jan 1940.
+
   }
+ 
+  \item{Year}{numeric vector;
+  approximate year as a real number.
+  The formula is \code{start.year + ohour / (365.26 * 24)}
+  where \code{start.year} is 1940.
+  One can treat \code{Year} as continuous whereas
+  \code{year} can be treated as both continuous and discrete.
+  
+  }
+    
+  
+  }
+
 }
+
+
 \details{
-    The units are cm.
-    In 1935 only the top six values were recorded.   
+  Sea levels are in cm.
+  For \code{venice90}, the value 0 corresponds to a fixed
+  reference point (e.g.,  the mean sea level in 1897 at an old
+  palace of Venice). Clearly since the relative (perceived)
+  mean sea level has been increasing in trend over time (more
+  than an overall 0.4 m increase by 2010), therefore the value 0 is
+  (now) a very low and unusual measurement.
+
+
+  For \code{venice}, in 1935 only the top six values were recorded.   
+
+
+  For \code{venice90}, this is a subset of a data set provided by
+  Paolo Pirazzoli consisting of hourly sea levels from 1940 to 2009.
+  Values greater than 90 cm were extracted, and then declustered
+  (each cluster provides no more than one value, and
+   each value is at least 24 hours apart).
+   Thus the values are more likely to be independent.
+   Of the original \code{(2009-1940+1)*365.26*24} values
+   about 7 percent of these comprise \code{venice90}.
+
+
+   Yet to do: check for consistency between the data sets.
+   Some external data sets elsewhere have some extremes recorded
+   at times not exactly on the hour.
+
+
 }
 \source{
-Pirazzoli, P. (1982)
-Maree estreme a Venezia (periodo 1872--1981).
-\emph{Acqua Aria}, \bold{10}, 1023--1039.
+
+
+  Pirazzoli, P. (1982)
+  Maree estreme a Venezia (periodo 1872--1981).
+  \emph{Acqua Aria}, \bold{10}, 1023--1039.
+
+
+  Thanks to Paolo Pirazzoli and Alberto Tomasin for the \code{venice90}
+  data.
+
 
 }
 \references{
+
+
   Smith, R. L. (1986)
   Extreme value theory based on the \emph{r} largest annual events.
   \emph{Journal of Hydrology},
   \bold{86}, 27--43.
+  
+  
+Battistin, D. and Canestrelli, P. (2006).
+\emph{La serie storica delle maree a Venezia, 1872--2004} (in Italian),
+Comune di Venezia.
+Istituzione Centro Previsione e Segnalazioni Maree.
 
-  Rosen, O. and Cohen, A. (1996)
-  Extreme Percentile Regression.
-  In: Haerdle, W. and Schimek, M. G. (eds.)
-  \emph{Statistical Theory and Computational Aspects of
-      Smoothing: Proceedings of the COMPSTAT '94 Satellite
-      Meeting held in Semmering, Austria, 27--28 August 1994},
-  Physica-Verlag: Heidelberg,
-  pp.200--214.
 
 }
-\examples{
-\dontrun{
-matplot(venice[["year"]], venice[,-1], xlab="Year", ylab="Sea level (cm)")
+\seealso{
+  \code{\link{guplot}},
+  \code{\link{gev}},
+  \code{\link{gpd}}.
+
 }
 
-y = as.matrix(venice[,paste("r",1:10,sep="")])
-fit1 = vgam(y ~ s(year, df=3), gumbel(R=365, mpv=TRUE),
-            data=venice, trace=TRUE, na.action=na.pass)
+
+\examples{
+\dontrun{ matplot(venice[["year"]], venice[, -1], xlab = "Year",
+                  ylab = "Sea level (cm)", type = "l") }
+
+ymat = as.matrix(venice[, paste("r", 1:10, sep = "")])
+fit1 = vgam(ymat ~ s(year, df = 3), gumbel(R = 365, mpv = TRUE),
+            data = venice, trace = TRUE, na.action = na.pass)
 head(fitted(fit1))
 
-\dontrun{
-par(mfrow=c(2,1), xpd=TRUE)
-plot(fit1, se=TRUE, lcol="blue", llwd=2, slty="dashed")
+\dontrun{ par(mfrow = c(2, 1), xpd = TRUE)
+plot(fit1, se = TRUE, lcol = "blue", llwd = 2, slty = "dashed")
 
-par(mfrow=c(1,1), bty="l", xpd=TRUE, las=1)
-qtplot(fit1, mpv=TRUE, lcol=c(1,2,5), tcol=c(1,2,5), 
-       llwd=2, pcol="blue", tadj=0.1)
-}
+par(mfrow = c(1,1), bty = "l", xpd = TRUE, las = 1)
+qtplot(fit1, mpv = TRUE, lcol = c(1, 2, 5), tcol = c(1, 2, 5),
+       llwd = 2, pcol = "blue", tadj = 0.1) }
+
+plot(sealevel ~ Year, data = venice90, type = "h", col = "blue")
+summary(venice90)
+dim(venice90)
+round(100 * nrow(venice90) / ((2009-1940+1)*365.26*24), dig = 3)
 }
 \keyword{datasets}
diff --git a/man/vgam-class.Rd b/man/vgam-class.Rd
index 11ca00f..aab4582 100644
--- a/man/vgam-class.Rd
+++ b/man/vgam-class.Rd
@@ -113,7 +113,7 @@ used by \code{\link{plotvgam}}; the plotting parameters
         may be put here.
  }
     \item{\code{prior.weights}:}{Object of class
-\code{"numeric"}, from class \code{ "vlm"} 
+\code{"matrix"}, from class \code{ "vlm"} 
 holding the initially supplied weights.
  }
     \item{\code{qr}:}{Object of class \code{"list"},
diff --git a/man/vgam.control.Rd b/man/vgam.control.Rd
index 5768c5e..81b0813 100644
--- a/man/vgam.control.Rd
+++ b/man/vgam.control.Rd
@@ -173,9 +173,9 @@ Vector generalized additive models.
 
 \examples{
 data(pneumo)
-pneumo = transform(pneumo, let=log(exposure.time))
-vgam(cbind(normal, mild, severe) ~ s(let, df=3), multinomial,
-     pneumo, trace=TRUE, eps=1e-4, maxit=10)
+pneumo = transform(pneumo, let = log(exposure.time))
+vgam(cbind(normal, mild, severe) ~ s(let, df = 3), multinomial,
+     pneumo, trace = TRUE, eps = 1e-4, maxit = 10)
 }
 \keyword{models}
 \keyword{regression}
diff --git a/man/vglm-class.Rd b/man/vglm-class.Rd
index cc36354..e903e78 100644
--- a/man/vglm-class.Rd
+++ b/man/vglm-class.Rd
@@ -101,7 +101,7 @@ used by \code{\link{plotvgam}}; the plotting parameters
         may be put here.
  }
     \item{\code{prior.weights}:}{Object of class
-\code{"numeric"}, from class \code{ "vlm"} 
+\code{"matrix"}, from class \code{ "vlm"} 
 holding the initially supplied weights.
  }
     \item{\code{qr}:}{Object of class \code{"list"},
diff --git a/man/vglm.control.Rd b/man/vglm.control.Rd
index bebbb7a..b4f2625 100644
--- a/man/vglm.control.Rd
+++ b/man/vglm.control.Rd
@@ -8,7 +8,7 @@
 
 }
 \usage{
-vglm.control(checkwz=TRUE, criterion = names(.min.criterion.VGAM),
+vglm.control(checkwz = TRUE, criterion = names(.min.criterion.VGAM),
              epsilon = 1e-07, half.stepsizing = TRUE,
              maxit = 30, stepsize = 1, save.weight = FALSE,
              trace = FALSE, wzepsilon = .Machine$double.eps^0.75, 
@@ -178,9 +178,9 @@ These are handled using the \code{xij} argument.
 
 \examples{
 # Example 1.
-pneumo = transform(pneumo, let=log(exposure.time))
-vglm(cbind(normal,mild,severe) ~ let, multinomial, data=pneumo,
-     crit="coef", step=0.5, trace=TRUE, eps=1e-8, maxit=40)
+pneumo = transform(pneumo, let = log(exposure.time))
+vglm(cbind(normal, mild, severe) ~ let, multinomial, data = pneumo,
+     crit = "coef", step = 0.5, trace = TRUE, eps = 1e-8, maxit = 40)
 
 
 # Example 2. The use of the xij argument (simple case).
diff --git a/man/vonmises.Rd b/man/vonmises.Rd
index d351b87..8fca26f 100644
--- a/man/vonmises.Rd
+++ b/man/vonmises.Rd
@@ -10,7 +10,7 @@
 vonmises(llocation="elogit", lscale="loge",
          elocation=if(llocation=="elogit") list(min=0, max=2*pi)
          else list(), escale=list(), ilocation=NULL,
-         iscale=NULL, method.init=1, zero=NULL)
+         iscale=NULL, imethod=1, zero=NULL)
 }
 %- maybe also 'usage' for other objects documented here.
 \arguments{
@@ -29,18 +29,18 @@ vonmises(llocation="elogit", lscale="loge",
   \item{ilocation}{
   Initial value for the location \eqn{a} parameter.
   By default, an initial value is chosen internally using
-  \code{method.init}. Assigning a value will override
-  the argument \code{method.init}.
+  \code{imethod}. Assigning a value will override
+  the argument \code{imethod}.
 
   }
   \item{iscale}{
   Initial value for the scale \eqn{k} parameter.
   By default, an initial value is chosen internally using
-  \code{method.init}. Assigning a value will override
-  the argument \code{method.init}.
+  \code{imethod}. Assigning a value will override
+  the argument \code{imethod}.
 
   }
-  \item{method.init}{
+  \item{imethod}{
   An integer with value \code{1} or \code{2} which
   specifies the initialization method. If failure to converge occurs
   try the other value, or else specify a value for 
diff --git a/man/weibull.Rd b/man/weibull.Rd
index 9afa1a2..3951339 100644
--- a/man/weibull.Rd
+++ b/man/weibull.Rd
@@ -2,6 +2,7 @@
 \alias{weibull}
 %\alias{weibullff}
 %\alias{weibull.lsh}
+%\alias{weibull3}
 %- Also NEED an '\alias' for EACH other topic documented here.
 \title{ Weibull Distribution Family Function }
 \description{
@@ -12,7 +13,7 @@
 \usage{
 weibull(lshape = "loge", lscale = "loge", 
         eshape = list(), escale = list(),
-        ishape = NULL,   iscale = NULL, nrfs = 1, method.init = 1, zero = 2)
+        ishape = NULL,   iscale = NULL, nrfs = 1, imethod = 1, zero = 2)
 }
 %- maybe also 'usage' for other objects documented here.
 \arguments{
@@ -42,9 +43,11 @@ weibull(lshape = "loge", lscale = "loge",
   positive-definite working weights.
 
   }
-  \item{method.init}{
+  \item{imethod}{
   Initialization method used if there are censored observations.
   Currently only the values 1 and 2 are allowed.
+
+
   }
   \item{zero}{
   An integer specifying which linear/additive predictor is to be modelled
@@ -91,6 +94,7 @@ weibull(lshape = "loge", lscale = "loge",
   The object is used by modelling functions such as \code{\link{vglm}},
   and \code{\link{vgam}}.
 
+
 }
 \references{
 Kleiber, C. and Kotz, S. (2003)
@@ -103,6 +107,12 @@ Johnson, N. L. and Kotz, S. and Balakrishnan, N. (1994)
 2nd edition, Volume 1, New York: Wiley.
 
 
+Rinne, Horst. (2009)
+\emph{The Weibull Distribution: A Handbook}.
+Boca Raton, FL, USA: CRC Press.
+
+
+
 Gupta, R. D. and Kundu, D. (2006)
 On the comparison of Fisher information of the
 Weibull and GE distributions,
@@ -111,6 +121,19 @@ Weibull and GE distributions,
 3130--3144.
 
 
+  Smith, R. L. (1985)
+  Maximum likelihood estimation in a class of nonregular cases.
+  \emph{Biometrika}, \bold{72}, 67--90.
+
+
+  Smith, R. L. and Naylor, J. C. (1987)
+  A comparison of maximum likelihood and Bayesian estimators
+  for the three-parameter Weibull distribution.
+  \emph{Applied Statistics}, \bold{36}, 358--369.
+
+
+
+
 }
 \author{ T. W. Yee }
 \note{
@@ -124,6 +147,15 @@ Weibull and GE distributions,
   \eqn{1/Y} where \eqn{Y} has a Weibull(\eqn{a,b}) distribution, is
   known as the log-Gompertz distribution.
 
+
+  There are problems implementing the three-parameter Weibull
+  distribution. These are because
+  the classical regularity conditions for the
+  asymptotic properties of the MLEs are not satisfied because the
+  support of the distribution depends on one of the parameters.
+
+
+
 }
 \section{Warning}{
   This function is under development to handle other censoring situations.
@@ -143,6 +175,8 @@ Weibull and GE distributions,
     \code{\link{gev}},
     \code{\link{lognormal}},
     \code{\link{expexp}}.
+
+
 }
 \examples{
 # Complete data
diff --git a/man/zanegbinUC.Rd b/man/zanegbinUC.Rd
index 3afbb52..ced39b5 100644
--- a/man/zanegbinUC.Rd
+++ b/man/zanegbinUC.Rd
@@ -31,7 +31,7 @@ rzanegbin(n, p0, size, prob = NULL, munb = NULL)
   }
   \item{p0}{
   Probability of zero, called \eqn{p0}.
-  The default value of \code{p0=0} corresponds
+  The default value of \code{p0 = 0} corresponds
   to the response having a positive negative binomial distribution.
 
   }
@@ -39,7 +39,7 @@ rzanegbin(n, p0, size, prob = NULL, munb = NULL)
 \details{
   The probability function of \eqn{Y} is 0 with probability \code{p0},
   else a positive
-  \eqn{negative binomial(\mu_{nb}, size)}{negative binomial(munb, size)}
+  negative binomial(\eqn{\mu_{nb}}{munb}, size)
   distribution.
 
 }
@@ -54,7 +54,7 @@ rzanegbin(n, p0, size, prob = NULL, munb = NULL)
 \author{ Thomas W. Yee }
 \note{ 
     The argument \code{p0} is recycled to the required length, and
-    must have values which lie in the interval [0,1].
+    must have values which lie in the interval \eqn{[0,1]}.
 
 }
 
@@ -65,17 +65,16 @@ rzanegbin(n, p0, size, prob = NULL, munb = NULL)
 }
 \examples{
 munb <- 3; size <- 4; p0 <- 0.3; x <- (-1):7
-(ii <- dzanegbin(x,   p0 = p0, munb = munb, size = size))
- table(rzanegbin(100, p0 = p0, munb = munb, size = size))
+dzanegbin(x,   p0 = p0, munb = munb, size = size)
+table(rzanegbin(100, p0 = p0, munb = munb, size = size))
 
-\dontrun{
-x = 0:10
+\dontrun{ x = 0:10
 barplot(rbind(dzanegbin(x, p0 = p0, munb = munb, size = size),
                 dnbinom(x, mu = munb, size = size)),
-        beside = TRUE, col = c("blue","green"), cex.main=0.7, las=1,
+        beside = TRUE, col = c("blue","green"), cex.main = 0.7, las = 1,
         ylab = "Probability",names.arg = as.character(x),
-        main=paste("ZANB(p0=", p0, ", munb=", munb, ", size=", size,
-                   ") [blue] vs",  " NB(mu=", munb, ", size=", size,
+        main = paste("ZANB(p0 =", p0, ", munb =", munb, ", size =", size,
+                   ") [blue] vs",  " NB(mu =", munb, ", size =", size,
                    ") [green] densities", sep="")) }
 }
 \keyword{distribution}
diff --git a/man/zanegbinomial.Rd b/man/zanegbinomial.Rd
index cfa6be9..bc52cdd 100644
--- a/man/zanegbinomial.Rd
+++ b/man/zanegbinomial.Rd
@@ -9,9 +9,9 @@
 
 }
 \usage{
-zanegbinomial(lp0 = "logit", lmunb = "loge", lk = "loge",
-              ep0 = list(), emunb =list(), ek = list(), ipnb0 = NULL,
-              ik = NULL, zero = -3, cutoff = 0.995, method.init = 1,
+zanegbinomial(lp0 = "logit", lmunb = "loge", lsize = "loge",
+              ep0 = list(), emunb = list(), esize = list(), ipnb0 = NULL,
+              isize = NULL, zero = -3, cutoff = 0.995, imethod = 1,
               shrinkage.init = 0.95)
 }
 %- maybe also 'usage' for other objects documented here.
@@ -27,14 +27,14 @@ zanegbinomial(lp0 = "logit", lmunb = "loge", lk = "loge",
     See \code{\link{Links}} for more choices.
 
   }
-  \item{lk}{ 
+  \item{lsize}{ 
     Parameter link function applied to the reciprocal of the dispersion
     parameter, called \code{k}. That is, as \code{k} increases, the
     variance of the response decreases.
     See \code{\link{Links}} for more choices.
 
   }
-  \item{ep0, emunb, ek}{
+  \item{ep0, emunb, esize}{
   List. Extra argument for the respective links.
   See \code{earg} in \code{\link{Links}} for general information.
 
@@ -45,7 +45,7 @@ zanegbinomial(lp0 = "logit", lmunb = "loge", lk = "loge",
     and it is ok to give one value each for each response/species.
 
   }
-  \item{ik}{ 
+  \item{isize}{ 
     Optional initial values for \code{k}.
     If given, they must be positive, and give one value
     for each response/species.
@@ -55,7 +55,7 @@ zanegbinomial(lp0 = "logit", lmunb = "loge", lk = "loge",
     Integer valued vector, usually assigned \eqn{-3} or \eqn{3} if
     used at all. Specifies which of the three linear predictors are
     modelled as an intercept only. By default, the \code{k} parameter
-    (after \code{lk} is applied) for each response is modelled as
+    (after \code{lsize} is applied) for each response is modelled as
     a single unknown number that is estimated. It can be modelled as a
     function of the explanatory variables by setting \code{zero = NULL}.
     A negative value means that the value is recycled, so setting \eqn{-3}
@@ -71,7 +71,7 @@ zanegbinomial(lp0 = "logit", lmunb = "loge", lk = "loge",
     \code{qnegbin(p)}.
 
   }
-  \item{method.init, shrinkage.init}{
+  \item{imethod, shrinkage.init}{
   See \code{\link{negbinomial}}
   and \code{\link{CommonVGAMffArguments}}.
 
@@ -168,9 +168,10 @@ for counts with extra zeros.
 
 \examples{
 zdata <- data.frame(x = runif(nn <- 2000))
-zdata <- transform(zdata, p0 = logit(-1 + 2*x, inverse = TRUE),
-                          y1 = rposnegbin(nn, munb = exp(0+2*x), size = exp(1)),
-                          y2 = rposnegbin(nn, munb = exp(1+2*x), size = exp(1)))
+zdata <- transform(zdata,
+                   p0 = logit(-1 + 2*x, inverse = TRUE),
+                   y1 = rposnegbin(nn, munb = exp(0+2*x), size = exp(1)),
+                   y2 = rposnegbin(nn, munb = exp(1+2*x), size = exp(1)))
 zdata <- transform(zdata, y1 = ifelse(runif(nn) < p0, 0, y1),
                           y2 = ifelse(runif(nn) < p0, 0, y2))
 with(zdata, table(y1))
diff --git a/man/zapoisUC.Rd b/man/zapoisUC.Rd
index c14124c..1443de9 100644
--- a/man/zapoisUC.Rd
+++ b/man/zapoisUC.Rd
@@ -26,7 +26,7 @@ rzapois(n, lambda, p0 = 0)
   \item{lambda}{ Vector of positive means. }
   \item{p0}{
   Probability of zero, called \eqn{p0}.
-  The default value of \code{p0=0} corresponds
+  The default value of \code{p0 = 0} corresponds
   to the response having a positive Poisson distribution.
 
   }
@@ -47,7 +47,7 @@ rzapois(n, lambda, p0 = 0)
 \author{ Thomas W. Yee }
 \note{ 
     The argument \code{p0} is recycled to the required length, and
-    must have values which lie in the interval [0,1].
+    must have values which lie in the interval \eqn{[0,1]}.
 
 }
 
@@ -63,12 +63,11 @@ table(rzapois(100, lambda, p0))
 table(qzapois(runif(100), lambda, p0))
 round(dzapois(0:10, lambda, p0) * 100) # Should be similar
 
-\dontrun{
-x = 0:10
+\dontrun{ x = 0:10
 barplot(rbind(dzapois(x, lambda, p0), dpois(x, lambda)),
-        beside = TRUE, col = c("blue","green"),
-        main=paste("ZAP(", lambda, ", p0=", p0, ") [blue] vs",
-                   " Poisson(", lambda, ") [green] densities", sep=""),
-        names.arg = as.character(x), ylab="Probability") }
+        beside = TRUE, col = c("blue", "green"), las = 1,
+        main = paste("ZAP(", lambda, ", p0 = ", p0, ") [blue] vs",
+                   " Poisson(", lambda, ") [green] densities", sep = ""),
+        names.arg = as.character(x), ylab = "Probability") }
 }
 \keyword{distribution}
diff --git a/man/zapoisson.Rd b/man/zapoisson.Rd
index 74388af..957a18c 100644
--- a/man/zapoisson.Rd
+++ b/man/zapoisson.Rd
@@ -145,14 +145,14 @@ contains further information and examples.
 }
 
 \examples{
-zapdata <- data.frame(x = runif(nn <- 1000))
-zapdata <- transform(zapdata, p0     = logit( -1 + 1*x, inverse = TRUE),
-                              lambda = loge(-0.5 + 2*x, inverse = TRUE))
+zapdata <- data.frame(x2 = runif(nn <- 1000))
+zapdata <- transform(zapdata, p0     = logit( -1 + 1*x2, inverse = TRUE),
+                              lambda = loge(-0.5 + 2*x2, inverse = TRUE))
 zapdata <- transform(zapdata, y = rzapois(nn, lambda, p0 = p0))
 
 with(zapdata, table(y))
-fit <- vglm(y ~ x, zapoisson, zapdata, trace = TRUE)
-fit <- vglm(y ~ x, zapoisson, zapdata, trace = TRUE, crit = "c")
+fit <- vglm(y ~ x2, zapoisson, zapdata, trace = TRUE)
+fit <- vglm(y ~ x2, zapoisson, zapdata, trace = TRUE, crit = "c")
 head(fitted(fit))
 head(predict(fit))
 head(predict(fit, untransform = TRUE))
diff --git a/man/zero.Rd b/man/zero.Rd
index eba4061..a82feeb 100644
--- a/man/zero.Rd
+++ b/man/zero.Rd
@@ -8,7 +8,7 @@
   only.
 }
 % \usage{
-% VGAMfamilyFunction(zero=3)
+% VGAMfamilyFunction(zero = 3)
 % }
 \value{
   Nothing is returned.
@@ -26,13 +26,17 @@
   there is potential conflict of definition.
   Currently no checking for consistency is made. 
 
+
   The argument \code{zero} may be renamed in the future to
   something better.
 
+
 }
 \section{Side Effects}{
   The argument creates the appropriate constraint matrices
   internally.
+
+
 }
 \details{
   Often a certain parameter needs to be modelled simply while other
@@ -44,38 +48,47 @@
   Using the \code{zero} argument allows this to be fitted conveniently
   without having to input all the constraint matrices explicitly.
 
+
   The \code{zero} argument should be assigned an integer vector from the
   set \{\code{1:M}\} where \code{M} is the number of linear/additive
-  predictors.  Full details about constraint matrices can be found in
+  predictors. Full details about constraint matrices can be found in
   the references.
 
+
 }
 
 \author{T. W. Yee }
 \note{
-  In all \pkg{VGAM} family functions \code{zero=NULL} means
+  In all \pkg{VGAM} family functions \code{zero = NULL} means
   none of the linear/additive predictors are modelled as
   intercepts-only.
-  Almost all \pkg{VGAM} family function have \code{zero=NULL}
+  Almost all \pkg{VGAM} family function have \code{zero = NULL}
   as the default, but there are some exceptions, e.g.,
   \code{\link{binom2.or}}.
 
-  Typing something like \code{coef(fit, matrix=TRUE)} is a useful
+
+  Typing something like \code{coef(fit, matrix = TRUE)} is a useful
   way to ensure that the \code{zero} argument has worked as expected.
 
+
 }
 \references{
+
 Yee, T. W. and Wild, C. J. (1996)
 Vector generalized additive models.
 \emph{Journal of the Royal Statistical Society, Series B, Methodological},
 \bold{58}, 481--493.
 
+
 Yee, T. W. and Hastie, T. J. (2003)
 Reduced-rank vector generalized linear models.
 \emph{Statistical Modelling},
 \bold{3}, 15--41.
 
+
 \url{http://www.stat.auckland.ac.nz/~yee}
+
+
 }
 
 \seealso{
@@ -88,8 +101,8 @@ args(binom2.or)
 args(gpd)
 
 #LMS quantile regression example
-fit = vglm(BMI ~ bs(age, df=4), lms.bcg(zero=c(1,3)), bminz, trace=TRUE)
-coef(fit, matrix=TRUE)
+fit = vglm(BMI ~ bs(age, df = 4), lms.bcg(zero = c(1,3)), bminz, trace = TRUE)
+coef(fit, matrix = TRUE)
 }
 \keyword{models}
 \keyword{regression}
diff --git a/man/zeta.Rd b/man/zeta.Rd
index 1108e5b..9c5dd8b 100644
--- a/man/zeta.Rd
+++ b/man/zeta.Rd
@@ -26,17 +26,19 @@ zeta(x, deriv = 0)
 }
 \details{
   While the usual definition involves an infinite series, more efficient
-  methods have been devised to compute the value.  In particular,
-  this function uses Euler-Maclaurin summation.  Theoretically, the
+  methods have been devised to compute the value. In particular,
+  this function uses Euler-Maclaurin summation. Theoretically, the
   zeta function can be computed over the whole complex plane because of
   analytic continuation.
 
+
   The formula used here for analytic continuation is
   \deqn{\zeta(s) = 2^s \pi^{s-1} \sin(\pi s/2) \Gamma(1-s) \zeta(1-s).}{%
         zeta(s)  = 2^s * pi^(s-1) * sin(pi*s/2) * gamma(1-s) *  zeta(1-s).}
   This is actually one of several formulas, but this one was discovered
   by Riemann himself and is called the \emph{functional equation}.
 
+
 }
 
 \section{Warning}{
@@ -46,15 +48,18 @@ zeta(x, deriv = 0)
   \code{\link[base:Special]{gamma}} function does not handle complex
   arguments.
 
+
 }
 
 \value{
   A vector/matrix of computed values.
 
+
 %  The derivative is attached as an attribute zz.
 }
 \references{ 
 
+
 Riemann, B. (1859)
 Ueber die Anzahl der Primzahlen unter einer gegebenen Grosse.
 \emph{Monatsberichte der Berliner Akademie, November 1859}.
@@ -79,10 +84,11 @@ New York: Dover Publications Inc.
 
 
 }
-\author{ T. W. Yee, with the help of G. J. Tee. }
+\author{ T. W. Yee, with the help of Garry J. Tee. }
 \note{ 
-  Estimation of the parameter of the zeta distribution can be achieved
-  with \code{\link{zetaff}}.
+  Estimation of the parameter of the zeta distribution can
+  be achieved with \code{\link{zetaff}}.
+
 
 }
 
@@ -91,38 +97,37 @@ New York: Dover Publications Inc.
   \code{\link{lerch}},
   \code{\link[base:Special]{gamma}}.
 
+
 }
 \examples{
 zeta(2:10)
 
 \dontrun{
-curve(zeta, -13, 0.8, xlim=c(-12,10), ylim=c(-1,4), col="red")
-curve(zeta, 1.2,  12, add = TRUE, col="red")
-abline(v=0, h=c(0,1), lty="dashed")
-
-# Close up plot
-curve(zeta, -14, -0.4, col="red")
-abline(v=0, h=0, lty="dashed")
-
-# Plot of the first derivative
-x = seq(0.04, 0.8, len=100)
-plot(x, zeta(x, deriv=1), type="l", las=1, col="blue",
-     xlim=c(0.04,3), ylim=c(-6,0), main="zeta'(x)")
-x = seq(1.2, 3, len=100)
-lines(x, zeta(x, deriv=1), col="blue")
-abline(v=0, h=0, lty="dashed") }
+curve(zeta, -13, 0.8, xlim = c(-12, 10), ylim = c(-1, 4), col = "orange")
+curve(zeta, 1.2,  12, add = TRUE, col = "orange")
+abline(v = 0, h = c(0, 1), lty = "dashed")
+
+curve(zeta, -14, -0.4, col = "orange")   # Close up plot
+abline(v = 0, h = 0, lty = "dashed")
+
+x = seq(0.04, 0.8, len = 100)   # Plot of the first derivative
+plot(x, zeta(x, deriv = 1), type = "l", las = 1, col = "blue",
+     xlim = c(0.04, 3), ylim = c(-6, 0), main = "zeta'(x)")
+x = seq(1.2, 3, len = 100)
+lines(x, zeta(x, deriv = 1), col = "blue")
+abline(v = 0, h = 0, lty = "dashed") }
 
 zeta(2) - pi^2 / 6      # Should be zero
 zeta(4) - pi^4 / 90     # Should be zero
 zeta(6) - pi^6 / 945    # Should be 0
 zeta(8) - pi^8 / 9450   # Should be 0
-# zeta(0, deriv=1) + 0.5 * log(2*pi) # Should be 0
+# zeta(0, deriv = 1) + 0.5 * log(2*pi) # Should be 0
 }
 \keyword{math}
 
-% curve(zeta, -13, 0.8, xlim=c(-12,10), ylim=c(-1,4), col="red")
-% curve(zeta, 1.2,  12, add = TRUE, col="red")
-% abline(v=0, h=c(0,1), lty="dashed")
+% curve(zeta, -13, 0.8, xlim = c(-12, 10), ylim = c(-1, 4), col = "orange")
+% curve(zeta, 1.2,  12, add = TRUE, col = "orange")
+% abline(v = 0, h = c(0,1), lty = "dashed")
 
 
 
diff --git a/man/zetaUC.Rd b/man/zetaUC.Rd
index a252ac5..25d694e 100644
--- a/man/zetaUC.Rd
+++ b/man/zetaUC.Rd
@@ -5,10 +5,11 @@
 \title{The Zeta Distribution }
 \description{
   Density for the zeta distribution.
+
 }
 % zz p is not a good argument name, esp. with qzeta(p, p)
 \usage{
-dzeta(x, p, log=FALSE)
+dzeta(x, p, log = FALSE)
 }
 %- maybe also 'usage' for other objects documented here.
 \arguments{
@@ -16,7 +17,7 @@ dzeta(x, p, log=FALSE)
   \item{p}{ The parameter \eqn{p}. This must be positive. }
   \item{log}{
   Logical.
-  If \code{log=TRUE} then the logarithm of the density is returned.
+  If \code{log = TRUE} then the logarithm of the density is returned.
 
   }
 
@@ -35,15 +36,18 @@ dzeta(x, p, log=FALSE)
 }
 \references{
 
+
 Johnson N. L., Kotz S., and Balakrishnan N. (1993)
 \emph{Univariate Discrete Distributions},
 2nd ed.
 New York: Wiley.
 
+
 % Lindsey, J. K. (2002zz)
 % \emph{Applied Statistical Modelling}, 2nd ed.
 % London: Chapman & Hall.zz
 
+
 % Knight, K. (2002zz)
 % Theory book.
 % London: Chapman & Hall.zz
@@ -54,25 +58,27 @@ New York: Wiley.
     The \pkg{VGAM} family function \code{\link{zetaff}} estimates the
     parameter \eqn{p}.
 
+
 }
 
 \section{Warning}{
     This function has not been fully tested.
 
+
 }
 
 \seealso{
     \code{\link{zeta}},
     \code{\link{zetaff}}.
 
+
 }
 
 \examples{
-dzeta(1:20, p=2)
-\dontrun{
-plot(1:6, dzeta(1:6, p=4), type="h", las=1, ylab="Probability",
-     main="zeta probability function; black: p = 4; blue: p = 2")
-points(0.10+1:6, dzeta(1:6, p=2), type="h", col="blue") }
+dzeta(1:20, p = 2)
+\dontrun{ plot(1:6, dzeta(1:6, p = 4), type = "h", las = 1, ylab = "Probability",
+     main = "zeta probability function; black: p = 4; blue: p = 2")
+points(0.10 + 1:6, dzeta(1:6, p = 2), type = "h", col = "blue") }
 }
 \keyword{distribution}
 
diff --git a/man/zetaff.Rd b/man/zetaff.Rd
index bff8e35..255a2ff 100644
--- a/man/zetaff.Rd
+++ b/man/zetaff.Rd
@@ -6,26 +6,17 @@
   Estimates the parameter of the zeta distribution.
 }
 \usage{
-zetaff(link = "loge", earg=list(), init.p = NULL)
+zetaff(link = "loge", earg = list(), init.p = NULL)
 }
 %- maybe also 'usage' for other objects documented here.
 \arguments{
-  \item{link}{
-  Parameter link function applied to the (positive) parameter \eqn{p}.
+  \item{link, earg, init.p}{
+  See \code{\link{CommonVGAMffArguments}} for more information.
+  These arguments apply to the (positive) parameter \eqn{p}.
   See \code{\link{Links}} for more choices.
   Choosing \code{\link{loglog}} constrains \eqn{p>1}, but
   may fail if the maximum likelihood estimate is less than one.
 
-  }
-  \item{earg}{
-  List. Extra argument for the link.
-  See \code{earg} in \code{\link{Links}} for general information.
-
-  }
-  \item{init.p}{
-  Optional initial value for the parameter \eqn{p}.
-  The default is to choose an initial value internally.
-  If converge failure occurs use this argument to input a value.
 
   }
 }
@@ -40,15 +31,17 @@ The parameter \eqn{p} is positive, therefore a log link
 is the default.
 The mean of \eqn{Y} is
 \eqn{\mu = \zeta(p) / \zeta(p+1)}{mu = zeta(p)/zeta(p+1)}
-provided \eqn{p>1}.
+(provided \eqn{p>1}) and these are the fitted values.
 The variance of \eqn{Y} is
 \eqn{\zeta(p-1) / \zeta(p+1) - \mu^2}{zeta(p-1) / zeta(p+1) - mu^2}
 provided \eqn{p>2}.
 
+
 It appears that good initial values are needed for successful
 convergence. If convergence is not obtained, try several values
 ranging from values near 0 to values about 10 or more.
 
+
 }
 
 \value{
@@ -64,16 +57,19 @@ ranging from values near 0 to values about 10 or more.
 
 \references{ 
 
+
 pp.527-- of Chapter 11 of
     Johnson N. L., Kemp, A. W. and Kotz S. (2005)
     \emph{Univariate Discrete Distributions},
     3rd edition,
     Hoboken, New Jersey: Wiley.
 
+
 Knight, K. (2000)
 \emph{Mathematical Statistics}. 
 Boca Raton: Chapman & Hall/CRC Press.
 
+
 }
 \author{ T. W. Yee }
 \note{
@@ -91,16 +87,16 @@ Boca Raton: Chapman & Hall/CRC Press.
 }
 \examples{
 zdata = data.frame(y = 1:5, w =  c(63, 14, 5, 1, 2)) # Knight, p.304
-fit = vglm(y ~ 1, zetaff, zdata, trace=TRUE, wei=w, crit="c")
+fit = vglm(y ~ 1, zetaff, zdata, trace = TRUE, weight = w, crit = "c")
 (phat = Coef(fit)) # 1.682557
 with(zdata, cbind(round(dzeta(y, phat) * sum(w), 1), w))
 
 with(zdata, weighted.mean(y, w))
-fitted(fit, mat=FALSE)
+fitted(fit, matrix = FALSE)
 predict(fit)
 
 # The following should be zero at the MLE:
-with(zdata, mean(log(rep(y, w))) + zeta(1+phat, deriv=1)/zeta(1+phat))
+with(zdata, mean(log(rep(y, w))) + zeta(1+phat, deriv = 1) / zeta(1+phat))
 }
 \keyword{models}
 \keyword{regression}
diff --git a/man/zibinomUC.Rd b/man/zibinomUC.Rd
index aeaa512..82f0d56 100644
--- a/man/zibinomUC.Rd
+++ b/man/zibinomUC.Rd
@@ -7,8 +7,9 @@
 %- Also NEED an '\alias' for EACH other topic documented here.
 \title{ Zero-Inflated Binomial Distribution }
 \description{
-  Density, distribution function, quantile function and random generation
-  for the zero-inflated binomial distribution with parameter \code{phi}.
+  Density, distribution function, quantile function and random
+  generation for the zero-inflated binomial distribution with
+  parameter \code{phi}.
 
 }
 \usage{
@@ -29,8 +30,9 @@ rzibinom(n, size, prob, phi = 0)
       \code{\link[stats:Binomial]{pbinom}}.}
   \item{phi}{ 
   Probability of zero (ignoring the binomial distribution), called
-  \eqn{\phi}{phi}.  The default value of \eqn{\phi=0}{phi=0} corresponds
-  to the response having an ordinary binomial distribution.
+  \eqn{\phi}{phi}.  The default value of \eqn{\phi=0}{phi=0}
+  corresponds to the response having an ordinary binomial
+  distribution.
 
   }
 }
@@ -40,42 +42,46 @@ rzibinom(n, size, prob, phi = 0)
   probability \eqn{1-\phi}{1-phi}. Thus 
   \deqn{P(Y=0) =\phi + (1-\phi) P(W=0)}{%
         P(Y=0) = phi + (1-phi) * P(W=0)}
-  where \eqn{W} is distributed \eqn{Binomial(size, prob)}{Binomial(size, prob)}.
+  where \eqn{W} is
+  distributed \eqn{Binomial(size, prob)}{Binomial(size, prob)}.
+
+
 }
 \value{
   \code{dzibinom} gives the density,
   \code{pzibinom} gives the distribution function,
   \code{qzibinom} gives the quantile function, and
   \code{rzibinom} generates random deviates.
+
 }
 %\references{ }
 \author{ Thomas W. Yee }
 \note{ 
-    The argument \code{phi} is recycled to the required length, and
-    must have values which lie in the interval [0,1].
+    The argument \code{phi} is recycled to the required length,
+    and must have values which lie in the interval \eqn{[0,1]}.
 
 }
 
 \seealso{ 
     \code{\link{zibinomial}},
     \code{\link[stats:Binomial]{dbinom}}.
+
 }
 \examples{
 prob = 0.2; size = 10; phi = 0.5
-(ii = dzibinom(0:size, size, prob, phi=phi))
-max(abs(cumsum(ii) - pzibinom(0:size, size, prob, phi=phi)))  # Should be 0
-table(rzibinom(100, size, prob, phi=phi))
+(ii = dzibinom(0:size, size, prob, phi = phi))
+max(abs(cumsum(ii) - pzibinom(0:size, size, prob, phi = phi)))  # Should be 0
+table(rzibinom(100, size, prob, phi = phi))
 
-table(qzibinom(runif(100), size, prob, phi=phi))
-round(dzibinom(0:10, size, prob, phi=phi) * 100) # Should be similar
+table(qzibinom(runif(100), size, prob, phi = phi))
+round(dzibinom(0:10, size, prob, phi = phi) * 100) # Should be similar
 
-\dontrun{
-x = 0:size
-barplot(rbind(dzibinom(x, size, prob, phi=phi),
-              dbinom(x, size, prob)),
-        beside = TRUE, col = c("blue","green"),
-        main=paste("ZIB(", size, ", ", prob, ", phi=", phi, ") (blue) vs",
-                   " Binomial(", size, ", ", prob, ") (green)", sep=""),
-        names.arg = as.character(x), las=1, lwd=2) }
+\dontrun{ x = 0:size
+barplot(rbind(dzibinom(x, size, prob, phi = phi),
+                dbinom(x, size, prob)),
+        beside = TRUE, col = c("blue", "green"), ylab = "Probability",
+        main = paste("ZIB(", size, ", ", prob, ", phi = ", phi, ") (blue) vs",
+                     " Binomial(", size, ", ", prob, ") (green)", sep=""),
+        names.arg = as.character(x), las = 1, lwd = 2) }
 }
 \keyword{distribution}
diff --git a/man/zibinomial.Rd b/man/zibinomial.Rd
index a544b0d..631da6c 100644
--- a/man/zibinomial.Rd
+++ b/man/zibinomial.Rd
@@ -8,8 +8,8 @@
 
 }
 \usage{
-zibinomial(lphi="logit", lmu="logit", ephi=list(), emu=list(),
-           iphi=NULL, zero=1, mv=FALSE)
+zibinomial(lphi = "logit", lmu = "logit", ephi = list(), emu = list(),
+           iphi = NULL, zero = 1, mv = FALSE)
 }
 %- maybe also 'usage' for other objects documented here.
 \arguments{
@@ -34,9 +34,10 @@ zibinomial(lphi="logit", lmu="logit", ephi=list(), emu=list(),
   \item{zero}{ 
   An integer specifying which linear/additive predictor is modelled
   as intercepts only.  If given, the value must be either 1 or 2,
-  and the default is the first. Setting \code{zero=NULL} enables both
+  and the default is the first. Setting \code{zero = NULL} enables both
   \eqn{\phi}{phi} and \eqn{\mu}{mu} to be modelled as a function of
   the explanatory variables.
+  See \code{\link{CommonVGAMffArguments}} for more information.
 
   }
   \item{mv}{ 
@@ -62,16 +63,19 @@ zibinomial(lphi="logit", lmu="logit", ephi=list(), emu=list(),
   By default, the two linear/additive predictors are \eqn{(logit(\phi),
   logit(\mu))^T}{(logit(phi), logit(mu))^T}.
 
+
 }
 \value{
   An object of class \code{"vglmff"} (see \code{\link{vglmff-class}}).
   The object is used by modelling functions such as \code{\link{vglm}}
   and \code{\link{vgam}}.
 
+
 }
 %\references{
 
 %}
+
 \author{ T. W. Yee }
 \note{
   The response variable must have one of the formats described by
@@ -79,18 +83,22 @@ zibinomial(lphi="logit", lmu="logit", ephi=list(), emu=list(),
   vector of sample proportions with the \code{weights} argument 
   specifying the values of \eqn{N}.
 
+
   To work well, one needs \eqn{N>1} and \eqn{\mu>0}{mu>0}, i.e.,
   the larger \eqn{N} and \eqn{\mu}{mu} are, the better.
 
+
   For intercept-models and constant \eqn{N} over the \eqn{n} observations,
   the \code{misc} slot has a component called \code{p0} which is the
   estimate of \eqn{P(Y=0)}.  This family function currently cannot handle
-  a multivariate response (only \code{mv=FALSE} can be handled).
+  a multivariate response (only \code{mv = FALSE} can be handled).
+
 
 % The zero-\emph{deflated} binomial distribution cannot be handled with
 % this family function.  It can be handled with the zero-altered binomial
 % distribution; see \code{\link{zabinomial}}.
 
+
 }
 
 \section{Warning }{
@@ -108,11 +116,11 @@ zibinomial(lphi="logit", lmu="logit", ephi=list(), emu=list(),
 
 }
 \examples{
-size = 10  # number of trials; N in the notation above
+size = 10  # Number of trials; N in the notation above
 nn = 200
-zibdata = data.frame(phi   = logit( 0, inv = TRUE), # 0.50
-                     mubin = logit(-1, inv = TRUE), # Mean of usual binomial
-                     sv    = rep(size, len = nn))
+zibdata = data.frame(phi   = logit( 0, inverse = TRUE), # 0.50
+                     mubin = logit(-1, inverse = TRUE), # Mean of usual binomial
+                     sv    = rep(size, length = nn))
 zibdata = transform(zibdata, 
                     y = rzibinom(nn, size = sv, prob = mubin, phi = phi))
 with(zibdata, table(y))
@@ -120,7 +128,7 @@ fit = vglm(cbind(y, sv - y) ~ 1, zibinomial, zibdata, trace = TRUE)
 
 coef(fit, matrix = TRUE)
 Coef(fit) # Useful for intercept-only models
-fit at misc$p0  # Estimate of P(Y=0)
+fit at misc$p0  # Estimate of P(Y = 0)
 head(fitted(fit))
 with(zibdata, mean(y)) # Compare this with fitted(fit)
 summary(fit)
diff --git a/man/zinegbinUC.Rd b/man/zinegbinUC.Rd
index 5e4776a..7874a8b 100644
--- a/man/zinegbinUC.Rd
+++ b/man/zinegbinUC.Rd
@@ -12,10 +12,10 @@
 
 }
 \usage{
-dzinegbin(x, phi, size, prob=NULL, munb=NULL, log=FALSE)
-pzinegbin(q, phi, size, prob=NULL, munb=NULL)
-qzinegbin(p, phi, size, prob=NULL, munb=NULL)
-rzinegbin(n, phi, size, prob=NULL, munb=NULL)
+dzinegbin(x, phi, size, prob = NULL, munb = NULL, log = FALSE)
+pzinegbin(q, phi, size, prob = NULL, munb = NULL)
+qzinegbin(p, phi, size, prob = NULL, munb = NULL)
+rzinegbin(n, phi, size, prob = NULL, munb = NULL)
 }
 %- maybe also 'usage' for other objects documented here.
 \arguments{
@@ -48,18 +48,21 @@ rzinegbin(n, phi, size, prob=NULL, munb=NULL)
   for the formula of the probability density function and other details
   of the negative binomial distribution.
 
+
 }
 \value{
   \code{dzinegbin} gives the density,
   \code{pzinegbin} gives the distribution function,
   \code{qzinegbin} gives the quantile function, and
   \code{rzinegbin} generates random deviates.
+
+
 }
 %\references{ }
 \author{ Thomas W. Yee }
 \note{ 
     The argument \code{phi} is recycled to the required length, and
-    must have values which lie in the interval [0,1].
+    must have values which lie in the interval \eqn{[0,1]}.
 
 }
 
@@ -68,24 +71,24 @@ rzinegbin(n, phi, size, prob=NULL, munb=NULL)
     \code{\link[stats:NegBinomial]{rnbinom}},
     \code{\link{rzipois}}.
 
+
 }
 \examples{
 munb = 3; phi = 0.2; size = k = 10
 x = 0:10
-(ii = dzinegbin(x, phi=phi, mu=munb, size=k))
-max(abs(cumsum(ii) - pzinegbin(x, phi=phi, mu=munb, size=k))) # Should be 0
-table(rzinegbin(100, phi=phi, mu=munb, size=k))
+(ii = dzinegbin(x, phi = phi, mu = munb, size = k))
+max(abs(cumsum(ii) - pzinegbin(x, phi = phi, mu = munb, size = k))) # Should be 0
+table(rzinegbin(100, phi = phi, mu = munb, size = k))
 
-table(qzinegbin(runif(1000), phi=phi, mu=munb, size=k))
-round(dzinegbin(x, phi=phi, mu=munb, size=k) * 1000) # Should be similar
+table(qzinegbin(runif(1000), phi = phi, mu = munb, size = k))
+round(dzinegbin(x, phi = phi, mu = munb, size = k) * 1000) # Should be similar
 
-\dontrun{
-barplot(rbind(dzinegbin(x, phi=phi, mu=munb, size=k),
-              dnbinom(x, mu=munb, size=k)),
-        beside = TRUE, col = c("blue","green"),
-        main=paste("ZINB(mu=", munb, ", k=", k, ", phi=", phi,
-                   ") (blue) vs negative binomial(mu=", munb,
-                   ", size=", k, ") (green)", sep=""),
+\dontrun{barplot(rbind(dzinegbin(x, phi = phi, mu = munb, size = k),
+                dnbinom(x, mu = munb, size = k)),
+        beside = TRUE, col = c("blue", "green"),
+        main = paste("ZINB(mu = ", munb, ", k = ", k, ", phi = ", phi,
+                   ") (blue) vs negative binomial(mu = ", munb,
+                   ", size = ", k, ") (green)", sep = ""),
         names.arg = as.character(x)) }
 }
 \keyword{distribution}
diff --git a/man/zinegbinomial.Rd b/man/zinegbinomial.Rd
index e99bc85..f0e65e0 100644
--- a/man/zinegbinomial.Rd
+++ b/man/zinegbinomial.Rd
@@ -8,45 +8,37 @@
 
 }
 \usage{
-zinegbinomial(lphi = "logit", lmunb = "loge", lk = "loge", ephi = list(),
-      emunb = list(), ek = list(), iphi = NULL, ik = NULL, zero = -3,
-      method.init = 1, shrinkage.init = 0.95, nsimEIM = 200)
+zinegbinomial(lphi = "logit", lmunb = "loge", lsize = "loge", ephi = list(),
+      emunb = list(), esize = list(), iphi = NULL, isize = NULL, zero = -3,
+      imethod = 1, shrinkage.init = 0.95, nsimEIM = 200)
 }
 %- maybe also 'usage' for other objects documented here.
 \arguments{
-  \item{lphi, lmunb, lk}{ 
+  \item{lphi, lmunb, lsize}{ 
   Link functions for the parameters \eqn{\phi}{phi},
   the mean and \eqn{k}; see \code{\link{negbinomial}} for details,
   and \code{\link{Links}} for more choices.
 
   }
-  \item{ephi, emunb, ek}{
+  \item{ephi, emunb, esize}{
   List. Extra arguments for the respective links.
   See \code{earg} in \code{\link{Links}} for general information.
 
   }
 
-  \item{iphi, ik}{
+  \item{iphi, isize}{
   Optional initial values for \eqn{\phi}{phi} and \eqn{k}{k}.
   The default is to compute an initial value internally for both.
   If a vector then recycling is used.
 
   }
-  \item{method.init}{
+  \item{imethod}{
   An integer with value \code{1} or \code{2} or \code{3} which
   specifies the initialization method for the mean parameter.
   If failure to converge occurs try another value
   and/or else specify a value for \code{shrinkage.init}.
 
   }
-  \item{shrinkage.init}{
-  How much shrinkage is used when initializing the mean.
-  The value must be between 0 and 1 inclusive, and 
-  a value of 0 means the individual response values are used,
-  and a value of 1 means the median or mean is used.
-  This argument is used in conjunction with \code{method.init}.
-
-  }
   \item{zero}{ 
   Integers specifying which linear/additive predictor is modelled
   as intercepts only.  If given, their absolute values must be
@@ -55,8 +47,8 @@ zinegbinomial(lphi = "logit", lmunb = "loge", lk = "loge", ephi = list(),
   See \code{\link{CommonVGAMffArguments}} for more information.
 
   }
-  \item{nsimEIM}{ 
-  See \code{\link{CommonVGAMffArguments}} for more information.
+  \item{shrinkage.init, nsimEIM}{ 
+  See \code{\link{CommonVGAMffArguments}} for information.
 
   }
 }
@@ -76,9 +68,11 @@ zinegbinomial(lphi = "logit", lmunb = "loge", lk = "loge", ephi = list(),
   for the formula of the probability density function and other details
   of the negative binomial distribution.
 
+
   Independent multivariate responses are handled.
-  If so then arguments \code{iphi} and \code{ik} may be vectors with
-  length equal to the number of responses.
+  If so then arguments \code{iphi} and \code{isize} may be vectors
+  with length equal to the number of responses.
+
 
 }
 \value{
@@ -86,6 +80,7 @@ zinegbinomial(lphi = "logit", lmunb = "loge", lk = "loge", ephi = list(),
   The object is used by modelling functions such as \code{\link{vglm}},
   and \code{\link{vgam}}.
 
+
 }
 %\references{
 %
@@ -117,10 +112,10 @@ zinegbinomial(lphi = "logit", lmunb = "loge", lk = "loge", ephi = list(),
   probability of zero.
   Half-stepping is not uncommon.
   If failure to converge occurs, try using combinations of
-  \code{method.init},
+  \code{imethod},
   \code{shrinkage.init},
   \code{iphi},
-  \code{ik}, and/or
+  \code{isize}, and/or
   \code{zero} if there are explanatory variables.
 
 } 
@@ -137,9 +132,9 @@ zinegbinomial(lphi = "logit", lmunb = "loge", lk = "loge", ephi = list(),
 nbdat <- data.frame(x2 = runif(nn <- 1000))
 nbdat <- transform(nbdat, phi  = logit(-0.5 + 1 * x2, inverse = TRUE),
                           munb = exp(3 + x2),
-                          k    = exp(0 + 2*x2))
-nbdat <- transform(nbdat, y1 = rzinegbin(nn, phi, mu = munb, size = k),
-                          y2 = rzinegbin(nn, phi, mu = munb, size = k))
+                          size = exp(0 + 2*x2))
+nbdat <- transform(nbdat, y1 = rzinegbin(nn, phi, mu = munb, size = size),
+                          y2 = rzinegbin(nn, phi, mu = munb, size = size))
 with(nbdat, table(y1)["0"] / sum(table(y1)))
 fit <- vglm(cbind(y1, y2) ~ x2, zinegbinomial(zero = NULL), nbdat)
 coef(fit, matrix = TRUE)
@@ -154,8 +149,8 @@ nbdat <- transform(nbdat, x3 = runif(nn))
 nbdat <- transform(nbdat, eta1 = 3 + 1 * x2 + 2 * x3)
 nbdat <- transform(nbdat, phi  = logit(-1.5 + 0.5 * eta1, inverse = TRUE),
                           munb = exp(eta1),
-                          k    = exp(4))
-nbdat <- transform(nbdat, y1 = rzinegbin(nn, phi, mu = munb, size = k))
+                          size = exp(4))
+nbdat <- transform(nbdat, y1 = rzinegbin(nn, phi, mu = munb, size = size))
 with(nbdat, table(y1)["0"] / sum(table(y1)))
 rrzinb <- rrvglm(y1 ~ x2 + x3, zinegbinomial(zero = NULL), nbdat,
                  Index.corner = 2, szero = 3, trace = TRUE)
diff --git a/man/zipebcom.Rd b/man/zipebcom.Rd
index d895c1e..6077913 100644
--- a/man/zipebcom.Rd
+++ b/man/zipebcom.Rd
@@ -11,10 +11,10 @@
 
 }
 \usage{
-zipebcom(lmu12="cloglog", lphi12="logit", loratio="loge",
-         emu12=list(), ephi12=list(), eoratio=list(),
-         imu12=NULL, iphi12=NULL, ioratio = NULL, 
-         zero=2:3, tol=0.001, addRidge=0.001)
+zipebcom(lmu12 = "cloglog", lphi12 = "logit", loratio = "loge",
+         emu12 = list(), ephi12 = list(), eoratio = list(),
+         imu12 = NULL, iphi12 = NULL, ioratio = NULL, 
+         zero = 2:3, tol = 0.001, addRidge = 0.001)
 }
 %- maybe also 'usage' for other objects documented here.
 \arguments{
@@ -91,11 +91,13 @@ zipebcom(lmu12="cloglog", lphi12="logit", loratio="loge",
   written \eqn{\psi=p_{00}p_{11}/(p_{10}p_{01})}{psi=p00 p11 / (p10 p01)}.
   We have \eqn{p_{10} = p_{01}}{p10 = p01} because of the exchangeability.
 
+
   The second linear/additive predictor models the \eqn{\phi}{phi}
   parameter (see \code{\link{zipoisson}}).
   The third linear/additive predictor is the same as \code{\link{binom2.or}},
   viz., the log odds ratio.
 
+
   Suppose a dataset1 comes from a Poisson distribution that has been
   converted to presence/absence, and that both marginal probabilities
   are the same (exchangeable).
@@ -110,16 +112,19 @@ zipebcom(lmu12="cloglog", lphi12="logit", loratio="loge",
   of by \code{zipebcom()} so that it is just like the simpler
   \code{\link{binom2.or}}.
 
+
   Note that, for \eqn{\eta_1}{eta_1},
   \code{mu12 = prob12 / (1-phi12)} where \code{prob12} is the probability
   of a 1 under the ZIP model.
   Here, \code{mu12} correspond to \code{mu1} and \code{mu2} in the
   \code{\link{binom2.or}}-Poisson model.
 
+
   If \eqn{\phi=0}{phi=0} then \code{zipebcom()} should be equivalent to
   \code{binom2.or("cloglog", exch=TRUE)}.
   Full details are given in Yee and Dirnbock (2009).
 
+
   The leading \eqn{2 \times 2}{2 x 2} submatrix of the expected
   information matrix (EIM) is of rank-1, not 2! This is due to the
   fact that the parameters corresponding to the first two
@@ -128,24 +133,28 @@ zipebcom(lmu12="cloglog", lphi12="logit", loratio="loge",
   The model is fitted by maximum likelihood estimation since the full
   likelihood is specified. Fisher scoring is implemented.
 
+
   The default models \eqn{\eta_2}{eta2} and \eqn{\eta_3}{eta3} as
   single parameters only, but this
   can be circumvented by setting \code{zero=NULL} in order to model the 
   \eqn{\phi}{phi} and odds ratio as a function of all the explanatory
   variables.
 
+
 }
 \value{
   An object of class \code{"vglmff"} (see \code{\link{vglmff-class}}).
   The object is used by modelling functions such as \code{\link{vglm}}
   and \code{\link{vgam}}.
 
+
   When fitted, the \code{fitted.values} slot of the object contains the
   four joint probabilities, labelled as \eqn{(Y_1,Y_2)}{(Y1,Y2)} = (0,0),
   (0,1), (1,0), (1,1), respectively.
   These estimated probabilities should be extracted with the \code{fitted}
   generic function.
 
+
 } 
 \section{Warning }{
   The fact that the EIM is not of full rank may mean the model is
@@ -155,13 +164,15 @@ zipebcom(lmu12="cloglog", lphi12="logit", loratio="loge",
   it is certainly safer to fit \code{\link{binom2.or}} to bivariate binary
   responses.
 
+
 } 
 \references{
 
   Yee, T. W. and Dirnbock, T. (2009)
   Models for analysing species' presence/absence data
   at two time points.
-  Journal of Theoretical Biology, \bold{259}. In press.
+  Journal of Theoretical Biology, \bold{259}(4), 684--694.
+
 
 }
 %\author{ Thomas W. Yee }
@@ -172,15 +183,18 @@ zipebcom(lmu12="cloglog", lphi12="logit", loratio="loge",
   \emph{zero-inflated Poisson exchangeable bivariate complementary
   log-log odds-ratio model} or ZIP-EBCOM.
 
+
   See \code{\link{binom2.or}} for details that are pertinent to this
   \pkg{VGAM} family function too.
   Even better initial values are usually needed here.
 
+
   The \code{xij} (see \code{\link{vglm.control}}) argument enables
   environmental variables with different values at the two time points
   to be entered into an exchangeable \code{\link{binom2.or}} model.
   See the author's webpage for sample code.
 
+
 }
 \seealso{
   \code{\link{binom2.or}},
@@ -201,22 +215,22 @@ mydat = transform(mydat, ybin1 = tmat[,1], ybin2 = tmat[,2])
 with(mydat, table(ybin1,ybin2)) / nsites  # For interest only
 \dontrun{
 # Various plots of the data, for interest only
-par(mfrow=c(2,2))
-plot(jitter(ybin1) ~ x, data = mydat, col="blue")
+par(mfrow = c(2, 2))
+plot(jitter(ybin1) ~ x, data = mydat, col = "blue")
 
-plot(jitter(ybin2) ~ jitter(ybin1), data = mydat, col="blue")
+plot(jitter(ybin2) ~ jitter(ybin1), data = mydat, col = "blue")
 
-plot(mu12 ~ x, data = mydat, col="blue", type="l", ylim=0:1,
-     ylab="Probability", main="Marginal probability and phi")
-with(mydat, abline(h=phi1[1], col="red", lty="dashed"))
+plot(mu12 ~ x, data = mydat, col = "blue", type = "l", ylim = 0:1,
+     ylab = "Probability", main = "Marginal probability and phi")
+with(mydat, abline(h = phi1[1], col = "red", lty = "dashed"))
 
-tmat2 = with(mydat, dbinom2.or(mu1=mu12, oratio=oratio, exch=TRUE))
-with(mydat, matplot(x, tmat2, col=1:4, type="l", ylim=0:1,
-     ylab="Probability", main="Joint probabilities")) }
+tmat2 = with(mydat, dbinom2.or(mu1 = mu12, oratio = oratio, exch = TRUE))
+with(mydat, matplot(x, tmat2, col = 1:4, type = "l", ylim = 0:1,
+     ylab = "Probability", main = "Joint probabilities")) }
 
 # Now fit the model to the data.
-fit = vglm(cbind(ybin1,ybin2) ~ x, fam=zipebcom, dat=mydat, trace=TRUE)
-coef(fit, matrix=TRUE)
+fit = vglm(cbind(ybin1,ybin2) ~ x, fam = zipebcom, dat = mydat, trace = TRUE)
+coef(fit, matrix = TRUE)
 summary(fit)
 vcov(fit)
 }
diff --git a/man/zipf.Rd b/man/zipf.Rd
index e061bed..59ae7ad 100644
--- a/man/zipf.Rd
+++ b/man/zipf.Rd
@@ -7,7 +7,7 @@
 
 }
 \usage{
-zipf(N=NULL, link="loge", earg=list(), init.s=NULL)
+zipf(N = NULL, link = "loge", earg = list(), init.s = NULL)
 }
 %- maybe also 'usage' for other objects documented here.
 \arguments{
@@ -15,7 +15,7 @@ zipf(N=NULL, link="loge", earg=list(), init.s=NULL)
   Number of elements, an integer satisfying \code{1 < N < Inf}.
   The default is to use the maximum value of the response.
   If given, \code{N} must be no less that the largest response value.
-  If \code{N=Inf} and \eqn{s>1} then this is the zeta distribution 
+  If \code{N = Inf} and \eqn{s>1} then this is the zeta distribution 
   (use \code{\link{zetaff}} instead).
 
   }
@@ -83,13 +83,14 @@ pp.526-- of Chapter 11 of
 
 }
 \examples{
-zdat = data.frame(y = 1:5, w = c(63, 14, 5, 1, 2))
-fit = vglm(y ~ 1, zipf, zdat, trace=TRUE, weight=w, cri="c")
-fit = vglm(y ~ 1, zipf(link=identity, init=3.4), zdat, tra=TRUE, weight=w)
+zdata = data.frame(y = 1:5, w = c(63, 14, 5, 1, 2))
+fit = vglm(y ~ 1, zipf, zdata, trace = TRUE, weight = w, crit = "c")
+fit = vglm(y ~ 1, zipf(link = identity, init = 3.4), zdata,
+           trace = TRUE, weight = w)
 fit at misc$N
 (shat = Coef(fit))
-with(zdat, weighted.mean(y, w))
-fitted(fit, mat=FALSE)
+with(zdata, weighted.mean(y, w))
+fitted(fit, matrix = FALSE)
 }
 \keyword{models}
 \keyword{regression}
diff --git a/man/zipfUC.Rd b/man/zipfUC.Rd
index 849058c..8a595b5 100644
--- a/man/zipfUC.Rd
+++ b/man/zipfUC.Rd
@@ -27,7 +27,7 @@ pzipf(q, N, s)
   }
   \item{log}{
   Logical.
-  If \code{log=TRUE} then the logarithm of the density is returned.
+  If \code{log = TRUE} then the logarithm of the density is returned.
 
   }
 
@@ -52,13 +52,13 @@ pzipf(q, N, s)
 
 }
 \examples{
-N = 10; s=0.5; y = 1:N
-proby = dzipf(y, N=N, s=s)
-\dontrun{
-plot(proby ~ y, type="h", col="blue", ylab="P[Y=y]", ylim=c(0,0.2),
-     main=paste("Zipf(N=",N,", s=",s,")", sep=""), lwd=2, las = 1) }
+N = 10; s = 0.5; y = 1:N
+proby = dzipf(y, N = N, s = s)
+\dontrun{ plot(proby ~ y, type = "h", col = "blue", ylab = "Probability",
+     ylim = c(0, 0.2), main = paste("Zipf(N = ",N,", s = ",s,")", sep = ""),
+     lwd = 2, las = 1) }
 sum(proby)  # Should be 1
-max(abs(cumsum(proby) - pzipf(y, N=N, s=s))) # Should be 0
+max(abs(cumsum(proby) - pzipf(y, N = N, s = s))) # Should be 0
 }
 \keyword{distribution}
 
diff --git a/man/zipoisUC.Rd b/man/zipoisUC.Rd
index fb675d4..32919b6 100644
--- a/man/zipoisUC.Rd
+++ b/man/zipoisUC.Rd
@@ -25,7 +25,7 @@ rzipois(n, lambda, phi = 0)
   \item{lambda}{ Vector of positive means. }
   \item{phi}{ 
   Probability of zero (ignoring the Poisson distribution), called
-  \eqn{\phi}{phi}.  The default value of \eqn{\phi=0}{phi=0} corresponds
+  \eqn{\phi}{phi}.  The default value of \eqn{\phi = 0}{phi = 0} corresponds
   to the response having an ordinary Poisson distribution.
 
   }
@@ -38,26 +38,31 @@ rzipois(n, lambda, phi = 0)
   \deqn{P(Y=0) =\phi + (1-\phi) P(W=0)}{%
         P(Y=0) = phi + (1-phi) * P(W=0)}
   where \eqn{W} is distributed \eqn{Poisson(\lambda)}{Poisson(lambda)}.
+
+
 }
 \value{
   \code{dzipois} gives the density,
   \code{pzipois} gives the distribution function,
   \code{qzipois} gives the quantile function, and
   \code{rzipois} generates random deviates.
+
+
 }
 %\references{ }
 \author{ Thomas W. Yee }
 \note{ 
     The argument \code{phi} is recycled to the required length, and
-    must have values which lie in the interval [0,1].
+    must have values which lie in the interval \eqn{[0,1]}.
 
 }
 
 \seealso{ 
-    \code{\link[stats:Poisson]{dpois}},
     \code{\link{zipoisson}},
+    \code{\link[stats:Poisson]{dpois}},
     \code{\link{rzinegbin}}.
 
+
 }
 \examples{
 lambda = 3; phi = 0.2; x = (-1):7
@@ -68,12 +73,11 @@ table(rzipois(100, lambda, phi))
 table(qzipois(runif(100), lambda, phi))
 round(dzipois(0:10, lambda, phi) * 100) # Should be similar
 
-\dontrun{
-x = 0:10
+\dontrun{ x = 0:10
 barplot(rbind(dzipois(x, lambda, phi), dpois(x, lambda)),
         beside = TRUE, col = c("blue","green"),
-        main=paste("ZIP(", lambda, ", phi=", phi, ") (blue) vs",
-                        " Poisson(", lambda, ") (green)", sep=""),
+        main = paste("ZIP(", lambda, ", phi = ", phi, ") (blue) vs",
+                     " Poisson(", lambda, ") (green)", sep = ""),
         names.arg = as.character(x)) }
 }
 \keyword{distribution}
diff --git a/man/zipoisson.Rd b/man/zipoisson.Rd
index 8cc72d3..579568c 100644
--- a/man/zipoisson.Rd
+++ b/man/zipoisson.Rd
@@ -11,11 +11,11 @@
 \usage{
 zipoissonff(llambda = "loge", lprobp = "logit",
             elambda = list(), eprobp = list(),
-            ilambda = NULL, iprobp = NULL, method.init = 1,
+            ilambda = NULL, iprobp = NULL, imethod = 1,
             shrinkage.init = 0.8, zero = -2)
-zipoisson(lphi ="logit", llambda = "loge",
+zipoisson(lphi = "logit", llambda = "loge",
           ephi = list(), elambda = list(),
-          iphi = NULL,   ilambda = NULL, method.init = 1,
+          iphi = NULL,   ilambda = NULL, imethod = 1,
           shrinkage.init = 0.8, zero = NULL)
 }
 %- maybe also 'usage' for other objects documented here.
@@ -48,7 +48,7 @@ zipoisson(lphi ="logit", llambda = "loge",
 
   }
 
-  \item{method.init}{
+  \item{imethod}{
   An integer with value \code{1} or \code{2} which
   specifies the initialization method for \eqn{\lambda}{lambda}.
   If failure to converge occurs try another value
@@ -62,7 +62,7 @@ zipoisson(lphi ="logit", llambda = "loge",
   The value must be between 0 and 1 inclusive, and 
   a value of 0 means the individual response values are used,
   and a value of 1 means the median or mean is used.
-  This argument is used in conjunction with \code{method.init}.
+  This argument is used in conjunction with \code{imethod}.
   See \code{\link{CommonVGAMffArguments}} for more information.
 
   }
@@ -178,7 +178,7 @@ zipoisson(lphi ="logit", llambda = "loge",
   replacing 182 by 1 results in nonconvergence.
   Half-stepping is not uncommon.
   If failure to converge occurs, try using combinations of
-  \code{method.init},
+  \code{imethod},
   \code{shrinkage.init},
   \code{iphi}, and/or
   \code{zipoisson(zero = 1)} if there are explanatory variables.
@@ -195,6 +195,7 @@ zipoisson(lphi ="logit", llambda = "loge",
   \code{\link{zipebcom}},
   \code{\link[stats:Poisson]{rpois}}.
 
+
 }
 \examples{
 # Example 1: simulated ZIP data
@@ -210,13 +211,13 @@ zdata <- transform(zdata, y1 = rzipois(nn, lambda1, Phi1),
 
 with(zdata, table(y1)) # Eyeball the data
 with(zdata, table(y2))
-fit1 <- vglm(y1 ~ x2, zipoisson(zero = 1), zdata, crit = "c")
-fit2 <- vglm(y2 ~ x2, zipoisson(zero = 1), zdata, crit = "c")
+fit1 <- vglm(y1 ~ x2, zipoisson(zero = 1), zdata, crit = "coef")
+fit2 <- vglm(y2 ~ x2, zipoisson(zero = 1), zdata, crit = "coef")
 coef(fit1, matrix = TRUE)  # These should agree with the above values
 coef(fit2, matrix = TRUE)  # These should agree with the above values
 
 # Fit all two simultaneously, using a different parameterization:
-fit12 <- vglm(cbind(y1, y2) ~ x2, zipoissonff, zdata, crit = "c")
+fit12 <- vglm(cbind(y1, y2) ~ x2, zipoissonff, zdata, crit = "coef")
 coef(fit12, matrix = TRUE)  # These should agree with the above values
 
 

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/debian-science/packages/r-cran-vgam.git



More information about the debian-science-commits mailing list