[Uwgarp-commits] r53 - in pkg/GARPFRM: . R sandbox/project_plan vignettes
noreply at r-forge.r-project.org
noreply at r-forge.r-project.org
Sat Jan 25 21:44:40 CET 2014
Author: tfillebeen
Date: 2014-01-25 21:44:39 +0100 (Sat, 25 Jan 2014)
New Revision: 53
Modified:
pkg/GARPFRM/NAMESPACE
pkg/GARPFRM/R/capm.R
pkg/GARPFRM/sandbox/project_plan/project_plan.pdf
pkg/GARPFRM/sandbox/project_plan/project_plan.tex
pkg/GARPFRM/vignettes/CAPM_TF.pdf
Log:
CAPM complete with CAPM plots and SML charts
Modified: pkg/GARPFRM/NAMESPACE
===================================================================
--- pkg/GARPFRM/NAMESPACE 2014-01-24 20:12:49 UTC (rev 52)
+++ pkg/GARPFRM/NAMESPACE 2014-01-25 20:44:39 UTC (rev 53)
@@ -1,12 +1,16 @@
-S3method(getAlphas,capm_mv)
-S3method(getAlphas,capm_uv)
-S3method(getBetas,capm_mv)
-S3method(getBetas,capm_uv)
-S3method(getStatistics,capm_mv)
-S3method(getStatistics,capm_uv)
export(CAPM)
+export(chartSML)
export(getAlphas)
export(getBetas)
export(getStatistics)
-export(plot.capm_mv)
+export(hypTest)
+export(plot.capm_mlm)
export(plot.capm_uv)
+S3method(getAlphas,capm_mlm)
+S3method(getAlphas,capm_uv)
+S3method(getBetas,capm_mlm)
+S3method(getBetas,capm_uv)
+S3method(getStatistics,capm_mlm)
+S3method(getStatistics,capm_uv)
+S3method(hypTest,capm_mlm)
+S3method(hypTest,capm_uv)
Modified: pkg/GARPFRM/R/capm.R
===================================================================
--- pkg/GARPFRM/R/capm.R 2014-01-24 20:12:49 UTC (rev 52)
+++ pkg/GARPFRM/R/capm.R 2014-01-25 20:44:39 UTC (rev 53)
@@ -45,8 +45,8 @@
capm_fit$y_data <- R
if(ncol(R) > 1){
- # Multi-Beta CAPM
- class(capm_fit) <- c("capm_mv", "mlm", "lm")
+ # Multiple Linear Model CAPM
+ class(capm_fit) <- c("capm_mlm", "mlm", "lm")
} else if(ncol(R) == 1){
# Univariate CAPM
class(capm_fit) <- c("capm_uv", "lm")
@@ -71,10 +71,10 @@
return(coef(object)[1])
}
-#' @method getAlphas capm_mv
-#' @S3method getAlphas capm_mv
-getAlphas.capm_mv <- function(object){
- if(!inherits(object, "capm_mv")) stop("object must be of class capm_mv")
+#' @method getAlphas capm_mlm
+#' @S3method getAlphas capm_mlm
+getAlphas.capm_mlm <- function(object){
+ if(!inherits(object, "capm_mlm")) stop("object must be of class capm_mlm")
tmp_sm = getStatistics(object)
tmp_sm = tmp_sm[seq(1,nrow(tmp_sm),2),1]
return(tmp_sm)
@@ -97,10 +97,10 @@
return(coef(object)[2])
}
-#' @method getBetas capm_mv
-#' @S3method getBetas capm_mv
-getBetas.capm_mv <- function(object){
- if(!inherits(object, "capm_mv")) stop("object must be of class capm_mv")
+#' @method getBetas capm_mlm
+#' @S3method getBetas capm_mlm
+getBetas.capm_mlm <- function(object){
+ if(!inherits(object, "capm_mlm")) stop("object must be of class capm_mlm")
tmp_sm = getStatistics(object)
tmp_sm = tmp_sm[seq(2,nrow(tmp_sm),2),1]
return(tmp_sm)
@@ -126,10 +126,10 @@
return(result)
}
-#' @method getStatistics capm_mv
-#' @S3method getStatistics capm_mv
-getStatistics.capm_mv <- function(object){
- if(!inherits(object, "capm_mv")) stop("object must be of class capm_mv")
+#' @method getStatistics capm_mlm
+#' @S3method getStatistics capm_mlm
+getStatistics.capm_mlm <- function(object){
+ if(!inherits(object, "capm_mlm")) stop("object must be of class capm_mlm")
# Gets t-value, and p-value of model
# Multi-Beta CAPM
x <- coef(summary(object))
@@ -144,7 +144,7 @@
return(tmp_sm)
}
-# you can't have anything after the @export tag
+# CAPM plotting for UV
#' @export
plot.capm_uv <- function(object){
xlab <- colnames(object$x_data)
@@ -161,8 +161,26 @@
}
+# CAPM plotting for mlm
#' @export
-plot.capm_mv <- function(object){
+plot.capm_mlm <- function(object){
+ if(ncol(object$y_data) > 4) warning("Only first 4 assets will be graphically displayed")
+ par(mfrow=c(2,round(ncol(coef(object))/2)))
+ Rmkt = object$x_data
+ nbPlot = min(ncol(coef(object)),4)
+ for (i in 1:nbPlot){
+ tmp = CAPM(object$y_data[,i],Rmkt)
+ plot(tmp)
+ }
+}
+#' CAPM SML
+#'
+#' Description of CAPM Security Market Line (SML)
+#'
+#' @param object a capm object created by \code{\link{CAPM}}
+#' @export
+chartSML <- function(object){
+ if(!inherits(object, "capm_mlm")) stop("object must be of class capm_mlm")
#' Plot expected return versus beta
mu.hat = colMeans(object$y_data,na.rm=TRUE)
betas = getBetas(object)
@@ -173,7 +191,7 @@
legend("topleft",1, "Estimated SML",1)
}
-#' CAPM hypthTest
+#' CAPM hypTest
#'
#' Description of CAPM beta/alpha test
#'
@@ -191,22 +209,22 @@
tmp_A = tmp_sm[1,3] < CI
tstat = (tmp_sm[2,2] - 1 )/tmp_sm[2,3]
#' Two sided t-test
- tmp_B = (2*(1 - pt(abs(tstat),df=nrow(object$x_data)-ncol(object$y_data)))) < CI
+ tmp_B = (2*(1 - pt(abs(tstat),df=nrow(object$x_data)-1))) < CI
result = c(tmp_A, tmp_B)
result = as.matrix(result)
rownames(result) = cbind(c(paste("alpha.", colnames(object$y_data))),c(paste("beta. ", colnames(object$y_data))))
return(result)
}
-#' @method hypTest capm_mv
-#' @S3method hypTest capm_mv
-hypTest.capm_mv <- function(object,CI = 0.05){
- if(!inherits(object, "capm_mv")) stop("object must be of class capm_mv")
+#' @method hypTest capm_mlm
+#' @S3method hypTest capm_mlm
+hypTest.capm_mlm <- function(object,CI = 0.05){
+ if(!inherits(object, "capm_mlm")) stop("object must be of class capm_mlm")
tmp_sm = getStatistics(object)
tmp_A = tmp_sm[seq(1,nrow(tmp_sm),2),4] < CI
tstat = (tmp_sm[seq(2,nrow(tmp_sm),2),1] - 1 )/tmp_sm[seq(2,nrow(tmp_sm),2),2]
#' Two sided t-test
- tmp_B = (2*(1 - pt(abs(tstat),df=nrow(object$x_data)-ncol(object$y_data)))) < CI
+ tmp_B = (2*(1 - pt(abs(tstat),df=nrow(object$x_data)-2))) < CI
result = c(tmp_A, tmp_B)
return(result)
}
\ No newline at end of file
Modified: pkg/GARPFRM/sandbox/project_plan/project_plan.pdf
===================================================================
(Binary files differ)
Modified: pkg/GARPFRM/sandbox/project_plan/project_plan.tex
===================================================================
--- pkg/GARPFRM/sandbox/project_plan/project_plan.tex 2014-01-24 20:12:49 UTC (rev 52)
+++ pkg/GARPFRM/sandbox/project_plan/project_plan.tex 2014-01-25 20:44:39 UTC (rev 53)
@@ -93,13 +93,14 @@
A closely related concept is exploratory data analysis. We should have some basic EDA with good support for visualization using trellis or lattice style plots. The lattice package is pretty complex so we will create some wrapper functions to hide the complexity for the user.
\section{Monte Carlo Methods}
-This section is relatively short and gives a basic overview of Monte Carlo methods. We should have a function that generates data using monte carlo methods. The book uses a geometric brownian motion model.
+This section is relatively short and gives a basic overview of Monte Carlo methods. We should have a function that generates data using Monte Carlo methods. The book uses a geometric brownian motion model.
\begin{itemize}
\item \verb"runMonteCarlo"
\item \verb"plot" method to show simulated price paths
\item chart distribution of ending prices
\end{itemize}
+Best way of implement is 1) create functionality and 2) use Shiny app.
\section{Estimating Volatilities and Correlation}
@@ -107,6 +108,8 @@
Additional features
\begin{itemize}
+\item \verb"estVola"
+\item \verb"estCorr"
\item Shiny app
\item demo
\item vignette
Modified: pkg/GARPFRM/vignettes/CAPM_TF.pdf
===================================================================
--- pkg/GARPFRM/vignettes/CAPM_TF.pdf 2014-01-24 20:12:49 UTC (rev 52)
+++ pkg/GARPFRM/vignettes/CAPM_TF.pdf 2014-01-25 20:44:39 UTC (rev 53)
@@ -5,7 +5,7 @@
/Filter /FlateDecode
>>
stream
-xÚÝXMoã6½çWè(Wâ$"§l] ínâÛnÌÄBdÉ èMÚ_ß!eÇ bÛm÷bCÎpæÍðqà,º²èçì
ïûÅɻ˼òÐ\ðhqÑ¢(£BV¤È£Å2ú}¼JRÑø²±¶éîq¢º%I)c=øßÀ¤òH!¨3É+Â*J UQ ÉŪ_«ÔiFÛVß&)-c;g!åG !¨ñAu ìØ*óªQúSd9wZÏÂ{wɳ¨"²(04FàGAJIÑêÙí`ªíúLÎôÓ\0"JÎÐÂqPp'y¬6U-ÎÏA[~4M
+xÚÝXMoã6½çWè(Wâ$"§l] ínâÛnÌÄBdÉ èMÚ_ß!eÇ bÛm÷bCÎpæÍðqà,º²èçì
ïûÅɻ˼òÐ\ðhqÑ¢(£BV¤È£Å2ú}¼JRÑø²±¶éîq¢º%I)c=øßÀ¤òH!¨3É+Â*J UQ ÉŪ_«ÔiFÛVß&)-c;g!åG !¨ñAu ìØ*óªQþSd9wZÏÂ{wɳ¨"²(04FàGAJIÑêÙí`ªíúLÎôÓ\0"JÎÐÂqPp'y¬6U-ÎÏA[~4M
«Ì¯zYÆKí·ÒøK&24|sÜñ%c|Äxܬ½t;L?maK°¶TVeæýåÊ,<«oÛõÆ6}78s¤
àñ/KH¸fÚÅá/øÐÊ%º7x\õ8PFãÆ
D©QfÕSÒf8øDGû{ÆÖá0ÔïwK&YiG3RQ¢©0Aá4pvzÓüÙw§®:xÌ;¼íÃ>£º2a£ î;à°7azÒCÐçAÿ\
ý®R+Øjzçå#
170hõ8R¿¦Ò;£wFY}ºpNå ÔÎï»Ö>qíÁv2uëK¨ßZopjì]ß6=ÊôJum5ßmm·¦Vº ü2Ù¨®v[ ÆEðëJX²Á(ÑsÞ¡Tµí±ÂÛloÛ¦Æ KÃR/Ca»K2`µKòbåâ
£Ïá¼P²éo¦
ã͸U¤)5YÀNµ=¸{ßoÄö¸Ã&f½iÃø®7kùPæÛmçZoìË%iW>óÀUA»ï/ëG»Â¹«áAeÈ+y7«=
ñ.f¬D4CzÓª÷Üþo'붯ÇÌÚ£yE5ÕKXH¢· ¦®[í
@@ -13,7 +13,7 @@
Ã!ÿxß½W@¤ÇA¤#,¸+mÆFºóDÔuïµß1¼ãcp²=éi¤@<ÍehG)RÇ"E<5W¯Ðx3}Ð>ÎV{ìwT<Þv¡!¥øAêüÍÙ¯?}Anû®q
rðÑ62éÂa
yÄÙ{ß±(\ëaÛú¥ÿWYNqȲO/½Z^ÛÞµßì?Èkõü".ß~ÿCëÀðþ?ï/
-ýåHЫ¢óìç¹aÓýß'ï¤Î"&-òò|ìþ~Õs×[dÜoG¼çm£C;ßëQGG»&à±U9oõö¬ÕõÝ¥IhõJá[== FÑôcî£}Áõü?
½¡yFò¬òJ0JgÍél^,Nþz[
+ýåHЫ¢óìç¹aÓýß'ï¤Î"&-òò|ìþ~Õs×[dÜoG¼çm£C;ßëQGG»&à±U9oõö¬ÕõÝ¥IhõJá[== FÑôcî£}Áõü?
½¡yFò¬òJ0JgÍél^,Nþ¤]
endstream
endobj
69 0 obj <<
@@ -465,17 +465,28 @@
/Type /ObjStm
/N 100
/First 797
-/Length 1793
+/Length 1796
/Filter /FlateDecode
>>
stream
-xÚíYÛnÛF}çWìcüîýV;n4MhZõvØJ¤+Aú÷=#Y±dYYm ²Ôîìì3³3CY2Á,Ó9f,,&ñOJ&5ÆáäWø0%<)
dÊL)¦¼Æ#`Ò11vT¨Ð6Ìyf%À¬ÁdÖÌ(f£epÊCÂq´Â©P%µê`Ñ0¬Ê-ðzo2¤-P l²XFÀWd%ðd,kéfµ Ã9aa0Fùf(/ÞÂNêñ=@ì¨y¢"zì!yZxiÀaT(%X0àA@´ Xp*YÄ>/#Ø`2IX°R+Aò4âL}á4
ÿ6¡ëGðgÈiLYOhÀ$ÐF:4x">
cÈéØá
- |V88°¹V:< ¢0<hr -Yf-¸&/ù.ÒöHÞä7fCÐNPd)!a« ,;N£ð±3øÁHÈ#s8êàørÎS@Ô½X
-Ð)¼/Á´æ¥¡È<<¨5`KD×8ñÁUx\-eöä ã'ÿØ6±Gm*»ª©syÀ>ÍW]WÕìðÙWëÂýûÏò'i©4boS×OëVÄNÒ´Jí
-j®áEÛU¢Kìŧ2µíBÑÍz0{ÕÒø`£×ç¦vjaãá4dâìã¾-oÙz۸겮.ª²¨ËÄzÄ{º·ý¸k·(Ôkl]OJßn3×*ºí'W4õø5üT/lû"½#ïÜs¬'Ø[Æ!wN<ÉøéßWñ7ÅeÊ8ïpfkFýM?
ï)kÍf^¥QU<o>±3AÉ<ÚÉ
-9Gæ!gÐ3
ܹô³ºn î-lì|póÁÏ0âl°b>Èù æÃøy¶z¦=ã'ýûnöýçªþ3ãÏé(Mgðä9ÿ¿äg¤L=eÇÎÍ)aêhrì(½Ë%,6ÂæHh{ƾ|ïòeNHûH
Må%Mkî±~Íï9U1áN0äbn¤ÛEí9Ê1wTC³ôv(úþ ,âDªÜS!£¨h¥s7öÍq²BP{hG"áê¬ÝÆÚGàÎpÿÑ fQñ¶cÙ/6äú ~PÞÖorÏzÚ¾ÏHAKAQðY1FûÅ@Ñ{ D¢ »DY/G'·¢We©\¼ûíw6³-t*ô0u?ousQËfu¨AêSrV2* |ÆpEô%nÆÂ1z<®ë!µñú=×ÏÔÊÅ<ZöEý¤×³ØëÑ+Îq3mÊo ¦3~>u·ëÖbëâíbëü7Û.\æ·.`_Ø Ã¼Z<ãuCßÞݶÓìôvp|®ÎÃí<"IEyÎéÍb{K-GÌÎì¹Æ^ܽ ¾Ë( kgÐßnçìý ÙíúòGG?(w2¸²ñ JÑƵӪcå-ûqZ\}¨Ê½î»«m<6êË4¥UTXÐwp}XCs«&
K &eÆ)&´¦Û6Íhæ?¥ñÇÔá]$ã/ê²Q7å²E4ê;5>~ÞGwª=ã/iÇÅOÏNZÈÏu~ÞÍêgu[Ý,U . ¡á·|RÕ}Ë¢ãõMwÑ^vù¨«m[ñËiñ1ñ¢ì»ÄËjZöqúÄ»j<J|RÓ¦æï§ 2ØR%¼ËGh«ç¨£tÁ§8ñ¸ø<ù¡¯/i?}Ç˦Nò² }íUQ¦åÛÌà²":OZ!øðR3 at TÔ8p¾ánÝ+6åº[ï^¿ÿê>m9Ì]®]\»vQï^âpbã:[MÿmÆku9~U]¦Nð'a8'aXCµK}'R¬Å ý>÷í¬|!Ak!6&èùÚw é7Ë}dè%½K)ZÊ£éä¯mUÂòXM
-«)~ÂV;]¹ÖáÒ/Ô;¥úÑ{6m¥mçä(X·5<ôD Ü~ÁÞåD üCK2. «²7í´q¬
-2wÂì«_Ó¸.»Ub½~UØ1Ù¨ø]¾J½Þuèßu=uæήÃ<¸®Cÿ+]ý¹xH×qfeÿγ tÙk
+xÚíY]oÛØ}ç¯Çø!¼ß_E°@bÇ»&
+ìn
+?0íeW&]\¤ÿ¾g$+,+âFV4¢\êÞ¹sÏ;3Ird$y²EI
+ÿ"eHY© ñ!-©HZã£H»iM:<B&=DÆVi¡Â²6±d#Ä9
!³XPäB̬&aÂë i`s0X` 2bÄѧB2ª%KX=;à
+ÁfH ; Øä<°F¯ÙJàcÈX6ÊfK CÚJMF8$Ñ!ÚãKp°§|;:A¦è¤ûSL£&8@
Ö¢Jf b¬É ÄÈT©D ûôF°Ádb°`¥WåyÄ!²*
,Áiÿ1mÆ@Ö
+OàϲÓ$rÑI MôJhL&|
+Ç°Ó±'Á
+øô8qà
+sòx D`x0ì@^räP¹f/1ù>ñöÄÞUì7r1LÁ/9²´ÅP°Õ+ V¯QøØ[Íü`dä<ºø@!¾¼
+QB/"t*gï+p$ïB¤ey&Qç5p£l
èÇ à`6±
+/ó
«Ê^¼ qFâÇö¼%qBϺªìë¶ÉÕýðCöì´îûº¹¦ãïßm
+?Ë/wUSLUúPõìéè¼¾©è¬ÕU·C^hxÝõõMÑWôúSYuÝRÑÍf0½m'Õôh«wçWÝ8õÒÆãYU°óCNf¾¼cëCãÎê릾ªË¢)+* 1zUõîißíPh6غ]'¾¶ývîT·M7ÜÜòÔówðS³´íÌF<tϲ¤$ wÉ^¼ÈÄù¿n+ïë*8¾Ç®fö·Ã¾ç¬5y[MêâUû.$'óär$+äÇtAÏ
+pgÒ/¦
ºN´|²uÁ/°âbHóÁÉÅ ^àÙè¹öL
+ûù÷¿ÖÍïxÕÎ&ÕlO]Äq|ÁÊä%ÛSöt]Î Ó$[dG|®`±.GBØKúòe|È9g bn6{4Cnl|Ææ5Z,^æ\Å;ÁO¹U~7} (Væ(Z¥Üs
+u
+Î2»¡§²¥óÀ
âBb´Éý<Ú·ÇÉAí0bl «wn#úq;hTÄýGcEÅÛ弸'îK"øAy×Ú°Í=iû)#m^®$CBFÁWdÅÜÅ
îR%aç½h¼ÚEYrñ˯§¹
hY S£iéôr¨_z\F4«#D-RV£´²Qi åác4k¢§(qsNÑã¹xW¹}LwÏèÙ¼¼{æP-çѲ/ë'¿>ØåÞ^qþ#ÄûY[UðjêÉ)óêSÿ°n=(¶>=,¶>|E±½çÂÇq~»ç
¥0,èå3^7ÌSÙüC;ÝËÎàFÇçè"<ÐÎ#ÌQçß,Æ°·ÂØjÄìÍ^T쥽Øò¸ÑzFóõvÎßÝN¸/vò-ñNWB¼·k ´l];¯û)V>гâö·ºìèÝÐßhãÙ°ÉPV3^E
}Gwµ<w´n"S¸ÐyReâoÅ
+¯iäö¢«æ4ªéUwL¼nÊvÂÝ|R«ÐhÕøüU;<ªöB¼9>æJs^®´_èü¼[ü\7/®¾_>©¯®*¸]ߺ:J^üsh{¼^õü²+&-XíºZ\Ï?*QC_²ÃÍÕ´ú$úz:©ÄMQÎÚF|UÁ¢,á]1©qDWw"GTWb³EÈNÏ¿
+Íu1n¦ÅÐöºmªßEY°¾î¶(«ÕÛíè²&ºHF#øðR3BTGÔ8p¾ån=+¶å¾[¿¼ûø®û¼ýÍ¢÷¹viãÚ%³WzIãMly4q>ýw3nÚ¨ËéOÕeîpÇsÇ5TûDÐWp¢äFðïs_ÏÊÿBæß,¡Wô®¤h¥¾·Í? ÿÙVe%)¬^õ¤°Bù'l½×åP.ÿB½WÊà½÷iÓVyXiÙöNJËM[ã÷´?L"¸×»tøÞJ£èºì}»¦\%«£Ê½´ê×®Ë~Øl^@÷L6:}ïÊlvæ@]rk²Y¬}+Éƨë°vö»ë:̤ëà?é:.vôÿÏèÏeöoU.ÙÇ
endstream
endobj
156 0 obj <<
@@ -2386,8 +2397,8 @@
endobj
183 0 obj <<
/Author()/Title()/Subject()/Creator(LaTeX with hyperref package)/Producer(pdfTeX-1.40.14)/Keywords()
-/CreationDate (D:20140122233301-08'00')
-/ModDate (D:20140122233301-08'00')
+/CreationDate (D:20140124191301-08'00')
+/ModDate (D:20140124191301-08'00')
/Trapped /False
/PTEX.Fullbanner (This is pdfTeX, Version 3.1415926-2.5-1.40.14 (TeX Live 2013) kpathsea version 6.1.1)
>> endobj
@@ -2442,18 +2453,17 @@
/W [1 3 1]
/Root 182 0 R
/Info 183 0 R
-/ID [<983044C3BDAC1E7E19B21547BBFEED69> <983044C3BDAC1E7E19B21547BBFEED69>]
-/Length 475
+/ID [<A2BF1C88074426FE39C96F841408ABB4> <A2BF1C88074426FE39C96F841408ABB4>]
+/Length 477
/Filter /FlateDecode
>>
stream
-xÚ%Ó»SQÆá}¿
@.jJ¼£T¼" "oÌØÙXX;ccAå
-38Ô´üö¶6Öj~KóÌ{6'gÏ÷ecfö/1KLöù«N6ð3$A§¨õR¶xÔ{à,µ>Ò^hËÔNZ Uj½¤VhkÔzHYÈÁ5'y(À<5.ìý°@íé á vèNèÃpB7 GfùxÇà8'ó5ç ç<èæôpº9=<NÇï5ÕâÜiä4òè; eYæoléµoD:²Âh,ÏÁ(É¿¢6Ãp*p.ÉÊßcË\Uæby&ẬºµqîRMtÄòÜí^c
-nÂ-¸
-wà®lª¯1*K?bß}Õ6c9O`V¶XÚ<ðCM¶Ò[`Qöv·ùSÙûl¤×ðLöîC,_Á2Ôá9¼²OE¶xÃ
-9pSz²0ÊÎ(;ì°3¶ÎØ:ÃêͲµ\lníüê"µJ[#µ)©¬GÊ*Y7î9%¿ßDÊ+UïTPjûK$æÔ&i? #àÀìüð>ÃJï4.>ûÍþT
+xÚ%Ó»SQÆá}¿
@HÐ(¨H@åP¹{Á¢A4*PYÐPX[1TnãX8ÎØX[Øú8cigecoçüæ÷lNÎ/ßÆÌì_bìÕ[#¯á$A'¨õR¶xT{à$µ>Ò^¨ÔzI
+Qj=¤FhKÔºIYhij4Or{Ô¸dÒûà>µc¤ýPpZ¡
+Áa8íp: Ý2ËÅÑ ]Ì×ó< ÓÃéæôð8%¿GVWSxr§ÓÈ£ï)(É2cK¿¬õC¤30(ËÅò4Á¬ð#jçaF gá¬ô%¶LÀEYy)ã0²Ñ¨Mq¢lº-×aV6±{yËp®Â5Ù|_mTV¿Å¾[pCVùËð dËŨ-ÁmX;p*²Ø²
+˲ÍÝæ+²çÙHëðP¶õ"kðªðÀSÙË[<aĸ)=30ÊÎ(;ì°3¶ÎØ:Ãêõ²7-±¹Aöû{¤Tý©Qú´©IIù]¤¬¯ü|)§Tµ=R^©Ï¯#1§Î4yLSüI^²óâ}úS»øÂ{û¡¥T·
endstream
endobj
startxref
-282272
+282275
%%EOF
More information about the Uwgarp-commits
mailing list